Histórico da Página
CONTEÚDO
- INTRDUÇÃO / OBJETIVO
- XXXXX
- Xxxxxx
- Xxxxxx
- XXXX
- Xxxxx
- Xxxxxx
- UTILIZAÇÃO DO UTILITÁRIO
- CLASSES
- EXEMPLOS DA UTILIZAÇÃO DAS CLASSESXXXXXXX
01. INTRODUÇÃO /
...
OBJETIVO Âncora introducao introducao
introducao | |
introducao |
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 o 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 e é, facilitar a manipulação destas informações que são recebidas pela EPC.
...
Xxxxxxxx
...
Xxxxxxxx
...
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
------------------
...
, 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 Âncora utilizacao utilizacao
utilizacao | |
utilizacao |
O utilitário disponibiliza um conjuntos de Classes que podem ser utilizadas diretamente dentro da UPC para executar as ações desejadas.
As classes estão dividas conforme a parte que será customizada, por exemplo, para alterar campos do formulário, deve ser utilizada a classe CustomFields, para alterar as ações, deve ser utilizada a CustomActions, e assim por diante.
Para utilizá-las, é necessário informar o caminho onde estão disponíveis. Portanto, deve ser incluída a linha de comando abaixo no início da UPC:
Bloco de código | ||
---|---|---|
| ||
USING com.totvs.framework.po.*. |
Todas as classes seguem o mesmo padrão de utilização e recebem os mesmos parâmetros, conforme descrito abaixo:
- 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/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.
Abaixo segue um exemplo da utilização da classe "CustomFields", como o objetivo de desabilitar um campo do Formulário de Inclusão/Edição:
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. |
03.CLASSES Âncora classes classes
classes | |
classes |
Abaixo segue a lista das Classes disponíveis, indicando o objetivo de cada uma delas, juntamente com os Métodos disponíveis.
a.CustomOrig Âncora CustomOrig CustomOrig
CustomOrig | |
CustomOrig |
Este é uma classe auxiliar, que não possui métodos. Ela é utilizada apenas para definir as opções disponíveis de pontos de customização.
No momento em que uma das classes do utilitário é instanciada, é necessário indicar a ela, em que ponto da UPC ela está sendo utilizada. Este ponto corresponde ao Endpoint/Evento que está sendo customizado. Isto é necessário pois, dependendo do Endpoint/Evento, a estrutura das informações recebidas pela UPC é diferente, portanto a classe precisa saber o ponto, para saber onde buscar/alterar a informação desejada.
Abaixo segue a lista da opções disponíveis:
- CustomOrig:ORIG_METADATA - Utilizar nos pontos relacionados a alterações no Metadata da tela HTML;
- CustomOrig:ORIG_VLD_FORM - Utilizar nos pontos relacionados ao evento de "validateForm" (quando algum campo do formulário é alterado);
- CustomOrig:ORIG_VLD_FIELD - Utilizar nos pontos relacionados ao evento de "validateField" (quando um determinado campo é alterado);
- CustomOrig:ORIG_GET_RECORD - Utilizar nos pontos relacionados a busca de um determinado registro;
- CustomOrig:ORIG_GET_ALL - Utilizar nos pontos relacionados a busca de várias registros;
- CustomOrig:ORIG_CREATE_RECORD - Utilizar nos pontos relacionados a criação de um registro;
- CustomOrig:ORIG_UPDATE_RECORD - Utilizar nos pontos relacionados a alteração de um registro;
- CustomOrig:ORIG_DELETE_RECORD - Utilizar nos pontos relacionados a exclusão de um registro.
Abaixo segue um exemplo da utilização deste classe, na instancia da classe CustomFields, para o evento de validateForm:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
// Evento de Alteração de Formulário
IF pEndPoint = "validateForm" AND pEvent = "validateForm" THEN DO:
// Realiza a instância da Classe
oCustFields = NEW CustomFields(CustomOrig:ORIG_VLD_FORM, jsonIO).
...
...
END. |
b.CustomPages Âncora CustomPages CustomPages
CustomPages | |
CustomPages |
Classe utilizada para manipular as propriedades gerais da Página, como por exemplo o Título dela.
Método | Descrição | Exemplo |
---|---|---|
setPageTitle ( pCodTitle ) Parâmetros:
Retorno (LOGICAL): Indicativo se foi possível alterar o Título. | Altera o Titulo da página. | oCustPages:setPageTitle("Clientes Prime"). |
getPageTitle ( ) Retorno (CHARACTER): Título da Página. | Retorna o Titulo da página. | ASSIGN vTitulo = oCustPages:getPageTitle(). |
setPageProperty ( pCodProperty , pCodValue ) Parâmetros:
Retorno (LOGICAL): Indicativo se foi possível alterar a Propriedade. | Altera uma propriedade da página. | oCustPages:setPageProperty("keepfilters", TRUE). |
getPagePropertyCharacter ( pCodProperty ) getPagePropertyInteger ( pCodProperty ) getPagePropertyDecimal ( pCodProperty ) getPagePropertyLogical ( pCodProperty ) Parâmetros:
Retorno (CHARACTER,INTEGER,DECIMAL,LOGICAL): Valor da Propriedade. | Retorna o valor de uma propriedade da página. | ASSIGN vConctFilter = |
c.CustomFields Âncora CustomFields CustomFields
CustomFields | |
CustomFields |
Classe utilizada para realizar customizações relacionadas aos campos, tais como: alterar o label, desabilitar, esconder, etc.. Através dela, também é possível incluir campos customizados, assim como atualizar o valor dos mesmos. Ela pode ser utilizada para tratar tanto os campos de Tabelas, como de Formulários.
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:
|
...
--------------------
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) Parameters: - pCodField (CHARACTER): Código do atributo - pCodValue (CHARACTER,INTEGER,DECIMAL,LOGICAL,DATE): Novo valor Retorno (LOGICAL): Indicativo se foi possível alterardesabilitar o atributogetFieldValues() - Purpose: Retorno um JsonOject que representa os Valores do registro ou retorno(eventos ValidateForm e ValidateField) | - Purpose: Altera o valor de um Atributo |
---------------------
CLASSE: CustomActions - Purpose: Customizações de Ações da Página e da Tabela
---------------------
...
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:
|
getActionCharacter(pCodAction) - Purpose: Retorna o valor de uma Action Padrão
getActionLogical(pCodAction)
Parameters:
- pCodAction (CHARACTER): Código da Action
Retorno (CHARACTER,LOGICAL): Valor da Action
...
Retorno (LOGICAL): Indicativo se foi possível |
...
getActions() - Purpose: retorna um JsonObject que representa as Actions Padrão
Retorno (JsonObject): Actions padrões
...
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. |
getPageCustomAction(pIdAction) - Purpose: Retorna um JsonObject que representa uma Action Customizada de Página
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
addPageCustomAction(pNumType, pCodLabel, pCodAddress [, pCodIcon]) - Purpose: Incluir uma nova Action Customizada na Página
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
removePageCustomAction(pIdAction) - Purpose: Remove uma Action Customizada de Página
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
getPageCustomActions() - Purpose: Retorna a lista de Actions Customizadas de Página
Retorno (JsonArray): Actions Customizadas de Página
setTableCustomActionProperty(pIdAction, pCodProperty , pCodValue) - Purpose: Altera uma propriedade de uma Action Customizada de Tabela
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
getTableCustomActionPropertyCharacter(pIdAction, pCodProperty) - Purpose: Retorna o valor de uma propriedade de uma Action Customizada de Tabela
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
getTableCustomAction(pIdAction) - Purpose: Retorna um JsonObject que representa uma Action Customizada de Tabela
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
addTableCustomAction(pNumType, pCodLabel, pCodAddress [, pCodIcon] [, pConcatKeys]) - Purpose: Incluir uma nova Action Customizada na Tabela
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
removeTableCustomAction(pIdAction) - Purpose: Remove uma Action Customizada de Tabela
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
getTableCustomActions() - Purpose: Retorna a lista de Actions Customizadas de Tabela
Retorno (JsonArray): Actions Customizadas de Tabela
getServerAddress(pIsExt) - Purpose: Retorna o Endereço onde o Datasul está hospedado
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
--------------------
CLASSE: CustomRecord - Purpose: Customizações de Registros
--------------------
...
getEntityKeyCharacter() - Purpose: Retorna a chave do Registro na manipulação do Metadata (alteração, detalhe)
getEntityKeyInteger()
Retorno (CHARACTER,INTEGER): Chave do registro
updateRecords(pProg, pPiName) - Purpose: Navega nos registros e executa uma PI interna da UPC para customização dos dados
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.
----------------------
CLASSE: CustomMessages - Purpose: Geração de Mensagens
----------------------
...
createMessageError(pMsgNumber, pMsgDescription, pMsgHelp) - Purpose: Cria uma mensagem do tipo ERROR para enviar ao FrontEnd
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
---------------------------------------------------------------------------
UPC - EXEMPLOS
...
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:
- Ações Padrões: Correspondem as ações: Incluir, Editar, Copiar, Visualizar e Excluir.
- Ações Customizadas: Correspondem a qualquer outra ação que não seja padrão, incluídas pelo próprio produto ou de forma customizada. Exemplo: "Atualiza Doc".
Através desta classe, é possível manipular as ações existentes na Páginas e também nas Tabelas.
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. | 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. | Exemplo1: |
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. | Exemplo1: |
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 ] ) Parâmetros:
Retorno (JsonObject): Ação Customizada de Página Incluída. | Incluir uma nova Ação Customizada na Página. | 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:
Retorno (JsonObject): Ação Customizada de Tabela Incluída. | Incluir uma nova Ação Customizada na Tabela. | Exemplo1: |
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. | 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. | Exemplo1: |
e.CustomRecords Âncora CustomRecords CustomRecords
CustomRecords | |
CustomRecords |
Classe utilizada para alterar os registros que estão sendo enviados pela tela HTML. Ela pode ser utlizalida tanto no evento que retornam vários registros, com naqueles que é retornado apenas um.
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). | 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. | oCustRecords:updateRecords(THIS-PROCEDURE, "pi_altera_registros"). |
f.CustomMessages Âncora CustomMessages CustomMessages
CustomMessages | |
CustomMessages |
Classe utilizada para criação de mensagens 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. | Cria uma mensagem do tipo ERROR para enviar ao FrontEnd. | DEF VAR vName AS CHARACTER NO-UNDO. |
04.EXEMPLOS DA UTILIZAÇÃO DAS CLASSES Âncora exemplos exemplos
exemplos | |
exemplos |
Abaixo segue o exemplo de uma UPC utilizado grande parte dos métodos das classes do utilitário:
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 auxiliares
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",
"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 |
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.
...
"OK". |