Histórico da Página
...
Para que as telas HTML possam ser customizadas, e necessário alterar o Metadata e Dados que são enviados para elas. Para isto, é necessário conhecer a estrutura destas informações, desta forma, assim sendo possível pegar o que se deseja e fazer as alterações necessária. Por exemplo, para desabilitar um campo de um formulário, e necessário encontrar o agrupador de campos, navegar nele até encontrar o campo desejado e depois, incluir a propriedade responsável por debilitadebilitá-lo.
O objeto deste utilitário é, facilitar a manipulação destas informações, disponibilizando métodos que realizam as ações desejadas, sem a necessidade do profundo conhecimento da estrutura. Além disto, há uma considerável redução nas linhas de código necessárias para executar a mesma ação. Por exemplo, para desabilitar um campo (cenário apresentado anteriormente), é necessário apenas uma linha de código.
Nota | ||
---|---|---|
| ||
Funcionalidade disponível a partir da release 12.1.2411 ou patches: 12.1.2407.5, 12.1.2403.11, 12.1.2311.16. |
02.UTILIZAÇÃO DO UTILITÁRIO Âncorautilizacao utilizacao
utilizacao | |
utilizacao |
...
- Definir uma variável do tipo da classe, que irá representá-la;
- Instanciar a classe, passando os seguintes parâmetros:
- pOrigin: Corresponde ao Endpoint/Evento que será tratado dentro da UPC. Ver detalhes a seguir no descritivo da classe: CustomOrig;
- jsonIO (JsonObject): Informações da /dados recebidas pela UPC (corresponde ao quarto parâmetro recebido pela UPC).
- Utilizar as funções desejadas;
- E por final, retirar a classe da memória.
...
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
// Indica a UPC onde estão as Classes
USING PROGRESS.json.ObjectModel.*. // Classes da Progress
USING com.totvs.framework.po.*. // Classes do Utilitário
// Parâmetros recebidos pela UPC
DEF INPUT PARAM pEndPoint AS CHAR NO-UNDO.
DEF INPUT PARAM pEvent AS CHAR NO-UNDO.
DEF INPUT PARAM pAPI AS CHAR NO-UNDO.
DEF INPUT-OUTPUT PARAM jsonIO AS JsonObject NO-UNDO.
// Define a variável que irá representar a Classe
DEF VAR oCustFields AS CustomFields NO-UNDO.
// Evento de Busca do Metadata da Tela de Novo/Editar
IF pEndPoint = "getMetaData" AND (pEvent = "new" OR pEvent = "edit") THEN DO:
// Realiza a instância da Classe
oCustFields = NEW CustomFields(CustomOrig:ORIG_METADATA, jsonIO).
// Desabilita o campo "Atualizar com erro de duplicata" (nome interno: updatesWithDuplicateError)
oCustFields:setDisableField("updatesWithDuplicateError").
// Retira a Classe da memória
DELETE OBJECT oCustFields NO-ERROR.
END. |
...
Método | Descrição | Exemplo |
---|---|---|
setFieldLabel ( pCodField , pCodLabel [ , pGroupId ] ) Parâmetros:
Retorno (LOGICAL): Indicativo se foi possível alterar o Label. | Altera o Label de um campo. | Exemplo1: |
setDisableField ( pCodField [ , pGroupId ] ) Parâmetros:
Retorno (LOGICAL): Indicativo se foi possível desabilitar o campo. | Desabilita um campo. | Exemplo1: |
setEnableField ( pCodField [ , pGroupId ] ) Parâmetros:
Retorno (LOGICAL): Indicativo se foi possível habilitar o campo. | Habilita um campo. | Exemplo1: |
setHideField ( pCodField [ , pGroupId ] ) Parâmetros:
Retorno (LOGICAL): Indicativo se foi possível esconder o campo. | Esconde um campo. | Exemplo1: |
setShowField ( pCodField [ , pGroupId ] ) Parâmetros:
Retorno (LOGICAL): Indicativo se foi possível apresentar o campo. | Mostra um campo. | Exemplo1: |
setFieldProperty ( pCodField , pCodProperty , pCodValue [ , pGroupId ] ) Parâmetros:
Retorno (LOGICAL): Indicativo se foi possível alterar a propriedade. | Altera uma propriedade de um campo. | Exemplo1: |
getFieldPropertyCharacter ( pCodField , pCodProperty [ , pGroupId ] ) getFieldPropertyInteger ( pCodField , pCodProperty [ , pGroupId ] ) getFieldPropertyDecimal ( pCodField , pCodProperty [ , pGroupId ] ) getFieldPropertyLogical ( pCodField , pCodProperty [ , pGroupId ] ) Parâmetros:
Retorno (CHARACTER,INTEGER,DECIMAL,LOGICAL): Valor da Propriedade. | Retorna o valor de uma propriedade de um campo. | Exemplo1: |
getFields ( [ pGroupId ] ) Parâmetros:
Retorno (JsonArray): Lista de campos. | Retorna um JsonArray que representa a lista de campos. | Exemplo1: |
getField ( pCodField [ , pGroupId ] ) Parâmetros:
Retorno (JsonObject): Um campo. | Retorna um JsonObject que representa um campo. | Exemplo1: |
addField ( pCodField , pCodLabel , pCodType [ , pPosition ] [ , pGroupId ] ) Parâmetros:
Retorno (JsonObject): campo Incluído. | Incluir um novo campo. | Exemplo1: |
changeFieldOrder ( pCodField [ , pPosition ] [ , pGroupId ] ) Parâmetros:
Retorno (LOGICAL): Indicativo se foi possível alterar a ordem. | Altera a Ordem de um campo. | Exemplo1: |
setFieldValidate ( pCodField , pCodProg [ , pGroupId ] ) setFieldValidateCustom ( pCodField , pEndpoint [ , pGroupId ] ) Parâmetros:
Retorno (LOGICAL): Indicativo se foi possível incluir a propriedade no campo. | Incluir a propriedade 'validate' no campo (monitora a alterado do campo - evento validateField). | Exemplo1: |
addValidateFields ( pCodField ) Parâmetros:
Retorno (LOGICAL): Lógico indicativo se foi possível incluir o campo. | Inclui um campo no ValidateFields do Formulário (evento validateForm). Observação: Utilizar este método para telas HTML que implementam o componente DynamicForm. | oCustFields:addValidateFields("enableICMSTaxationCode"). |
isChangedField ( pCodField ) Parâmetros:
Retorno (LOGICAL): Lógico indicativo se o campo teve seu valor alterado. | Verifica se um campo foi alterado (eventos ValidateForm e ValidateField). | IF oCustFields:isChangedField("enableICMSTaxationCode") |
getReturnRoot ( ) Retorno (JsonObject): Root de retorno. | Retorna um JsonOject que representa o Root de retorno (eventos ValidateForm e ValidateField). | DEFINE VARIABLE oRoot AS JsonObject NO-UNDO. |
getFieldValueCharacter ( pCodField ) getFieldValueInteger ( pCodField ) getFieldValueDecimal ( pCodField ) getFieldValueLogical ( pCodField ) getFieldValueDate ( pCodField ) getFieldValueJsonObject ( pCodField ) getFieldValueJsonArray ( pCodField ) Parâmetros:
Retorno (CHARACTER,INTEGER,DECIMAL,LOGICAL,DATE,JsonObject,JsonArray): Valor do campo. | Retorna o valor de um campo. | Exemplo1: |
setFieldValue ( pCodField , pCodValue ) Parâmetros:
Retorno (LOGICAL): Indicativo se foi possível alterar o campo. | Altera o valor de um campo. | Exemplo1: |
getFieldValues ( ) Retorno (JsonObject): Valores do registro. | Retorna um JsonOject que representa os Valores do registro. |
...
DEFINE VARIABLE oValues AS JsonObject NO-UNDO. |
d.CustomActions Âncora CustomActions CustomActions
CustomActions | |
CustomActions |
...
Classe utilizada para realizar customizações relacionadas as Ações da tela HTML. Estas ações podem ser de 2 tipos:
...
Método | Descrição | Exemplo | ||||||
---|---|---|---|---|---|---|---|---|
setAction ( pCodAction , pCodValue ) Parâmetros:
Retorno (LOGICAL): Indicativo se foi possível incluir/alterar a Ação. | Inclui ou Altera uma Ação Padrão. | Exemplo1: | ||||||
getActionCharacter ( pCodAction ) getActionLogical ( pCodAction ) Parâmetros:
Retorno (CHARACTER,LOGICAL): Valor da Ação. | Retorna o valor de uma Ação Padrão. | Exemplo1: | ||||||
removeAction ( pCodAction ) Parâmetros:
Retorno (LOGICAL): Indicativo se foi possível remover a Ação. | Remove uma Ação Padrão.// Retira a Ação Padrão de "Cópia" da Tabela | oCustActions:removeAction("duplicate"). | ||||||
getActions ( ) Retorno (JsonObject): Ações padrões. | retorna um JsonObject que representa as Ação Padrão. | DEFINE VARIABLE oActions AS JsonObject NO-UNDO. | ||||||
setPageCustomActionProperty ( pIdAction , pCodProperty , pCodValue ) Parâmetros:
Retorno (LOGICAL): Indicativo se foi possível alterar a propriedade. | Altera uma propriedade de uma Ação Customizada de Página. | // Inclui o icone de Refresh na Ação Customizada "Atz Dados" da Pagina oCustActions:setPageCustomActionProperty("Atz Dados", | ||||||
getPageCustomActionPropertyCharacter ( pIdAction , pCodProperty ) getPageCustomActionPropertyInteger ( pIdAction , pCodProperty ) getPageCustomActionPropertyDecimal ( pIdAction , pCodProperty ) getPageCustomActionPropertyLogical ( pIdAction , pCodProperty ) Parâmetros:
Retorno (CHARACTER,INTEGER,DECIMAL,LOGICAL): Valor da Propriedade. | Retorna o valor de uma propriedade de uma Ação Customizada de Página. | getPageCustomAction ( pIdAction ) Parâmetros:
Retorno (JsonObject): Uma Ação Customizada de Página. | Retorna um JsonObject que representa uma Ação Customizada de Página. | // Altera o Endereço da primeira Ação Customizada da Pagina oAction = oCustActions:getPageCustomAction(1). IF oAction <> ? THEN oAction:set("action", | addPageCustomAction ( pNumType , pCodLabel , pCodAddress [ , pCodIcon ] ) Parâmetros:
Retorno (JsonObject): Ação Customizada de Página Incluída. | Incluir uma nova Ação Customizada na Página. | // Inclui uma nova Ação Customizada no Pagina chamada "Atz Dados" que chama | |
getPageCustomAction ( pIdAction ) Parâmetros:
Retorno (JsonObject): Uma Ação Customizada de Página. | Retorna um JsonObject que representa uma Ação Customizada de Página. | Exemplo1: | ||||||
addPageCustomAction ( pNumType , pCodLabel , pCodAddress [ , pCodIcon ] removePageCustomAction ( pIdAction ) Parâmetros:
Retorno (LOGICALJsonObject): Indicativo se foi possível remover a AçãoAção Customizada de Página Incluída. | Remove Incluir uma nova Ação Customizada de na Página. | // Elimina a Ação Customizada chamada "Doctos" da Pagina oCustActions:removePageCustomAction("Doctos"). | getPageCustomActions ( ) Retorno (JsonArray): Ações Customizadas de Página. | Retorna a lista de Ações Customizadas de Página. | setTableCustomActionProperty ( pIdAction , pCodProperty , pCodValue ) Parâmetros:
Retorno (LOGICAL): Indicativo se foi possível alterar a propriedade. | Altera uma propriedade de uma Ação Customizada de Tabela. | Exemplo1: | |
removePageCustomAction ( pIdAction ) Parâmetros:
Retorno (LOGICAL): Indicativo se foi possível remover a Ação. | Remove uma Ação Customizada de Página. | Exemplo1: | ||||||
getPageCustomActions ( ) Retorno (JsonArray): Ações Customizadas de Página. | Retorna a lista de Ações Customizadas de Página. | DEFINE VARIABLE oPageCustomActions AS JsonArray NO-UNDO. | ||||||
setTableCustomActionProperty ( pIdAction , pCodProperty , pCodValue ) Parâmetros:
Retorno (LOGICAL): Indicativo se foi possível alterar a propriedade. | Altera uma propriedade de uma Ação Customizada de Tabela. | Exemplo1: | ||||||
getTableCustomActionPropertyCharacter ( pIdAction , pCodProperty ) getTableCustomActionPropertyInteger ( pIdAction , pCodProperty ) getTableCustomActionPropertyDecimal ( pIdAction , pCodProperty ) getTableCustomActionPropertyLogical ( pIdAction , pCodProperty ) Parâmetros:
Retorno (CHARACTER,INTEGER,DECIMAL,LOGICAL): Valor da Propriedade. | Retorna o valor de uma propriedade de uma Ação Customizada de Tabela. | Exemplo1: | ||||||
getTableCustomAction ( pIdAction ) Parâmetros:
Retorno (JsonObject): Uma Ação Customizada de Tabela. | Retorna um JsonObject que representa uma Ação Customizada de Tabela. | Exemplo1: | ||||||
addTableCustomAction ( pNumType , pCodLabel , pCodAddress [ , pCodIcon ] [ , pConcatKeys ] ) Parâmetros:
getTableCustomActionPropertyCharacter ( pIdAction , pCodProperty ) getTableCustomActionPropertyInteger ( pIdAction , pCodProperty ) getTableCustomActionPropertyDecimal ( pIdAction , pCodProperty ) getTableCustomActionPropertyLogical ( pIdAction , pCodProperty ) Parâmetros:
Retorno (CHARACTER,INTEGER,DECIMAL,LOGICAL): Valor da Propriedade. | Retorna o valor de uma propriedade de uma Ação Customizada de Tabela. |
getTableCustomAction ( pIdAction ) Parâmetros:
Retorno (JsonObject): Uma Ação Customizada de Tabela Incluída. | Retorna um JsonObject que representa Incluir uma nova Ação Customizada de na Tabela. | Exemplo1:pNumType , pCodLabel , pCodAddress [ , pCodIcon ] [ , pConcatKeys ] ) Parâmetros:
Retorno (JsonObject): Ação Customizada de Tabela Incluída. | Incluir uma nova Ação Customizada na Tabela. | CustomActions:TYPE_ENDPOINT, | ||
removeTableCustomAction ( pIdAction ) Parâmetros:
Retorno (LOGICAL): Indicativo se foi possível remover a Ação. | Remove uma Ação Customizada de Tabela. | Exemplo1: | ||||||
getTableCustomActions ( ) Retorno (JsonArray): Ações Customizadas de Tabela. Retorna a lista de Ações Customizadas de Tabela. | Retorna a lista de Ações Customizadas de Tabela. | DEFINE VARIABLE oTableCustomActions AS JsonArray NO-UNDO. | ||||||
getServerAddress ( pIsExt ) Parâmetros:
Retorno (CHARACTER): Endereço no formato: http://HOST:PORT. Retorna o Endereço onde o Datasul está hospedado.
Retorno (CHARACTER): Endereço no formato: http://HOST:PORT. | Retorna o Endereço onde o Datasul está hospedado. | Exemplo1: |
e.CustomRecords ÂncoraCustomRecords CustomRecords
CustomRecords | |
CustomRecords |
...
Método | Descrição | Exemplo |
---|---|---|
getEntityKeyCharacter ( ) getEntityKeyInteger ( ) Retorno (CHARACTER,INTEGER): Chave do registro. | Retorna a chave do Registro na manipulação do Metadata (Alteração, Detalhe).do Registro na manipulação do Metadata (Alteração, Detalhe). | Exemplo1: |
updateRecords ( pProg , pPiName ) Parâmetros:
Retorno (LOGICAL): Indicativo se é possível alterar o registro. | Navega nos registros e executa uma PI interna da UPC para customização dos dados. // Indica que dever ser executada a PI "pi_altera_registros" para// realizar a alteração nos registros | oCustRecords:updateRecords(THIS-PROCEDURE, "pi_altera_registros"). |
f.CustomMessages ÂncoraCustomMessages CustomMessages
CustomMessages | |
CustomMessages |
Classe utilizada para criação de mensagens que de erro que serão enviadas para a tela HTML.
Método | Descrição | Exemplo |
---|---|---|
createMessageError ( pMsgNumber , pMsgDescription , pMsgHelp ) Parâmetros:
Retorno (JsonObject): Mensagem no padrão TOTVS de Mensagem. |
// informado, se não foi, retorna uma mensagem de Erro
ASSIGN vValorAtual
Cria uma mensagem do tipo ERROR para enviar ao FrontEnd. | DEF VAR vName AS CHARACTER NO-UNDO. |
customerName"). |
|
vName = "" OR |
vName = ? THEN DO: |
|
"O campo 'Caminho completo do executável GZIP' deve
|
|
|
|
|
|
"Nome |
OBRIGATÓRIO" |
, |
|
|
|
|
|
|
"O |
nome |
do |
IF
cliente |
é |
obrigatório !" |
). |
|
|
RETURN "NOK". |
04.EXEMPLOS DA UTILIZAÇÃO DAS CLASSES Âncoraexemplos exemplos
exemplos | |
exemplos |
...
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
// Indica ao programa onde estão as Classes USING PROGRESS.json.ObjectModel.*. // Classes da Progress USING com.totvs.framework.po.*. // Classes do Utilitário // Parâmetros recebidos pela UPC DEF INPUT PARAM pEndPoint AS CHAR NO-UNDO. DEF INPUT PARAM pEvent AS CHAR NO-UNDO. DEF INPUT PARAM pAPI AS CHAR NO-UNDO. DEF INPUT-OUTPUT PARAM jsonIO AS JsonObject NO-UNDO. // Define as variáveis que irão representar as Classes DEF VAR oCustPages AS CustomPages NO-UNDO. DEF VAR oCustFields AS CustomFields NO-UNDO. DEF VAR oCustActions AS CustomActions NO-UNDO. DEF VAR oCustRecords AS CustomRecords NO-UNDO. DEF VAR oCustMsgs AS CustomMessages NO-UNDO. // Variáveis axuliáresauxiliares DEF VAR oFields AS JsonArray NO-UNDO. DEF VAR oField AS JsonObject NO-UNDO. DEF VAR oAction AS JsonObject NO-UNDO. DEF VAR vValorAtual AS CHARACTER NO-UNDO. DEF VAR vValorAjust AS CHARACTER NO-UNDO. DEF VAR vValorMark AS LOGICAL NO-UNDO. // Evento de Busca do Metadata da Tela de Lista IF pEndPoint = "getMetaData" AND pEvent = "list" THEN DO: // Instância as Classes necessárias oCustPages = NEW CustomPages(CustomOrig:ORIG_METADATA, jsonIO). oCustFields = NEW CustomFields(CustomOrig:ORIG_METADATA, jsonIO). oCustActions = NEW CustomActions(CustomOrig:ORIG_METADATA, jsonIO). // Altera o Título da Página oCustPages:setPageTitle(oCustPages:getPageTitle() + " - ALTERADO"). // Altera a propriedade para salvar o Filtro da busca Avançada oCustPages:setPageProperty("keepfilters", TRUE). // Altera o label da coluna "FIFO" para "FIFO-ALT" oCustFields:setFieldLabel("enableFIFOInPurchaseReq", "FIFO-ALT"). // Inclui uma coluna chamada: "Cópia Usuário" ASSIGN oField = oCustFields:addField("userCopy", "Cópia Usuário", FieldType:STRING). // Inclui a nova coluna no Gerenciador de Colunas IF oField <> ? THEN oField:ADD("allowColumnsManager", TRUE). // Retira a Ação Padrão de "Excluir" da Tabela oCustActions:setAction("remove", FALSE). // Retira a Ação Padrão de "Cópia" da Tabela oCustActions:removeAction("duplicate"). // Faz a Ação Padrão de Visualizar abrir a tela de Edição oCustActions:setAction("detail", oCustActions:getActionCharacter("edit")). // Inclui uma nova Ação Customizada no Pagina chamada "Atz Dados" que chama uma EndPoint oCustActions:addPageCustomAction(CustomActions:TYPE_ENDPOINT, "Atz Dados", "http://server01:3000/atzDados"). // Inclui uma nova Ação Customizada no Pagina chamada "Google" que chama uma Rota oCustActions:addPageCustomAction(CustomActions:TYPE_ROUTE, "Google", "http://www.google.com", oCustActions:addPageCustomAction(CustomActions:TYPE_ROUTE, "Google", "http://www.google.com", "po-icon po-icon-device-desktop"). // Inclui o icone de Refresh na Ação Customizada "Atz Dados" da Pagina oCustActions:setPageCustomActionProperty("Atz Dados", "icon", "po-icon po-icon po-icon-refresh"). // Altera o Endereço da primeira Ação Customizada da Pagina oAction = oCustActions:getPageCustomAction(1). IF oAction <> ? THEN oAction:set("action", "http://newserver:8080/customer"). // Elimina a Ação Customizada chamada "Doctos" da Pagina oCustActions:removePageCustomAction("Doctos"). // Inclui uma nova Ação Customizada no Tabela chamada "Bloqueia" que chama uma EndPoint oCustActions:addTableCustomAction(CustomActions:TYPE_ENDPOINT, "Bloqueia", "http://server01:3000/block", "po-icon po-icon po-icon-refresh"). // Inclui uma nova Ação Customizada no Tabela chamada "Det Adicional" que chama uma Rota oCustActions:addTableCustomAction(CustomActions:TYPE_ROUTE, "Det Adicional", "http://newserver:8080/dts/customer/detail"). // Elimina a Ação Customizada chamada "Relacto" da Pagina oCustActions:removeTableCustomAction("Relacto"). // Retira as Classes da memória DELETE OBJECT oCustPages NO-ERROR. DELETE OBJECT oCustFields NO-ERROR. DELETE OBJECT oCustActions NO-ERROR. END. // Evento de Busca do Metadados da Tela de Novo/Editar IF pEndPoint = "getMetaData" AND (pEvent = "new" OR pEvent = "edit") THEN DO: // Instância as Classes necessárias oCustFields = NEW CustomFields(CustomOrig:ORIG_METADATA, jsonIO). // Desabilita o campo "Atualizar com erro de duplicata" (Aba: Atualização recebimento fiscal) oCustFields:setDisableField("updatesWithDuplicateError", "fieldsUpdateFiscalConfigurations"). // Habilita o campo "Unidade negócio" (Aba: Digitação/Geração) oCustFields:setEnableField("enableBusinessUnit", "fieldsTypingEnableDisable"). // Esconde o campo "Desconto item" oCustFields:setHideField("itemDiscount"). // Mostra o campo "Geração nota crédito a pagar" oCustFields:setShowField("creditNoteGeneration"). // Para o campo "Sequência dos itens" mostrar "Ligado/Desligado" ao invés de "Ativado/Desativado" IF oCustFields:getFieldPropertyCharacter("enableSequence", "type", "fieldsTypingEnableDisable") = "boolean" THEN DO: oCustFields:setFieldProperty("enableSequence", "booleanTrue", "Ligado", "fieldsTypingEnableDisable"). oCustFields:setFieldProperty("enableSequence", "booleanFalse", "Desligado", "fieldsTypingEnableDisable"). END. // Pegua a quantidades de campos do agrupador "Impostos" e joga no label do campo "Total" ASSIGN oFields = oCustFields:getFields("fieldsTax") oField = oCustFields:getField("totalTax", "fieldsTax"). IF oFields <> ? AND oField <> ? THEN oField:SET("label", "Total (" + string(oFields:LENGTH) + ")"). // Colocar o Campo "Estado (UF)" depois do campo "Baixa estoque" oCustFields:changeFieldOrder("enableState", "enableStockMovement"). // Coloca o campo "CPF" como sendo o primeiro campo do Formulário oCustFields:changeFieldOrder("cpf", YES). // Indica que, ao alterar o campo "Caminho completo do executável GZIP", // deverá chamar o validateField da API-REST do Produto (Aba: Configurações) oCustFields:setFieldValidate("execGZIPProgram", pAPI, "fieldsTypingConfigurations"). // Indica que, ao alterar o campo "Código tributação ICMS", // deverá chamar o validateForm da API-REST do Produto (Aba: Digitação/Geração) oCustFields:addValidateFields("enableICMSTaxationCode"). // Retira as Classes da memória DELETE OBJECT oCustFields NO-ERROR. END. // Evento de Busca dos Registros da Tela de Lista IF pEndPoint = "findAll" AND pEvent = "findAll" THEN DO: // Instância as Classes necessárias oCustRecords = NEW CustomRecords(CustomOrig:ORIG_GET_ALL, jsonIO). // Indica que dever ser executada a PI "pi_altera_registros" para realizar a alteração nos registros oCustRecords:updateRecords(THIS-PROCEDURE, "pi_altera_registros"). // Retira as Classes da memória DELETE OBJECT oCustRecords NO-ERROR. END. // PI que será executada para cada registro da Tabela PROCEDURE pi_altera_registros: DEF INPUT PARAM oItem AS JsonObject NO-UNDO. // Atualiza a coluna "Cópia Usuário" com o valor da coluna "Usuário" oItem:ADD("userCopy", oItem:getCharacter("userCode")). // Altera o conteúdo da coluna "Nome", concatenado: "- Alterado" oItem:SET("userName", oItem:getCharacter("userName") + " - Alterado"). END PROCEDURE. // Evento de Busca de um Registro da tela de Edição IF pEndPoint = "findById" AND pEvent = "findById" THEN DO: // Instância as Classes necessárias oCustFields = NEW CustomFields(CustomOrig:ORIG_GET_RECORD, jsonIO). // Altera o valor da coluna "Variação máxima data emissão" para "888" (Aba: Digitação/Geração) oCustFields:setFieldValue("variationIssuing", 888). // Retira as Classes da memória DELETE OBJECT oCustFields NO-ERROR. END. // Evento de Alteração de Campo IF pEndPoint = "validateField" AND pEvent = "validateField" THEN DO: // Instância as Classes necessárias oCustFields = NEW CustomFields(CustomOrig:ORIG_VLD_FIELD, jsonIO). // Se alterar o campo "Caminho completo do executável GZIP" (Aba: Digitação/Geração): // - Muda o conteúdo para minísculo // - Retira os acentos // - Se retirar os acentos, muda o label para "Caminho completo do executável GZIP (AJUST)" IF oCustFields:isChangedField("execGZIPProgram") THEN DO: ASSIGN vValorAtual = oCustFields:getFieldValueCharacter("execGZIPProgram"). IF vValorAtual <> ? THEN DO: ASSIGN vValorAjust = LC(vValorAtual) vValorAjust = REPLACE(vValorAjust, "á", "a") vValorAjust = REPLACE(vValorAjust, "é", "e") vValorAjust = REPLACE(vValorAjust, "í", "i") vValorAjust = REPLACE(vValorAjust, "ó", "o") vValorAjust = REPLACE(vValorAjust, "ú", "u") vValorAjust = REPLACE(vValorAjust, "ã", "a") vValorAjust = REPLACE(vValorAjust, "õ", "o") vValorAjust = REPLACE(vValorAjust, "ç", "c"). oCustFields:setFieldValue("execGZIPProgram", vValorAjust). IF NOT vValorAjust MATCHES(vValorAtual) THEN oCustFields:setFieldLabel("execGZIPProgram", "Caminho completo do executável GZIP (AJUST)"). ELSE oCustFields:setFieldLabel("execGZIPProgram", "Caminho completo do executável GZIP"). END. END. // Retira as Classes da memória DELETE OBJECT oCustFields NO-ERROR. END. // Evento de Alteração de Formulário IF pEndPoint = "validateForm" AND pEvent = "validateForm" THEN DO: // Instância as Classes necessárias oCustFields = NEW CustomFields(CustomOrig:ORIG_VLD_FORM, jsonIO). // Se alterar o campo “Código tributação ICMS” (Aba: Digitação/Geração): // - Se "sim": desabilita o campo “Percentual redução ICMS” e muda o campo "Alíquota ICMS" para "sim", // - Se "não": faz ao contrário IF oCustFields:isChangedField("enableICMSTaxationCode") THEN DO: ASSIGN vValorMark = oCustFields:getFieldValueLogical("enableICMSTaxationCode"). IF vValorMark <> ? THEN DO: oCustFields:setFieldProperty("enableICMSReductionPercentage", "disabled", vValorMark). oCustFields:setFieldValue("enableICMSRate", vValorMark). END. END. // Retira as Classes da memória DELETE OBJECT oCustFields NO-ERROR. END. // Evento de Alteração de Registro IF pEndPoint = "update" AND pEvent = "beforeUpdate" THEN DO: // Instância as Classes necessárias oCustFields = NEW CustomFields(CustomOrig:ORIG_UPDATE_RECORD, jsonIO). oCustMsgs = NEW CustomMessages(CustomOrig:ORIG_UPDATE_RECORD, jsonIO). // Valida se o campo "Caminho completo do executável GZIP" foi informado, se não foi, retorna uma mensagem de Erro ASSIGN vValorAtual = oCustFields:getFieldValueCharacter("execGZIPProgram"). IF vValorAtual = "" OR vValorAtual = ? THEN jsonIO = oCustMsgs:createMessageError(1, "Caminho completo do executável GZIP OBRIGATÓRIO", "O campo 'Caminho completo do executável GZIP' deve ser informado, não pode ser branco !"). // Retira as Classes da memória DELETE OBJECT oCustFields NO-ERROR. DELETE OBJECT oCustMsgs NO-ERROR. // Indica que não deve ser Salvo a Alteração do Registro IF vValorAtual = "" OR vValorAtual = ? THEN RETURN "NOK". END. RETURN "OK". |
...