Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

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
titleNota

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

...

  • 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
languagetext
titleExemplo utilização da classe CustomFields
linenumberstrue
// 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étodoDescriçãoExemplo

setPageTitle ( pCodTitle )

Parâmetros:

  • pCodTitle (CHARACTER): Novo Titulo da Página.

Retorno (LOGICAL): Indicativo se foi possível alterar o Título.

Altera o Titulo da Páginapágina.
oCustPages:setPageTitle("Clientes Prime").

getPageTitle ( )

Retorno (CHARACTER): Título da Página.

Retorna o Titulo da Páginapágina
ASSIGN vTitulo = oCustPages:getPageTitle().
... Faz algo com o título

setPageProperty ( pCodProperty , pCodValue )

Parâmetros:

  • pCodProperty (CHARACTER): Propriedade que deve ser alterada;
  • pCodValue (CHARACTER,INTEGER,DECIMAL,LOGICAL): Novo valor.

Retorno (LOGICAL): Indicativo se foi possível alterar a Propriedade.

Altera uma propriedade da Páginapágina.
oCustPages:setPageProperty("keepfilters", TRUE).

getPagePropertyCharacter ( pCodProperty )

getPagePropertyInteger ( pCodProperty )

getPagePropertyDecimal ( pCodProperty )

getPagePropertyLogical ( pCodProperty )

Parâmetros:

  • pCodProperty (CHARACTER): Propriedade.

Retorno (CHARACTER,INTEGER,DECIMAL,LOGICAL): Valor da Propriedade.

Retorna o valor de uma propriedade da Páginapágina.
ASSIGN vConctFilter =
oCustPages:getPagePropertyLogical("concatFilters").
... Faz algo com a informação

...

MétodoDescriçãoExemplo

setFieldLabel ( pCodField , pCodLabel [ , pGroupId ] )

Parâmetros:

  • pCodField (CHARACTER): Código do campo;
  • pCodLabel (CHARACTER): Novo label do campo;
  • pGroupId (CHARACTER): Agrupador onde o campo está contido. É opcional, se não for informado, será considerado o agrupador padrão "fields".

Retorno (LOGICAL): Indicativo se foi possível alterar o Label.

Altera o Label de um campo.
Exemplo1:// Altera o label da coluna "FIFO" para "FIFO-ALT"
oCustFields:setFieldLabel("enableFIFOInPurchaseReq",
"FIFO-ALT").

Exemplo2:
oCustFields:setFieldLabel("consistsUnitPrice",
                     "Consistir preço único",
"fieldsTypingValidations").

setDisableField ( pCodField [ , pGroupId ] )

