Histórico da Página
CONTEÚDO
- INTRDUÇÃO / OBJETIVO
- XXXXX
- Xxxxxx
- Xxxxxx
- XXXX
- Xxxxx
- Xxxxxx
- XXXXXXX
01. INTRODUÇÃO / OBJETIVO
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, sendo possível pegar o que deseja e fazer as alterações necessária. Por exemplo, para desabilitar o 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 debilita-lo.
O objeto deste utilitário e facilitar a manipulação destas informações que são recebidas pela EPC.
02.XXXXXXXXXXXXXXXXX
Xxxxxxxx
03.XXXXXXXXXXXXXXX
Xxxxxxxx
04.XXXXXXXXXXXXXXXXXXXX
Xxxxxxxx
---------------------
Construção das Classe
---------------------
CONSTRUCTOR CustomXXXX ( pOrigin, pObjParam ) - Purpose: Construtor da Classe
Parameters:
- pOrigin: Local/Origem onde está sendo utilizado a Classe (usar a classe CustomOrig, ex: CustomOrig:ORIG_METADATA).
- pObjParam (JsonObject): JsonObeject de Parâmetros recebido pela UPC
Retorno (CustomXXX): Instancia da Classe
------------------
CLASSE: CustomOrig - Purpose: Informar o Local/Origem onde está sendo utilizado a Classe
------------------
- CustomOrig:ORIG_METADATA - Método de manipulação do Metadata
- CustomOrig:ORIG_VLD_FORM - Método de manipulação do validateForm
- CustomOrig:ORIG_VLD_FIELD - Método de manipulação do validateField
- CustomOrig:ORIG_GET_RECORD - Método de manipulação na busca de um registro
- CustomOrig:ORIG_GET_ALL - Método de manipulação na busca de vários registros
- CustomOrig:ORIG_CREATE_RECORD - Método de criação de um registro
- CustomOrig:ORIG_UPDATE_RECORD - Método de alteração de um registro
- CustomOrig:ORIG_DELETE_RECORD - Método de eliminação de um registro
------------------
CLASSE: CustomPage - Purpose: Customizações da Página
------------------
Método | Descrição | Exemplo |
---|---|---|
setPageTitle ( pCodTitle ) Parameters: - pCodTitle (CHARACTER): Novo Titulo da Page Retorno (LOGICAL): Indicativo se foi possível alterar o Título | - Purpose: Altera o Titulo da Page | |
getPageTitle ( ) Retorno (CHARACTER): Título da Página | - Purpose: Retorna o Titulo da Page | |
setPageProperty ( pCodProperty , pCodValue ) Parameters: - pCodProperty (CHARACTER): Propriedade que deve ser alterada - pCodValue (CHARACTER,INTEGER,DECIMAL,LOGICAL): Novo valor Retorno (LOGICAL): Indicativo se foi possível alterar a Propriedade | - Purpose: Altera uma propriedade da Tela | |
getPagePropertyCharacter ( pCodProperty ) getPagePropertyInteger ( pCodProperty ) getPagePropertyDecimal ( pCodProperty ) getPagePropertyLogical ( pCodProperty ) Parameters: - pCodProperty (CHARACTER): Propriedade Retorno (CHARACTER,INTEGER,DECIMAL,LOGICAL): Valor da Propriedade | - Purpose: Retorna o valor de uma propriedade da Tela |
--------------------
CLASSE: CustomFields - Purpose: Customizações de Campos
--------------------
Método | Descrição | Exemplo |
---|---|---|
setFieldLabel ( pCodField , pCodLabel [ , pGroupId] ) Parameters: - pCodField (CHARACTER): Código do atributo - pCodLabel (CHARACTER): Novo label do atributo - pGroupId (CHARACTER): Agrupador onde o atributo está contido Retorno (LOGICAL): Indicativo se foi possível alterar o Label | - Purpose: Altera o Label de um Atributo | |
setDisableField ( pCodField [ , pGroupId] ) Parameters: - pCodField (CHARACTER): Código do atributo - pGroupId (CHARACTER): Agrupador onde o atributo está contido Retorno (LOGICAL): Indicativo se foi possível desabilitar o atributo | - Purpose: Desabilita um Atributo | |
setEnableField ( pCodField [ , pGroupId] ) Parameters: - pCodField (CHARACTER): Código do atributo - pGroupId (CHARACTER): Agrupador onde o atributo está contido Retorno (LOGICAL): Indicativo se foi possível habilitar o atributo | - Purpose: Habilita um Atributo | |
setHideField ( pCodField [ , pGroupId] ) Parameters: - pCodField (CHARACTER): Código do atributo - pGroupId (CHARACTER): Agrupador onde o atributo está contido Retorno (LOGICAL): Indicativo se foi possível esconder o atributo | - Purpose: Esconde um Atributo | |
setShowField ( pCodField [ , pGroupId] ) Parameters: - pCodField (CHARACTER): Código do atributo - pGroupId (CHARACTER): Agrupador onde o atributo está contido Retorno (LOGICAL): Indicativo se foi possível apresentar o atributo | - Purpose: Mostra um Atributo | |
setFieldProperty ( pCodField , pCodProperty , pCodValue [ , pGroupId] ) Parameters: - pCodField (CHARACTER): Código do atributo - pCodProperty (CHARACTER): Propriedade que deve ser alterada - pCodValue (CHARACTER,INTEGER,DECIMAL,LOGICAL): Novo valor - pGroupId (CHARACTER): Agrupador onde o atributo está contido Retorno (LOGICAL): Indicativo se foi possível alterar a propriedade | - Purpose: Altera uma propriedade de um Atributo | |
getFieldPropertyCharacter ( pCodField , pCodProperty [ , pGroupId] ) getFieldPropertyInteger ( pCodField , pCodProperty [ , pGroupId] ) getFieldPropertyDecimal ( pCodField , pCodProperty [ , pGroupId] ) getFieldPropertyLogical ( pCodField , pCodProperty [ , pGroupId] ) Parameters: - pCodField (CHARACTER): Código do atributo - pCodProperty (CHARACTER): Propriedade - pGroupId (CHARACTER): Agrupador onde o atributo está contido Retorno (CHARACTER,INTEGER,DECIMAL,LOGICAL): Valor da Propriedade | - Purpose: Retorna o valor de uma propriedade de um Atributo | |
getFields ( [pGroupId] ) Parameters: - pGroupId (CHARACTER): Agrupador onde o atributo está contido Retorno (JsonArray): Lista de Atributos | - Purpose: Retorna um JsonArray que representa a lista de Atributos | |
getField ( pCodField [ , pGroupId] ) Parameters: - pCodField (CHARACTER): Código do atributo - pGroupId (CHARACTER): Agrupador onde o atributo está contido Retorno (JsonObject): Um atributo | - Purpose: Retorna um JsonObject que representa um Atributo | |
addField ( pCodField , pCodLabel , pCodType [ , pPosition] [ , pGroupId] ) Parameters: - pCodField (CHARACTER): Código do Atributo - pCodLabel (CHARACTER): Label do Atributo - pCodType (CHARACTER): Tipo do Atributo (usar a classe FieldType, ex: FieldType:STRING) - pPosition: Posição onde o campo irá ficar no Formulário, usar uma da opções: - pIsFirst (LOGICAL): O Atributo será o Primeiro do Formulário (valor: YES) ou o Útimo (valor: NO) - pReferenceField (CHARACTER): Código de um Atributo já existente, onde o atributo ficará DEPOIS dele - Se não informado valor, o atributo será o Último do Formulário - pGroupId (CHARACTER): Agrupador onde o atributo está contido Retorno (JsonObject): Atributo Incluído | - Purpose: Incluir um novo Atributo | |
changeFieldOrder ( pCodField [ , pPosition] [ , pGroupId] ) Parameters: - pCodField (CHARACTER): Código do Atributo - pPosition: Posição onde o campo irá ficar no Formulário, usar uma da opções: - pIsFirst (LOGICAL): O Atributo será o Primeiro do Formulário (valor: YES) ou o Útimo (valor: NO) - pReferenceField (CHARACTER): Código de um Atributo já existente, onde o atributo ficará DEPOIS dele - Se não informado valor, o atributo será o Último do Formulário - pGroupId (CHARACTER): Agrupador onde o atributo está contido Retorno (LOGICAL): Indicativo se foi possível alterar a ordem | - Purpose: Altera a Ordem de um Atributo | |
setFieldValidate ( pCodField , pCodProg [ , pGroupId] ) setFieldValidateCustom ( pCodField , pEndpoint [ , pGroupId] ) Parameters: - pCodField (CHARACTER): Código do atributo - pCodProg (CHARACTER): API-REST de Produto (deve ser enviado o terceiro parâmetro recebido pela UPC). Quando o atributo for alterado, será executado o Endpoint 'validateField' da API-REST do Produto - pEndpoint (CHARACTER): Endpoint (método POST) que será executado quando o atributo for alterado. O caminho do Endpoint pode ser relativo (API-REST dentro do datasul) ou completo - pGroupId (CHARACTER): Agrupador onde o atributo está contido Retorno (LOGICAL): Indicativo se foi possível incluir a propriedade no atributo | - Purpose: Incluir a propriedade 'validate' no atributo (monitora a alterado do campo - evento validateField) | |
addValidateFields ( pCodField ) Parameters: - pCodField (CHARACTER): Código do atributo Retorno (LOGICAL): Lógico indicativo se foi possível incluir o atributo Nota: Utilizar este método para tela que implementam o componente DynamicForm | - Purpose: Inclui um atributo no ValidateFields do Formulário (evento validateForm) | |
isChangedField ( pCodField ) Parameters: - pCodField (CHARACTER): Código do atributo Retorno (LOGICAL): Lógico indicativo se o atributo teve seu valor alterado | - Purpose: Verifica se um Atributo foi alterado (eventos ValidateForm e ValidateField) | |
getReturnRoot ( ) Retorno (JsonObject): Root de retorno | - Purpose: Retorno um JsonOject que representa o Root de retorno (eventos ValidateForm e ValidateField) | |
getFieldValueCharacter ( pCodField ) getFieldValueInteger ( pCodField ) getFieldValueDecimal ( pCodField ) getFieldValueLogical ( pCodField ) getFieldValueDate ( pCodField ) getFieldValueJsonObject ( pCodField ) getFieldValueJsonArray ( pCodField ) Parameters: - pCodField (CHARACTER): Código do atributo Retorno (CHARACTER,INTEGER,DECIMAL,LOGICAL,DATE,JsonObject,JsonArray): Valor do atributo | - Purpose: Retorna o valor de um atributo | |
setFieldValue ( pCodField , pCodValue ) | - Purpose: Altera o valor de um Atributo | |
getFieldValues ( ) | - Purpose: Retorno um JsonOject que representa os Valores do registro ou retorno(eventos ValidateForm e ValidateField) |
---------------------
CLASSE: CustomActions - Purpose: Customizações de Ações da Página e da Tabela
---------------------
Método | Descrição | Exemplo |
---|---|---|
setAction ( pCodAction , pCodValue ) Parameters: - pCodAction (CHARACTER): Código da Action - pCodValue: Valor da Action, usar uma das opções: - pCodURL (CHARACTER): Valor da URL a ser executada pela Action - pCodValue (LOGICAL): Valor da Action Retorno (LOGICAL): Indicativo se foi possível incluir/alterar a Action | - Purpose: Inclui ou Altera uma Action Padrão | |
getActionCharacter ( pCodAction ) getActionLogical ( pCodAction ) Parameters: - pCodAction (CHARACTER): Código da Action Retorno (CHARACTER,LOGICAL): Valor da Action | - Purpose: Retorna o valor de uma Action Padrão | |
removeAction ( pCodAction ) Parameters: - pCodAction (CHARACTER): Código da Action Retorno (LOGICAL): Indicativo se foi possível remover a Action | - Purpose: Remove uma Action Padrão | |
getActions ( ) Retorno (JsonObject): Actions padrões | - Purpose: retorna um JsonObject que representa as Actions Padrão | |
setPageCustomActionProperty ( pIdAction , pCodProperty , pCodValue ) Parameters: - pIdAction: Identificador da Action, usar uma das opções: - pCodLabel (CHARACTER): Label da Action - pNumIndex (INTEGER): Posição da Action dentro da Lista de Actions - pCodProperty (CHARACTER): Propriedade que deve ser alterada - pCodValue (CHARACTER,INTEGER,DECIMAL,LOGICAL): Novo valor Retorno (LOGICAL): Indicativo se foi possível alterar a propriedade | - Purpose: Altera uma propriedade de uma Action Customizada de Página | |
getPageCustomActionPropertyCharacter ( pIdAction , pCodProperty ) getPageCustomActionPropertyInteger ( pIdAction , pCodProperty ) getPageCustomActionPropertyDecimal ( pIdAction , pCodProperty ) getPageCustomActionPropertyLogical ( pIdAction , pCodProperty ) Parameters: - pIdAction: Identificador da Action, usar uma das opções: - pCodLabel (CHARACTER): Label da Action - pNumIndex (INTEGER): Posição da Action dentro da Lista de Actions - pCodProperty (CHARACTER): Propriedade Retorno (CHARACTER,INTEGER,DECIMAL,LOGICAL): Valor da Propriedade | - Purpose: Retorna o valor de uma propriedade de uma Action Customizada de Página | |
getPageCustomAction ( pIdAction ) Parameters: - pIdAction: Identificador da Action, usar uma das opções: - pCodLabel (CHARACTER): Label da Action - pNumIndex (INTEGER): Posição da Action dentro da Lista de Actions Retorno (JsonObject): Uma Action Customizada de Página | - Purpose: Retorna um JsonObject que representa uma Action Customizada de Página | |
addPageCustomAction ( pNumType , pCodLabel , pCodAddress [ , pCodIcon] ) Parameters: - pNumType: Tipo da Action, usar uma das opções: - CustomActions:TYPE_ENDPOINT - para chamada ao BackEnd - CustomActions:TYPE_ROUTE - para chamada de uma Rota (URL) - pCodLabel (CHARACTER): Label da Action - pCodAddress (CHARACTER): Endereço da Action que será executada - pCodIcon (CHARACTER): Ícone da Action Retorno (JsonObject): Action Customizada de Página Incluída | - Purpose: Incluir uma nova Action Customizada na Página | |
removePageCustomAction ( pIdAction ) Parameters: - pIdAction: Identificador da Action, usar uma das opções: - pCodLabel (CHARACTER): Label da Action - pNumIndex (INTEGER): Posição da Action dentro da Lista de Actions Retorno (LOGICAL): Indicativo se foi posssível remover a Action | - Purpose: Remove uma Action Customizada de Página | |
getPageCustomActions ( ) Retorno (JsonArray): Actions Customizadas de Página | - Purpose: Retorna a lista de Actions Customizadas de Página | |
setTableCustomActionProperty ( pIdAction , pCodProperty , pCodValue ) Parameters: - pIdAction: Identificador da Action, usar uma das opções: - pCodLabel (CHARACTER): Label da Action - pNumIndex (INTEGER): Posição da Action dentro da Lista de Actions - pCodProperty (CHARACTER): Propriedade que deve ser alterada - pCodValue (CHARACTER,INTEGER,DECIMAL,LOGICAL): Novo valor Retorno (LOGICAL): Indicativo se foi possível alterar a propriedade | - Purpose: Altera uma propriedade de uma Action Customizada de Tabela | |
getTableCustomActionPropertyCharacter ( pIdAction , pCodProperty ) getTableCustomActionPropertyInteger ( pIdAction , pCodProperty ) getTableCustomActionPropertyDecimal ( pIdAction , pCodProperty ) getTableCustomActionPropertyLogical ( pIdAction , pCodProperty ) Parameters: - pIdAction: Identificador da Action, usar uma das opções: - pCodLabel (CHARACTER): Label da Action - pNumIndex (INTEGER): Posição da Action dentro da Lista de Actions - pCodProperty: Propriedade Retorno (CHARACTER,INTEGER,DECIMAL,LOGICAL): Valor da Propriedade | - Purpose: Retorna o valor de uma propriedade de uma Action Customizada de Tabela | |
getTableCustomAction ( pIdAction ) Parameters: - pIdAction: Identificador da Action, usar uma das opções: - pCodLabel (CHARACTER): Label da Action - pNumIndex (INTEGER): Posição da Action dentro da Lista de Actions Retorno (JsonObject): Uma Action Customizada de Tabela | - Purpose: Retorna um JsonObject que representa uma Action Customizada de Tabela | |
addTableCustomAction ( pNumType , pCodLabel , pCodAddress [ , pCodIcon] [ , pConcatKeys] ) Parameters: - pNumType: Tipo da Action, usar uma das opções: - CustomActions:TYPE_ENDPOINT - para chamada ao BackEnd - CustomActions:TYPE_ROUTE - para chamada de uma Rota (URL) - pCodLabel (CHARACTER): Label da Action - pCodAddress (CHARACTER): Endereço da Action que será executada - pCodIcon (CHARACTER): Ícone da Action - pConcatKeys (LOGICAL): Indica se deve ser acrescentada a propriedade "concatKeys" na Action Retorno (JsonObject): Action Customizada de Tabela Incluída | - Purpose: Incluir uma nova Action Customizada na Tabela | |
removeTableCustomAction ( pIdAction ) Parameters: - pIdAction: Identificador da Action, usar uma das opções: - pCodLabel (CHARACTER): Label da Action - pNumIndex (INTEGER): Posição da Action dentro da Lista de Actions Retorno (LOGICAL): Indicativo se foi posssível remover a Action | - Purpose: Remove uma Action Customizada de Tabela | |
getTableCustomActions ( ) Retorno (JsonArray): Actions Customizadas de Tabela | - Purpose: Retorna a lista de Actions Customizadas de Tabela | |
getServerAddress ( pIsExt ) Parameters: - pIsExt (LOGICAL): Indica se deve ser considerado o Endereço Exerno (Valor: TRUE) ou Interno (Valor:FALSE). Se for solicitado o Externo e ele não existir, será devolvido o interno Retorno (CHARACTER): Endereço no formato: http://HOST:PORT | - Purpose: Retorna o Endereço onde o Datasul está hospedado |
--------------------
CLASSE: CustomRecord - Purpose: Customizações de Registros
--------------------
Método | Descrição | Exemplo |
---|---|---|
getEntityKeyCharacter ( ) getEntityKeyInteger ( ) Retorno (CHARACTER,INTEGER): Chave do registro | - Purpose: Retorna a chave do Registro na manipulação do Metadata (alteração, detalhe) | |
updateRecords ( pProg , pPiName ) Parameters: - pProg (HANDLE): Handle do programa UPC - pPiName (CHARACTER): Nome da PI que será executada a cada registro dos dados Retorno (LOGICAL): Indicativo se é possível alterar o registro Nota: A PI deve receber como parâmetro um JsonObject que representa o registro, ex: DEF INPUT PARAM oItem AS JsonObject NO-UNDO. | - Purpose: Navega nos registros e executa uma PI interna da UPC para customização dos dados |
----------------------
CLASSE: CustomMessages - Purpose: Geração de Mensagens
----------------------
Método | Descrição | Exemplo |
---|---|---|
createMessageError ( pMsgNumber , pMsgDescription , pMsgHelp ) Parameters: - pMsgNumber (INTEGER): Número da Mensagem - pMsgDescription (CHARACTER): Descrição da Mensagem - pMsgHelp (CHARACTER): Help da Mensagem Retorno (JsonObject): Mensagem no padrão TOTVS de Mensagem | - Purpose: Cria uma mensagem do tipo ERROR para enviar ao FrontEnd |
---------------------------------------------------------------------------
UPC - EXEMPLOS
USING com.totvs.framework.po.*.
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.
DEF VAR oFields AS JsonArray NO-UNDO.
DEF VAR oField AS JsonObject NO-UNDO.
DEF VAR oAction AS JsonObject NO-UNDO.
// Evento de Busca do Metadados da Tela de Lista
IF pEndPoint = "getMetaData" AND pEvent = "list" THEN DO:
oCustPages = NEW CustomPages(CustomOrig:ORIG_METADATA, jsonIO).
oCustFields = NEW CustomFields(CustomOrig:ORIG_METADATA, jsonIO).
oCustActions = NEW CustomActions(CustomOrig:ORIG_METADATA, jsonIO).
// Tela de Lista: Alterar o Título da Página
oCustPages:setPageTitle(oCustPages:getPageTitle() + " - ALTERADO").
// Tela de Lista: Se estiver salvando o Filtro, esconde o geranciador de Colunas
IF oCustPages:getPagePropertyLogical("keepfilters") THEN
oCustPages:setPageProperty("hideColumnsManager", TRUE).
// Tela de Lista: Alterar o label da coluna "FIFO" para "FIFO-ALT"
oCustFields:setFieldLabel("enableFIFOInPurchaseReq", "FIFO-ALT").
// Tela de Lista: Incluir uma coluna chamada: "Cópia Usuário" com o valor da coluna "Usuário"
ASSIGN oField = oCustFields:addField("userCopy", "Cópia Usuário", FieldType:STRING).
IF oField <> ? THEN
oField:ADD("allowColumnsManager", TRUE).
// Tela e Lista: Retira a o Ação de "Excluir" da Tabela
oCustActions:setAction("remove", FALSE).
// Tela de Lista: Retira a Ação de "Cópia"
oCustActions:removeAction("duplicate").
// Tela de Lista: Faz o Ação de Visualizar abrir a tela de Edição
oCustActions:setAction("detail", oCustActions:getActionCharacter("edit")).
// Tela de Lista: Incluir uma nova opção no Pagina chamada "EndPoint" que chama uma EndPoint
oCustActions:addPageCustomAction(CustomActions:TYPE_ENDPOINT, "Endpoint", "http://localhost:3000/page").
// Tela de Lista: Incluir uma nova opção no Pagina chamada "Rota" que chama uma Rota
oCustActions:addPageCustomAction(CustomActions:TYPE_ROUTE, "Rota", "http://www.google.com", "po-icon po-icon-device-desktop").
// Tela de Lista: Incluir o icone de Monitor na Ação "Endpoint" da Pagina
oCustActions:setPageCustomActionProperty("Endpoint", "icon", "po-icon po-icon-device-desktop").
// Tela de Lista: Alterar o Endereço da Ação "Endpoint" da Pagina, incluíndo um "2" no final
oAction = oCustActions:getPageCustomAction(1).
IF oAction <> ? THEN
oAction:set("action", oCustActions:getPageCustomActionPropertyCharacter("Endpoint", "action") + "2").
// Testa de Lista: Elimina a Ação de Rota da Pagina
oCustActions:removePageCustomAction("ROTA").
// Tela de Lista: Incluir uma nova opção no Tabela chamada "EndPoint" que chama uma EndPoint
oCustActions:addTableCustomAction(CustomActions:TYPE_ENDPOINT, "Endpoint", "http://localhost:3000/table").
// Tela de Lista: Incluir uma nova opção no Tabela chamada "EndPoint2" que chama uma EndPoint do Datasul
oCustActions:addTableCustomAction(CustomActions:TYPE_ENDPOINT, "Endpoint2", oCustActions:getServerAddress(FALSE) + "\api\fin\v1\customer").
// Tela de Lista: Incluir uma nova opção no Tabela chamada "Rota" que chama uma Rota
oCustActions:addTableCustomAction(CustomActions:TYPE_ROUTE, "Rota", "http://www.google.com").
// Tela de Lista: Incluir uma nova opção no Tabela chamada "Rota2" que chama uma Rota
oCustActions:addTableCustomAction(CustomActions:TYPE_ROUTE, "Rota2", "http://www.google.com", "po-icon po-icon-device-desktop").
// Tela de Lista: Incluir o icone de Monitor na Ação "Endpoint" da Tabela
oCustActions:setTableCustomActionProperty("Endpoint", "icon", "po-icon po-icon-device-desktop").
// Tela de Lista: Alterar o Endereço da Ação "Endpoint" da Table, incluíndo um "2" no final
oAction = oCustActions:getTableCustomAction(1).
IF oAction <> ? THEN
oAction:set("action", oCustActions:getTableCustomActionPropertyCharacter("Endpoint", "action") + "2").
// Testa de Lista: Elimina a Ação de Rota2 da Pagina
oCustActions:removeTableCustomAction("Rota2").
// oCustActions:getActions()
// oCustActions:getPageCustomActions()
// oCustActions:getTableCustomActions()
// oCustRecords:getEntityKeyCharacter()
// oCustRecords:getEntityKeyInteger()
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:
oCustFields = NEW CustomFields(CustomOrig:ORIG_METADATA, jsonIO).
// Tela Novo/Editar: Desabilitar o campo "Atualizar com erro de duplicata" (Aba: Atualização recebimento fiscal)
oCustFields:setDisableField("updatesWithDuplicateError", "fieldsUpdateFiscalConfigurations").
// Tela Novo/Editar: Habilitar o campo "Unidade negócio" (Aba: Digitação/Geração)
oCustFields:setEnableField("enableBusinessUnit", "fieldsTypingEnableDisable").
// Tela Novo/Editar: Esconder o campo "Desconto item" (Aba: Digitação/Geração)
oCustFields:setHideField("itemDiscount", "fieldsTypingEnableDisable").
// Tela Novo/Editar: Mostrar um campo "Geração nota crédito a pagar" (Aba: Digitação/Geração)
oCustFields:setShowField("creditNoteGeneration", "fieldsTypingEnableDisable").
// Tela Novo/Editar: 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.
// Tela Novo/Editar: Pegua a quantidades de campos do agrupador "Habitar/Desabilitar Campos" e joga no label o campo "Sequência dos itens"
ASSIGN oFields = oCustFields:getFields("fieldsTypingEnableDisable").
IF oFields <> ? THEN DO:
oField = oCustFields:getField("enableSequence", "fieldsTypingEnableDisable").
IF oField <> ? THEN
oField:SET("label", "Sequência dos itens (" + string(oFields:LENGTH) + ")").
END.
// Tela Novo/Editar: Colocar o Campo "Estado (UF)" depois do campo "Baixa estoque" (Aba: Digitação/Geração)
oCustFields:changeFieldOrder("enableState", "enableStockMovement", "fieldsTypingEnableDisable").
//oCustFields:changeFieldOrder("enableState", YES, "fieldsTypingEnableDisable"). // primeiro
//oCustFields:changeFieldOrder("enableState", NO, "fieldsTypingEnableDisable"). // último
// Tela Novo/Editar: Ao 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)"
oCustFields:setFieldValidate("execGZIPProgram", pAPI, "fieldsTypingConfigurations").
//oCustFields:setFieldValidateCustom("execGZIPProgram", "/api/rep/v1/userParameters/validateField", "fieldsTypingConfigurations").
// Tela Novo/Editar: Ao 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
oCustFields:addValidateFields("enableICMSTaxationCode").
DELETE OBJECT oCustFields NO-ERROR.
END.
// Evento de Busca dos Registros da Tela de Lista
IF pEndPoint = "findAll" AND pEvent = "findAll" THEN DO:
oCustRecords = NEW CustomRecords(CustomOrig:ORIG_GET_ALL, jsonIO).
// Tela de Lista: Incluir uma coluna chamada: "Cópia Usuário" com o valor da coluna "Usuário"
// Tela de Lista: Alterar o conteúdo da coluna "Nome", concatenado: "- Alterado"
oCustRecords:updateRecords(THIS-PROCEDURE, "pi_altera_registros").
DELETE OBJECT oCustRecords NO-ERROR.
END.
PROCEDURE pi_altera_registros:
DEF INPUT PARAM oItem AS JsonObject NO-UNDO.
oItem:ADD("userCopy", oItem:getCharacter("userCode")).
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:
oCustFields = NEW CustomFields(CustomOrig:ORIG_GET_RECORD, jsonIO).
// Tela Editar: Alterar o valor da coluna "Variação máxima data emissão" para "888" (Aba: Digitação/Geração)
oCustFields:setFieldValue("variationIssuing", 888).
DELETE OBJECT oCustFields NO-ERROR.
END.
// Evento de Alteração de Formulário
IF pEndPoint = "validateForm" AND pEvent = "validateForm" THEN DO:
oCustFields = NEW CustomFields(CustomOrig:ORIG_VLD_FORM, jsonIO).
// Tela Novo/Editar: Ao 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 v_log_mark = oCustFields:getFieldValueLogical("enableICMSTaxationCode").
IF v_log_mark <> ? THEN DO:
oCustFields:setFieldProperty("enableICMSReductionPercentage", "disabled", v_log_mark).
oCustFields:setFieldValue("enableICMSRate", v_log_mark).
END.
END.
// oCustFields:getReturnRoot().
// oCustFields:getFieldValues().
DELETE OBJECT oCustFields NO-ERROR.
END.
// Evento de Alteração de Campo
IF pEndPoint = "validateField" AND pEvent = "validateField" THEN DO:
oCustFields = NEW CustomFields(CustomOrig:ORIG_VLD_FIELD, jsonIO).
// Tela Novo/Editar: Ao 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 v_cod_caminho = oCustFields:getFieldValueCharacter("execGZIPProgram").
IF v_cod_caminho <> ? THEN DO:
ASSIGN v_cod_cam_ajust = LC(v_cod_caminho)
v_cod_cam_ajust = REPLACE(v_cod_cam_ajust, "á", "a")
v_cod_cam_ajust = REPLACE(v_cod_cam_ajust, "é", "e")
v_cod_cam_ajust = REPLACE(v_cod_cam_ajust, "í", "i")
v_cod_cam_ajust = REPLACE(v_cod_cam_ajust, "ó", "o")
v_cod_cam_ajust = REPLACE(v_cod_cam_ajust, "ú", "u")
v_cod_cam_ajust = REPLACE(v_cod_cam_ajust, "ã", "a")
v_cod_cam_ajust = REPLACE(v_cod_cam_ajust, "õ", "o")
v_cod_cam_ajust = REPLACE(v_cod_cam_ajust, "ç", "c").
IF NOT v_cod_cam_ajust MATCHES(v_cod_caminho) THEN
oCustFields:setFieldLabel("execGZIPProgram", "Caminho completo do executável GZIP (AJUST)").
ELSE
oCustFields:setFieldLabel("execGZIPProgram", "Caminho completo do executável GZIP").
oCustFields:setFieldValue("execGZIPProgram", v_cod_cam_ajust).
END.
END.
DELETE OBJECT oCustFields NO-ERROR.
END.
// Evento de Alteração de Registro
IF pEndPoint = "update" AND pEvent = "beforeUpdate" THEN DO:
oCustFields = NEW CustomFields(CustomOrig:ORIG_UPDATE_RECORD, jsonIO).
oCustMsgs = NEW CustomMessages(CustomOrig:ORIG_UPDATE_RECORD, jsonIO).
// Tela Editar: Valida se o campo "Caminho completo do executável GZIP" foi informado, se não foi, apresenta uma mensagem de Erro
IF oCustFields:getFieldValueCharacter("execGZIPProgram") = "" OR oCustFields:getFieldValueCharacter("execGZIPProgram") = ? THEN DO:
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 !!!!").
DELETE OBJECT oCustFields NO-ERROR.
DELETE OBJECT oCustMsgs NO-ERROR.
RETURN "NOK".
END.
DELETE OBJECT oCustFields NO-ERROR.
DELETE OBJECT oCustMsgs NO-ERROR.
END.
RETURN "OK".