Parâmetros:

  • pCodField (

setDisableField ( pCodField [ , pGroupId ] )

Parâmetros:

  • pCodField (CHARACTER): Código do campo;
  • pGroupId (CHARACTER): Agrupador onde o campo está contido. É opcional, se não for informado, será considerado o agrupador padrão "fields".

Retorno (LOGICAL): Indicativo se foi possível desabilitar o campo.

Desabilita um campo.
Exemplo1:
oCustFields:setDisableField("variationIssuing").

Exemplo2:// Desabilita o campo "Atualizar com erro de duplicata"
// (Aba: Atualização recebimento fiscal)
oCustFields:setDisableField("updatesWithDuplicateError",
"fieldsUpdateFiscalConfigurations").

setEnableField ( pCodField [ , pGroupId ] )

Parâmetros:

  • pCodField (CHARACTER): Código do campo;
  • pGroupId (CHARACTER): Agrupador onde o campo está contido. É opcional, se não for informado, será considerado o agrupador padrão "fields".

Retorno (LOGICAL): Indicativo se foi possível habilitar o campo.

Habilita um campo.
Exemplo1:
oCustFields:setEnableField("acceptableTaxDifference").

Exemplo2:// Habilita o campo "Unidade negócio" (Aba: Digitação/Geração)
oCustFields:setEnableField("enableBusinessUnit",
"fieldsTypingEnableDisable").

setHideField ( pCodField [ , pGroupId ] )

Parâmetros:

  • pCodField (CHARACTER): Código do campo;
  • pGroupId (CHARACTER): Agrupador onde o campo está contido. É opcional, se não for informado, será considerado o agrupador padrão "fields".

Retorno (LOGICAL): Indicativo se foi possível esconder o campo.

Esconde um campo.
Exemplo1:
oCustFields:setHideField("itemDiscount").

Exemplo2:// Esconde o campo "Desconto item"
oCustFields:setHideField("itemDiscount"defaultSpeciesExpenses",
"fieldsTypingDuplicates").

setShowField ( pCodField [ , pGroupId ] )

Parâmetros:

  • pCodField (CHARACTER): Código do campo;
  • pGroupId (CHARACTER): Agrupador onde o campo está contido. É opcional, se não for informado, será considerado o agrupador padrão "fields".

Retorno (LOGICAL): Indicativo se foi possível apresentar o campo.

Mostra um campo.
Exemplo1:// Mostra o campo "Geração nota crédito a pagar"
oCustFields:setShowField("creditNoteGeneration").

Exemplo2:
oCustFields:setShowField("receiveWithoutOrder",
"fieldsTypingOrders").

setFieldProperty ( setFieldProperty ( pCodField , pCodProperty , pCodValue [ , pGroupId ] )

Parâmetros:

  • pCodField (CHARACTER): Código do campo;
  • pCodProperty (CHARACTER): Propriedade que deve ser alterada;
  • pCodValue (CHARACTER,INTEGER,DECIMAL,LOGICAL): Novo valor;
  • pGroupId (CHARACTER): Agrupador onde o campo está contido. É opcional, se não for informado, será considerado o agrupador padrão "fields".

Retorno (LOGICAL): Indicativo se foi possível alterar a propriedade.

Altera uma propriedade de um campo.
Exemplo1:
oCustFields:setFieldProperty("itemDiscount",
// Para o campo "Sequência dos itens" mostrar "Ligado/Desligado" 
//ao invés de "Ativado/Desativado"
IF oCustFields:getFieldPropertyCharacter("enableSequence",
"required",
"type",
TRUE).

Exemplo2:
oCustFields:setFieldProperty("enableSequence",
"fieldsTypingEnableDisable")
= "boolean" THEN DO:oCustFields:setFieldProperty("enableSequence"booleanTrue",
"booleanTrue",
"Ligado",
     "fieldsTypingEnableDisable").
oCustFields:setFieldProperty("enableSequence",
"booleanFalse",
"Desligado",
"fieldsTypingEnableDisable").
END.

getFieldPropertyCharacter ( pCodField , pCodProperty [ , pGroupId ] )

getFieldPropertyInteger ( pCodField , pCodProperty [ , pGroupId ] )

getFieldPropertyDecimal ( pCodField , pCodProperty getFieldPropertyCharacter ( pCodField , pCodProperty [ , pGroupId ] )

getFieldPropertyInteger ( pCodField , pCodProperty [ , pGroupId ] )

getFieldPropertyDecimal ( pCodField , pCodProperty [ , pGroupId ] )

getFieldPropertyLogical ( pCodField , pCodProperty [ , pGroupId ] )

Parâmetros:

  • pCodField (CHARACTER): Código do campo;
  • pCodProperty (CHARACTER): Propriedade;
  • pGroupId (CHARACTER): Agrupador onde o campo está contido. É opcional, se não for informado, será considerado o agrupador padrão "fields".

Retorno (CHARACTER,INTEGER,DECIMAL,LOGICAL): Valor da Propriedade.

Retorna o valor de uma propriedade de um campo.
Exemplo1:
//ASSIGN ParavOrder o=
campo "Sequência dos itens" mostrar "Ligado/Desligado"
//ao invés de "Ativado/Desativado"IF oCustFields:getFieldPropertyCharacter("enableSequence",
oCustFields:getFieldPropertyInteger("defaultDuplic",
"typeorder",).
... Faz algo com "fieldsTypingEnableDisable")
= "boolean" THEN DO:oCustFields:setFieldPropertya informação

Exemplo2:
ASSIGN vType =
oCustFields:getFieldPropertyCharacter("enableSequence",
"booleanTrue",
"Ligadotype",
   "fieldsTypingEnableDisable").
oCustFields:setFieldProperty("enableSequence",
"booleanFalse",
"Desligado",
"fieldsTypingEnableDisable").
END.
... Faz algo com a informação

getFields ( [ pGroupId ] )

Parâmetros:

  • pGroupId (CHARACTER): Agrupador onde o campo está contido. É opcional, se não for informado, será considerado o agrupador padrão "fields".

Retorno (JsonArray): Lista de campos.

Retorna um JsonArray que representa a lista de campos.
// Pegua a quantidades de campos do agrupador "Impostos" e joga 
// no label do campo "Total"
Exemplo1:
DEF VAR oFields AS JsonArray NO-UNDO.
ASSIGN oFields = oCustFields:getFields("fieldsTax").
oFieldIF  = oCustFields:getField("totalTax",
oFields <> ? AND oFields:LENGTH > 10 THEN ...

Exemplo2:
DEF VAR oFields AS JsonArray NO-UNDO.
ASSIGN oFields = oCustFields:getFields("fieldsTax").
IF oFields <> ? AND oFieldoFields:LENGTH <> ?0 THEN
oField:SET("label", "Total (" + string(oFields:LENGTH) + ")").
 ...

getField ( pCodField getField ( pCodField [ , pGroupId ] )

Parâmetros:

  • pCodField (CHARACTER): Código do campo;
  • pGroupId (CHARACTER): Agrupador onde o campo está contido. É opcional, se não for informado, será considerado o agrupador padrão "fields".

Retorno (JsonObject): Um campo.

Retorna um JsonObject que representa um campo.
// Pegua a quantidades de campos do agrupador "Impostos" e joga 
// no label do campo "Total"
ASSIGN oFields = oCustFields:getFields("fieldsTax")
oField  Exemplo1:
DEF VAR oField AS JsonObject NO-UNDO.
oField = oCustFields:getField("totalTax",
"fieldsTax").
IF oFieldsoField <> ? ANDTHEN
oField <> ? THENoField:SETADD("labelallowColumnsManager", "Total (" + string(oFields:LENGTH) + ")"TRUE).

Exemplo2:
DEF VAR oField AS JsonObject NO-UNDO.
oField = oCustFields:getField("enableAutomaticDuplicate").
IF oField <> ? THEN
oField:SET("order", 10).

addField ( pCodField , pCodLabel , pCodType [ , pPosition ] [ , pGroupId ] )

Parâmetros:

  • pCodField (CHARACTER): Código do campo;
  • pCodLabel (CHARACTER): Label do campo;
  • pCodType (CHARACTER): Tipo do campo (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 campo será o Primeiro do Formulário (valor: YES) ou o Útimo (valor: NO);
    • pReferenceField (CHARACTER): Código de um campo já existente, onde o campo ficará DEPOIS dele.
    • É opcional, se não informado valor, o campo será o Último do Formulário.
  • pGroupId (CHARACTER): Agrupador onde o campo está contido. É opcional, se não for informado, será considerado o agrupador padrão "fields".

Retorno (JsonObject): campo Incluído.

Incluir um novo campo.
Exemplo1:// Inclui uma coluna chamada: "Cópia Usuário"
ASSIGN oField = oCustFields:addField("userCopy",
"Cópia Usuário",
FieldType:STRING).

Exemplo2:
ASSIGN oField = oCustFields:addField("codeTax",
FieldType:STRING).// Inclui a nova coluna no Gerenciador de ColunasIF oField <> ? THENoField:ADD("allowColumnsManager",
TRUE).

changeFieldOrder ( pCodField [ , pPosition ] [ , pGroupId ] )

Parâmetros:

  • pCodField (CHARACTER): Código do campo;
  • pPosition: Posição onde o campo irá ficar no Formulário, usar uma da opções:
    • pIsFirst (LOGICAL): O campo será o Primeiro do Formulário (valor: YES) ou o Útimo (valor: NO);
    • pReferenceField (CHARACTER): Código de um campo já existente, onde o campo ficará DEPOIS dele;
    • É opcional, se não informado valor, o campo será o Último do Formulário.
  • pGroupId (CHARACTER): Agrupador onde o campo está contido. É opcional, se não for informado, será considerado o agrupador padrão "fields".

Retorno (LOGICAL): Indicativo se foi possível alterar a ordem.

Altera a Ordem de um campo.
// Colocar o Campo "Estado (UF)" depois do campo "Baixa estoque"
oCustFields:changeFieldOrder("enableState",
"Código Imposto",
FieldType:NUMBER,
TRUE).

Exemplo3:
ASSIGN oField = oCustFields:addField("datAdmin",
"Data Admissão",
FieldType:DATE,
"enableSequence",
"enableStockMovement").// Coloca o campo "CPF" como sendo o primeiro campo do Formulário
oCustFields:changeFieldOrder("cpf",
YES"fieldsTypingEnableDisable").

setFieldValidate changeFieldOrder ( pCodField , pCodProg [ , pGroupId ] )setFieldValidateCustom ( pCodField , pEndpoint pPosition ] [ , pGroupId ] )

Parâmetros:

  • pCodField (CHARACTER): Código do campo;
  • pCodProg (CHARACTER): API-REST de Produto (deve ser enviado o terceiro parâmetro recebido pela UPC). Quando o campo for alterado, será executado o Endpoint 'validateField' da API-REST do Produto;
  • pPosition: Posição onde o campo irá ficar no Formulário, usar uma da opções:
    • pIsFirst (LOGICAL): O campo será o Primeiro do Formulário (valor: YES) ou o Útimo (valor: NO);
    • pReferenceField (CHARACTER): Código de um campo já existente, onde o campo ficará DEPOIS dele;
    • É opcional, se não informado valor, o campo será o Último do Formulário.
    pEndpoint (CHARACTER): Endpoint (método POST) que será executado quando o campo for alterado. O caminho do Endpoint pode ser relativo (API-REST dentro do datasul) ou completo;
  • pGroupId (CHARACTER): Agrupador onde o campo está contido. É opcional, se não for informado, será considerado o agrupador padrão "fields".

Retorno (LOGICAL): Indicativo se foi possível incluir alterar a propriedade no campoordem.

Incluir a propriedade 'validate' no campo (monitora a alterado do campo - evento validateField).Altera a Ordem de um campo.
Exemplo1:
oCustFields:changeFieldOrder("name").

Exemplo2:
oCustFields:changeFieldOrder("cpf",
TRUE).

Exemplo3:
oCustFields:changeFieldOrder("enableState// 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,
"enableStockMovement",
"fieldsTypingConfigurationsfieldsTypingEnableDisable").

addValidateFields setFieldValidate ( pCodField , pCodProg [ , pGroupId ] )

setFieldValidateCustom ( pCodField , pEndpoint [ , pGroupId ] )

Parâmetros:

  • pCodField (CHARACTER): Código do campo.;
Retorno
  • pCodProg (
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 tela que implementam o componente DynamicForm.

// 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").
  • CHARACTER): API-REST de Produto (deve ser enviado o terceiro parâmetro recebido pela UPC). Quando o campo for alterado, será executado o Endpoint 'validateField' da API-REST do Produto;
  • pEndpoint (CHARACTER): Endpoint (método POST) que será executado quando o campo for alterado. O caminho do Endpoint pode ser relativo (API-REST dentro do datasul) ou completo;
  • pGroupId (CHARACTER): Agrupador onde o campo está contido. É opcional, se não for informado, será considerado o agrupador padrão "fields".

isChangedField ( pCodField )

Parâmetros:

  • pCodField (CHARACTER): Código do campo.

Retorno (LOGICAL): Lógico indicativo se o campo teve seu valor alterado.

Verifica se um campo foi alterado (eventos ValidateForm e ValidateField).

Indicativo se foi possível incluir a propriedade no campo.

Incluir a propriedade 'validate' no campo (monitora a alterado do campo - evento validateField).
Exemplo1:
oCustFields:setFieldValidate("allowedVariation",
pAPI).

Exemplo2:
oCustFields:setFieldValidate("execGZIPProgram
// 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",
pAPI,
vValorMark"fieldsTypingConfigurations").

Exemplo3:
oCustFields:setFieldValuesetFieldValidateCustom("enableICMSRatereceiveVendorOrder",
vValorMark "/api/cdpcus/v1/orders").
END.
END.
// 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.

Exemplo4:
oCustFields:setFieldValidateCustom("oderNumber",
"http://server:3000/vdlOrder/validateField",
"fieldsUpdateFiscalValidations").

addValidateFields ( pCodField )

Parâmetros:

  • pCodField (CHARACTER): Código do campo.

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:

  • pCodField (CHARACTER): Código do campo.

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")
THEN DO:
... Realiza algum tratamento
END.

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.
oRoot = oCustFields:getReturnRoot().
... Faz algo com a informação

getFieldValueCharacter ( pCodField )

getFieldValueInteger ( pCodField )

getFieldValueDecimal ( pCodField )

getFieldValueLogical ( pCodField )

getReturnRoot ( )

Retorno (JsonObject): Root de retorno.

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 )

Parâmetros:

  • pCodField (CHARACTER): Código do campo.

Retorno (CHARACTER,INTEGER,DECIMAL,LOGICAL,DATE,JsonObject,JsonArray): Valor do campo.

Retorna o valor de um campo.
// 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:
Exemplo1:
ASSIGN vValorAtual =
oCustFields:getFieldValueCharacter("execGZIPProgram").
... Faz algo com a informação

Exemplo2:
ASSIGN vValorMark =
oCustFields:getFieldValueLogical("enableICMSTaxationCodeenableICMSTaxCode").
IF... vValorMarkFaz <>algo ?com THENa informação

setFieldValue ( pCodField , pCodValue )

Parâmetros:

  • pCodField (CHARACTER): Código do campo;
  • pCodValue (CHARACTER,INTEGER,DECIMAL,LOGICAL,DATE): Novo valor.

Retorno (LOGICAL): Indicativo se foi possível alterar o campo.

Altera o valor de um campo.
Exemplo1:
oCustFields:setFieldValue("execGZIPProgram",
DO:
oCustFields:setFieldProperty("enableICMSReductionPercentage",
"disabledvValorAjust).

Exemplo2:
oCustFields:setFieldValue("variationIssuing",
vValorMark).oCustFields:setFieldValue("enableICMSRate",
vValorMark888).END.
END.
// 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

getFieldValues ( )

Retorno (JsonObject): Valores do registro.

Retorna um JsonOject que representa os Valores do registro.
DEFINE VARIABLE oValues AS JsonObject NO-UNDO.
oValues = oCustFields:getFieldValues().
... Faz algo com a informação

d.CustomActions
Âncora
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.


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.
// 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",
vValorMarkoCustFields:setFieldValue("enableICMSRate"vValorMark).
END.
END.
// 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).IFNOTvValorAjustMATCHES(vValorAtual)THEN
oCustFields:setFieldLabel("execGZIPProgram",
"CaminhocompletodoexecutávelGZIP(AJUST)").
ELSE
oCustFields:setFieldLabel("execGZIPProgram",
"Caminho completo do executável GZIPEND
END//Alteraovalorda coluna "Variação máxima data emissão" para "888"
// (Aba: Digitação/Geração)
oCustFields:setFieldValue("variationIssuing",
888).getFieldValues ( ) Valores do registroRetorno JsonOject que representa os Valores do registro ou retorno(eventos ValidateForm e ValidateField).
MétodoDescriçãoExemplo

setAction ( pCodAction , pCodValue )

Parâmetros:

  • pCodAction (CHARACTER): Código da Ação;
  • pCodValue: Valor da Ação, usar uma das opções:
    • pCodURL (CHARACTER): Valor da URL a ser executada pela Ação;
    • pCodValue (LOGICAL): Valor da Ação.

Retorno (LOGICAL): Indicativo se foi possível incluir/alterar a Ação.

Inclui ou Altera uma Ação Padrão.
Exemplo1:
oCustActions:setAction("detail",
"/userParameters/newdet/:id").

Exemplo2:
oCustActions:setAction("remove",
FALSE).


getActionCharacter ( pCodAction )

getActionLogical ( pCodAction )

Parâmetros:

  • pCodAction (CHARACTER): Código da Ação.

Retorno (CHARACTER,LOGICAL): Valor da Ação.

Retorna o valor de uma Ação Padrão.
Exemplo1:
ASSIGN vUrlEdit =
oCustActions:getActionCharacter("edit").
... Faz algo com a informação

Exemplo2:
ASSIGN vRemove =
oCustActions:getActionLogical("remove").
... Faz algo com a informação

removeAction ( pCodAction )

Parâmetros:

  • pCodAction (CHARACTER): Código da Ação.

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.
oActions = oCustActions:getActions().
... Faz algo com a informação

setPageCustomActionProperty ( pIdAction , pCodProperty , pCodValue )

Parâmetros:

  • pIdAction: Identificador da Ação, usar uma das opções:
    • pCodLabel (CHARACTER): Label da Ação;
    • pNumIndex (INTEGER): Posição da Ação dentro da Lista de Ações.
  • pCodProperty (CHARACTER): Propriedade que deve ser alterada;
  • pCodValue (CHARACTER,INTEGER,DECIMAL,LOGICAL): Novo valor.

Retorno (LOGICAL): Indicativo se foi possível alterar a propriedade.

Altera uma propriedade de uma Ação Customizada de Página.
Exemplo1:
oCustActions:setPageCustomActionProperty("Atz Dados

setFieldValue ( pCodField , pCodValue )

Parâmetros:

  • pCodField (CHARACTER): Código do campo;
  • pCodValue (CHARACTER,INTEGER,DECIMAL,LOGICAL,DATE): Novo valor.

Retorno (LOGICAL): Indicativo se foi possível alterar o campo.

Altera o valor de um campo.
",
                 
"icon",
"po-icon po-icon po-icon-refresh").

Exemplo2:
oCustActions:setPageCustomActionProperty(2,
      "visible",
FALSE).

getPageCustomActionPropertyCharacter ( pIdAction , pCodProperty )

getPageCustomActionPropertyInteger ( pIdAction , pCodProperty )

getPageCustomActionPropertyDecimal ( pIdAction , pCodProperty )

getPageCustomActionPropertyLogical ( pIdAction , pCodProperty )

Parâmetros:

  • pIdAction: Identificador da Ação, usar uma das opções:
    • pCodLabel (CHARACTER): Label da Ação;
    • pNumIndex (INTEGER): Posição da Ação dentro da Lista de Ações.
  • pCodProperty (CHARACTER): Propriedade.

Retorno (CHARACTER,INTEGER,DECIMAL,LOGICAL): Valor da Propriedade.

Retorna o valor de uma propriedade de uma Ação Customizada de Página.
Exemplo1:
ASSIGN vURL =
oCustActions:getPageCustomActionPropertyCharacter("Docto",
                          
 
 
 
 
      "url").
... Faz algo com a informação

Exemplo2:
ASSIGN vVisible =
oCustActions:getPageCustomActionPropertyLogical(1,
 
 
 
 
 
                         
"visible").
..
.
 
Faz 
algo 
com 
a informação

getPageCustomAction ( pIdAction )

Parâmetros:

  • pIdAction: Identificador da Ação, usar uma das opções:
    • pCodLabel (CHARACTER): Label da Ação;
    • pNumIndex (INTEGER): Posição da Ação dentro da Lista de Ações.

Retorno (JsonObject):

Uma Ação Customizada de Página.

Retorna um

...

JsonObject que representa uma Ação Customizada de Página.
Exemplo1:
DEF VAR oPageCustomAction AS JsonObject NO-UNDO.
oPageCustomAction = oCustActions:getPageCustomAction("Docto").
IF oPageCustomAction <> ? THEN
oPageCustomAction:set("action",
"http://server:8080/doc").

Exemplo2:
DEF VAR oPageCustomAction AS JsonObject NO-UNDO.
oPageCustomAction = oCustActions:getPageCustomAction(1).
IF oPageCustomAction <> ? THEN
oPageCustomAction:set("visible",

...

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.

// Retira a Ação Padrão de "Excluir" da Tabela    
oCustActions:setAction("remove",
MétodoDescriçãoExemplo

setAction ( pCodAction , pCodValue )

Parâmetros:

  • pCodAction (CHARACTER): Código da Ação;
  • pCodValue: Valor da Ação, usar uma das opções:
    • pCodURL (CHARACTER): Valor da URL a ser executada pela Ação;
    • pCodValue (LOGICAL): Valor da Ação.

Retorno (LOGICAL): Indicativo se foi possível incluir/alterar a Ação.

Inclui ou Altera uma Ação Padrão.
               
FALSE).

addPageCustomAction ( pNumType , pCodLabel , pCodAddress [ , pCodIcon ] )

getActionCharacter ( pCodAction )

getActionLogical ( pCodAction )

Parâmetros:

  • pCodAction (CHARACTER): Código pNumType: Tipo da Ação.

Retorno (CHARACTER,LOGICAL): Valor da Ação.

Retorna o valor de uma Ação Padrão.
  • , 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 Ação;
  • pCodAddress (CHARACTER): Endereço da Ação que será executada;
  • pCodIcon (CHARACTER): Ícone da Ação, é opcional.

Retorno (JsonObject): Ação Customizada de Página Incluída.

Incluir uma nova Ação Customizada na Página.
Exemplo1:
oCustActions:addPageCustomAction(CustomActions:TYPE_ENDPOINT,
// Faz a Ação Padrão de Visualizar abrir a tela de Edição
oCustActions:setAction("detail",
oCustActions:getActionCharacter("edit")).

removeAction ( pCodAction )

Parâmetros:

  • pCodAction (CHARACTER): Código da Ação.

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").
              "Atz Dados",
"http://server01:3000/atzDados").

Exemplo2:
oCustActions:addPageCustomAction(CustomActions:TYPE_ROUTE,
"Google",
"http://www.google.com",
"po-icon po-icon-device-desktop").

removePageCustomAction ( pIdAction )

Parâmetros:

  • pIdAction:

getActions ( )

Retorno (JsonObject): Ações padrões.

retorna um JsonObject que representa as Ação Padrão.

setPageCustomActionProperty ( pIdAction , pCodProperty , pCodValue )

Parâmetros:

  • pIdAction: Identificador da Ação, usar uma das opções:
    • pCodLabel (CHARACTER): Label da Ação;
    • pNumIndex (INTEGER): Posição da Ação dentro da Lista de Ações.
  • pCodProperty (CHARACTER): Propriedade que deve ser alterada;
  • pCodValue (CHARACTER,INTEGER,DECIMAL,LOGICAL): Novo valor
    • .

Retorno (LOGICAL): Indicativo se foi possível alterar remover a propriedadeAção.

Altera Remove uma propriedade de uma Ação Customizada de Página.
Exemplo1:// Inclui o icone de Refresh na Ação Customizada "Atz Dados" da Pagina
oCustActions:setPageCustomActionPropertyremovePageCustomAction("Atz Dados",
"icon",
"po-icon po-icon po-icon-refresh").Doctos").

Exemplo2:
oCustActions:removePageCustomAction(3).

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.
oPageCustomActions = oCustActions:getPageCustomActions().
... Faz algo com a informação

setTableCustomActionProperty ( pIdAction , pCodProperty , pCodValue )

Parâmetros:

  • pIdAction: Identificador da Ação, usar uma

getPageCustomActionPropertyCharacter ( pIdAction , pCodProperty )

getPageCustomActionPropertyInteger ( pIdAction , pCodProperty )

getPageCustomActionPropertyDecimal ( pIdAction , pCodProperty )

getPageCustomActionPropertyLogical ( pIdAction , pCodProperty )

Parâmetros:

  • pIdAction: Identificador da Ação, usar uma das opções:
    • pCodLabel (CHARACTER): Label da Ação;
    • pNumIndex (INTEGER): Posição da Ação dentro da Lista de Ações.
  • pCodProperty (CHARACTER): Propriedade .
Retorno
  • que deve ser alterada;
  • pCodValue (CHARACTER,INTEGER,DECIMAL,LOGICAL):
Valor da Propriedade.
  • Novo valor.

Retorno (LOGICAL): Indicativo se foi possível alterar a propriedade.

Altera Retorna o valor de uma propriedade de uma Ação Customizada de PáginaTabela.

getPageCustomAction ( pIdAction )

Parâmetros
Exemplo1:
  • pIdAction: Identificador da Ação, usar uma das opções:
    • pCodLabel (CHARACTER): Label da Ação;
    • pNumIndex (INTEGER): Posição da Ação dentro da Lista de Ações.

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", 
oCustActions:setTableCustomActionProperty("Atz Dados",
"http://newserver:8080/customer").

addPageCustomAction ( pNumType , pCodLabel , pCodAddress [ , pCodIcon ] )

Parâmetros:

  • pNumType: Tipo da Ação, 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 Ação;
  • pCodAddress (CHARACTER): Endereço da Ação que será executada;
  • pCodIcon (CHARACTER): Ícone da Ação, é opcional.

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
// uma EndPoint
oCustActions:addPageCustomAction(CustomActions:TYPE_ENDPOINT,
"icon",
"po-icon po-icon po-icon-refresh").

Exemplo2:
oCustActions:setTableCustomActionProperty(2,
"Atz Dados"visible",
"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"). FALSE).

getTableCustomActionPropertyCharacter ( pIdAction , pCodProperty )

getTableCustomActionPropertyInteger ( pIdAction , pCodProperty )

getTableCustomActionPropertyDecimal ( pIdAction , pCodProperty )

getTableCustomActionPropertyLogical ( pIdAction , pCodProperty )

Parâmetros:

  • pIdAction: Identificador

removePageCustomAction ( pIdAction )

Parâmetros:

  • pIdAction: Identificador da Ação, usar uma das opções:
    • pCodLabel (CHARACTER): Label da Ação;
    • pNumIndex (INTEGER): Posição da Ação dentro da Lista de Ações.
  • pCodProperty: Propriedade.

Retorno (CHARACTER,INTEGER,DECIMAL,LOGICAL): Indicativo se foi possível remover a Ação.Valor da Propriedade.

Retorna o valor de uma propriedade de Remove uma Ação Customizada de PáginaTabela.
Exemplo1:
ASSIGN vURL =
oCustActions:getTableCustomActionPropertyCharacter("Docto",
"url").
... Faz algo com a informação

Exemplo2:
ASSIGN vVisible =
oCustActions:getTableCustomActionPropertyLogical(1,
"visible").
... Faz algo com a informação

getTableCustomAction ( pIdAction )

Parâmetros:

  • pIdAction
// 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:

  • pIdAction: Identificador da Ação, usar uma das opções:
    • pCodLabel (CHARACTER): Label da Ação;
    • pNumIndex (INTEGER): Posição da Ação dentro da Lista de Ações.
  • pCodProperty (CHARACTER): Propriedade que deve ser alterada;
  • pCodValue (CHARACTER,INTEGER,DECIMAL,LOGICAL): Novo valor.

Retorno (LOGICALJsonObject): Indicativo se foi possível alterar a propriedade.Uma Ação Customizada de Tabela.

Retorna um JsonObject que representa uma Altera uma propriedade de uma Ação Customizada de Tabela.
Exemplo1:
DEF VAR oTableCustomAction AS JsonObject NO-UNDO.
oTableCustomAction =
oCustActions:getTableCustomAction("Docto").
IF oTableCustomAction <> ? THEN
oTableCustomAction:set("action",
"http://server:8080/doc").

Exemplo2:
DEF VAR oTableCustomAction AS JsonObject NO-UNDO.
oTableCustomAction =
oCustActions:getTableCustomAction(1).
IF oTableCustomAction <> ? THEN
oTableCustomAction:set("visible",
FALSE).

addTableCustomAction ( pNumType , pCodLabel , pCodAddress [ , pCodIcon ] [ , pConcatKeys ] )

Parâmetros:

  • pNumType: Tipo

getTableCustomActionPropertyCharacter ( pIdAction , pCodProperty )

getTableCustomActionPropertyInteger ( pIdAction , pCodProperty )

getTableCustomActionPropertyDecimal ( pIdAction , pCodProperty )

getTableCustomActionPropertyLogical ( pIdAction , pCodProperty )

Parâmetros:

  • pIdAction: Identificador da Ação, usar uma das opções:
    • pCodLabel (CHARACTER): Label da Ação;
    • pNumIndex (INTEGER): Posição da Ação dentro da Lista de Ações.
  • pCodProperty: Propriedade.

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:

  • pIdAction: Identificador da Ação, 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 Ação;pNumIndex
  • pCodAddress (INTEGERCHARACTER): Posição Endereço da Ação dentro da Lista de Açõesque será executada;
  • pCodIcon (CHARACTER): Ícone da Ação, é opcional;
  • pConcatKeys (LOGICAL): Indica se deve ser acrescentada a propriedade "concatKeys" na Ação, é opcional.

Retorno (JsonObject): Uma Ação Customizada de Tabela Incluída.

Retorna um JsonObject que representa Incluir uma nova Ação Customizada de na Tabela.

addTableCustomAction ( pNumType , pCodLabel , pCodAddress [ , pCodIcon ] [ , pConcatKeys ] )

Parâmetros
Exemplo1:
pNumType: Tipo da Ação, usar uma das opções:
oCustActions:addTableCustomAction(CustomActions:TYPE_ENDPOINT
- para chamada ao BackEnd;
  • CustomActions:TYPE_ROUTE - para chamada de uma Rota (URL).
  • pCodLabel (CHARACTER): Label da Ação;
  • pCodAddress (CHARACTER): Endereço da Ação que será executada;
  • pCodIcon (CHARACTER): Ícone da Ação, é opcional;
  • pConcatKeys (LOGICAL): Indica se deve ser acrescentada a propriedade "concatKeys" na Ação, é opcional.
  • Retorno (JsonObject): Ação Customizada de Tabela Incluída.

    Incluir uma nova Ação Customizada na Tabela.
    ,
    "Bloqueia",
    "http://server01:3000/block").

    Exemplo2:
    oCustActions:addTableCustomAction(CustomActions:TYPE_ROUTE,
    "Det Adicional",
    "http://newserver:8080/dts/customer/detail",
    "po-icon po-icon po-icon-refresh").

    Exemplo3:// Inclui uma nova Ação Customizada no Tabela chamada "Bloqueia" que chama
    // uma EndPoint
    oCustActions:addTableCustomAction(CustomActions:TYPE_ENDPOINT,
    "Bloqueia",
    "Copiar",
    "http://server01server:3000/block/dts/customer/copy",
    "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"TRUE).

    removeTableCustomAction ( pIdAction )

    Parâmetros:

    • pIdAction: Identificador da Ação, usar uma das opções:
      • pCodLabel (CHARACTER): Label da Ação;
      • pNumIndex (INTEGER): Posição da Ação dentro da Lista de Ações.

    Retorno (LOGICAL): Indicativo se foi possível remover a Ação.

    Remove uma Ação Customizada de Tabela.
    Exemplo1:
    oCustActions:removeTableCustomAction("Relacto").

    Exemplo2:
    oCustActions:removeTableCustomAction(2).

    getTableCustomActions ( )

    Retorno (JsonArray): Ações Customizadas de Tabela.

    // Elimina a Ação Customizada chamada "Relacto" da Pagina
    oCustActions:removeTableCustomAction("Relacto").
    Retorna a lista de Ações Customizadas de Tabela.
    DEFINE VARIABLE oTableCustomActions AS JsonArray NO-UNDO.
    oTableCustomActions = oCustActions:getTableCustomActions().
    ... Faz algo com a informação

    getTableCustomActions ( )

    Retorno (JsonArray): Ações Customizadas de Tabela.

    Retorna a lista de Ações Customizadas de Tabela.

    getServerAddress ( pIsExt )

    Parâmetros:

    • 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.

    Retorna o Endereço onde o Datasul está hospedado.o Datasul está hospedado.
    Exemplo1:
    DEFINE VARIABLE vServer AS CHARACTER NO-UNDO.
    ASSIGN vServer = oCustActions:getServerAddress(FALSE).
    ... Faz algo com a informação

    Exemplo2:
    DEFINE VARIABLE vServerExt AS CHARACTER NO-UNDO.
    ASSIGN vServerExt = oCustActions:getServerAddress(TRUE).
    ... Faz algo com a informação

    e.CustomRecords
    Âncora
    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.retornado apenas um.


    MétodoDescriçãoExemplo

    getEntityKeyCharacter ( )

    getEntityKeyInteger ( )

    Retorno (CHARACTER,INTEGER): Chave do registro.

    Retorna a chave do Registro na manipulação do Metadata (Alteração, Detalhe).
    Exemplo1:
    DEFINE VARIABLE vCodPais AS CHARACTER NO-UNDO.
    ASSIGN vCodPais = oCustRecords:getEntityKeyCharacter().
    ... Faz algo com a informação

    Exemplo2:
    DEFINE VARIABLE vIdCliente AS INTEGER NO-UNDO.
    ASSIGN vIdCliente = oCustRecords:getEntityKeyInteger().
    .. Faz algo com a informação
    MétodoDescriçãoExemplo

    getEntityKeyCharacter ( )

    getEntityKeyInteger ( )

    Retorno (CHARACTER,INTEGER): Chave do registro.

    Retorna a chave do Registro na manipulação do Metadata (Alteração, Detalhe).

    updateRecords ( pProg , pPiName )

    Parâmetros:

    • pProg (HANDLE): Handle do programa UPC;
    • pPiName (CHARACTER): Nome da PI que será executada a cada registro dos dados. Ela deve receber como parâmetro um JsonObject que representa o registro, exemplo:

      DEF INPUT PARAM oItem AS JsonObject NO-UNDO.

    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").
    // 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", FIND minha-tabela WHERE
    minha-tabela.cod-cliente = oItem:getCharacter("userCode")).
    // Altera o conteúdo da coluna "Nome", concatenado: "- Alterado"
    oItem:SET("userName", oItem:getCharacter("userName") + " - Alterado"
    NO-LOCK NO-ERROR.
    IF AVAIL minha-tabela THEN
    oItem:ADD("myInform", minha-tabela.cod-minha-info).
    END PROCEDURE.

    f.CustomMessages
    Âncora
    CustomMessages
    CustomMessages

    Classe utilizada para criação de mensagens que de erro que serão enviadas para a tela HTML.


    MétodoDescriçãoExemplo

    createMessageError ( pMsgNumber , pMsgDescription , pMsgHelp )

    Parâmetros:

    • 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.

    Cria uma mensagem do tipo ERROR para enviar ao FrontEnd.
    //
    DEF 
    Valida
    VAR 
    se
    vName 
    o
    AS 
    campo "Caminho completo do executável GZIP" foi
    // informado, se não foi, retorna uma mensagem de Erro
    ASSIGN vValorAtual
    CHARACTER NO-UNDO.

    ASSIGN vName = oCustFields:getFieldValueCharacter("
    execGZIPProgram
    customerName").
     


    IF
    vValorAtual
    vName = "" OR 
    vValorAtual
    vName = ? 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
    "Nome 
    !
    OBRIGATÓRIO"
    ).
    ,
    //
     
    Indica
     
    que
     
    não
     
    deve
     
    ser
     
    Salvo a Alteração
    "O nome do 
    Registro
    IF
    cliente 
    vValorAtual
    é 
    =
    obrigatório 
    "" OR vValorAtual = ? THEN
    !").
    RETURN "NOK".
    END.

    04.EXEMPLOS DA UTILIZAÇÃO DAS CLASSES
    Âncora
    exemplos
    exemplos

    ...

    Bloco de código
    languagetext
    titleExemplo UPC
    linenumberstrue
    // 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", " que chama uma Rota
    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".

    ...