Árvore de páginas

Versões comparadas

Chave

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

...

Bloco de código
languagetext
titleExemplo utilização
linenumberstrue
// Indica ao programa onde estão as Classes
USING com.totvs.framework.po.*.

// Define a variável que irá representar a Classe
DEF VAR oCustFields AS CustomFields NO-UNDO.

// Instância a Classe passando o ponto que será customizado (evento) e Json de informações recebido na UPC
oCustFields = NEW CustomFields(CustomOrig:ORIG_METADATA, jsonIO).

// Tela Editar: Alterar o valor da coluna "Variação máxima data emissão" para "888" (Aba: Digitação/Geração)

DELETE OBJECT oCustFields NO-ERROR.

...

Bloco de código
languagetext
titleExemplo UPC
linenumberstrue
USING PROGRESS.json.ObjectModel.*.
USING com.totvs.framework.po.*.

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.
   
DEF NEW GLOBAL SHARED VAR v_cod_usuar_corren AS CHARACTER FORMAT "x(12)":U LABEL "Usuário Corrente" COLUMN-LABEL "Usuário Corrente" NO-UNDO.

IF v_cod_usuar_corren <> "super" THEN RETURN.

IF jsonIO = ? THEN DO:
    MESSAGE "AVILA - jsonIO inválido".
    RETURN "NOK".
END.

DEF VAR v_log_mark      AS LOGICAL   NO-UNDO.
DEF VAR v_cod_caminho   AS CHARACTER NO-UNDO.
DEF VAR v_cod_cam_ajust AS CHARACTER NO-UNDO.

DEF VAR oCustPages   AS CustomPages    NO-UNDO.
DEF VAR oCustFields  AS CustomFields   NO-UNDO.
DEF VAR oCustActions AS CustomActions  NO-UNDO.
DEF VAR oCustRecords AS CustomRecords  NO-UNDO.
DEF VAR oCustMsgs    AS CustomMessages NO-UNDO.

DEF VAR oFields AS JsonArray  NO-UNDO.
DEF VAR oField  AS JsonObject NO-UNDO.
DEF VAR oAction AS JsonObject NO-UNDO.

// Evento de Busca do Metadados da Tela de Lista
IF pEndPoint = "getMetaData" AND pEvent = "list" THEN DO:

    oCustPages   = NEW CustomPages(CustomOrig:ORIG_METADATA,   jsonIO).
    oCustFields  = NEW CustomFields(CustomOrig:ORIG_METADATA,  jsonIO).
    oCustActions = NEW CustomActions(CustomOrig:ORIG_METADATA, jsonIO).

    // Tela de Lista: Alterar o Título da Página
    oCustPages:setPageTitle(oCustPages:getPageTitle() + " - ALTERADO").
   
    // Tela de Lista: Se estiver salvando o Filtro, esconde o geranciador de Colunas
    IF oCustPages:getPagePropertyLogical("keepfilters") THEN
        oCustPages:setPageProperty("hideColumnsManager", TRUE).
        
    // Tela de Lista: Alterar o label da coluna "FIFO" para "FIFO-ALT"
    oCustFields:setFieldLabel("enableFIFOInPurchaseReq", "FIFO-ALT").
        
    // Tela de Lista: Incluir uma coluna chamada: "Cópia Usuário" com o valor da coluna "Usuário"
    ASSIGN oField = oCustFields:addField("userCopy", "Cópia Usuário", FieldType:STRING).
    IF oField <> ? THEN
        oField:ADD("allowColumnsManager", TRUE).
        
    // Tela e Lista: Retira a o Ação de "Excluir" da Tabela    
    oCustActions:setAction("remove", FALSE).
      
    // Tela de Lista: Retira a Ação de "Cópia"
    oCustActions:removeAction("duplicate").
    
    // Tela de Lista: Faz o Ação de Visualizar abrir a tela de Edição
    oCustActions:setAction("detail", oCustActions:getActionCharacter("edit")).
    
    // Tela de Lista: Incluir uma nova opção no Pagina chamada "EndPoint" que chama uma EndPoint
    oCustActions:addPageCustomAction(CustomActions:TYPE_ENDPOINT, "Endpoint", "http://localhost:3000/page").
    
    // Tela de Lista: Incluir uma nova opção no Pagina chamada "Rota" que chama uma Rota
    oCustActions:addPageCustomAction(CustomActions:TYPE_ROUTE, "Rota", "http://www.google.com", "po-icon po-icon-device-desktop").
    
    // Tela de Lista: Incluir o icone de Monitor na Ação "Endpoint" da Pagina
    oCustActions:setPageCustomActionProperty("Endpoint", "icon", "po-icon po-icon-device-desktop").
    
    // Tela de Lista: Alterar o Endereço da Ação "Endpoint" da Pagina, incluíndo um "2" no final
    oAction = oCustActions:getPageCustomAction(1).
    IF oAction <> ? THEN
        oAction:set("action", oCustActions:getPageCustomActionPropertyCharacter("Endpoint", "action") + "2").
    
    // Testa de Lista: Elimina a Ação de Rota da Pagina
    oCustActions:removePageCustomAction("ROTA").

    // Tela de Lista: Incluir uma nova opção no Tabela chamada "EndPoint" que chama uma EndPoint
    oCustActions:addTableCustomAction(CustomActions:TYPE_ENDPOINT, "Endpoint", "http://localhost:3000/table").
    
    // Tela de Lista: Incluir uma nova opção no Tabela chamada "EndPoint2" que chama uma EndPoint do Datasul
    oCustActions:addTableCustomAction(CustomActions:TYPE_ENDPOINT, "Endpoint2", oCustActions:getServerAddress(FALSE) + "\api\fin\v1\customer").
    
    // Tela de Lista: Incluir uma nova opção no Tabela chamada "Rota" que chama uma Rota
    oCustActions:addTableCustomAction(CustomActions:TYPE_ROUTE, "Rota", "http://www.google.com").
    
    // Tela de Lista: Incluir uma nova opção no Tabela chamada "Rota2" que chama uma Rota
    oCustActions:addTableCustomAction(CustomActions:TYPE_ROUTE, "Rota2", "http://www.google.com", "po-icon po-icon-device-desktop").
    
    // Tela de Lista: Incluir o icone de Monitor na Ação "Endpoint" da Tabela
    oCustActions:setTableCustomActionProperty("Endpoint", "icon", "po-icon po-icon-device-desktop").
    
    // Tela de Lista: Alterar o Endereço da Ação "Endpoint" da Table, incluíndo um "2" no final
    oAction = oCustActions:getTableCustomAction(1).
    IF oAction <> ? THEN
        oAction:set("action", oCustActions:getTableCustomActionPropertyCharacter("Endpoint", "action") + "2").
    
    // Testa de Lista: Elimina a Ação de Rota2 da Pagina
    oCustActions:removeTableCustomAction("Rota2").

    // oCustActions:getActions()
    // oCustActions:getPageCustomActions()
    // oCustActions:getTableCustomActions()
    
    // oCustRecords:getEntityKeyCharacter()
    // oCustRecords:getEntityKeyInteger()
    
    DELETE OBJECT oCustPages   NO-ERROR.
    DELETE OBJECT oCustFields  NO-ERROR.
    DELETE OBJECT oCustActions NO-ERROR.
END.

// Evento de Busca do Metadados da Tela de Novo/Editar
IF pEndPoint = "getMetaData" AND (pEvent = "new" OR pEvent = "edit") THEN DO:

    oCustFields = NEW CustomFields(CustomOrig:ORIG_METADATA, jsonIO).

    // Tela Novo/Editar: Desabilitar o campo "Atualizar com erro de duplicata" (Aba: Atualização recebimento fiscal)
    oCustFields:setDisableField("updatesWithDuplicateError", "fieldsUpdateFiscalConfigurations").
    
    // Tela Novo/Editar: Habilitar o campo "Unidade negócio" (Aba: Digitação/Geração)
    oCustFields:setEnableField("enableBusinessUnit", "fieldsTypingEnableDisable").

    // Tela Novo/Editar: Esconder o campo "Desconto item" (Aba: Digitação/Geração)
    oCustFields:setHideField("itemDiscount", "fieldsTypingEnableDisable").

    // Tela Novo/Editar: Mostrar um campo "Geração nota crédito a pagar" (Aba: Digitação/Geração)
    oCustFields:setShowField("creditNoteGeneration", "fieldsTypingEnableDisable").

    // Tela Novo/Editar: Para o campo "Sequência dos itens" mostrar "Ligado/Desligado" ao invés de "Ativado/Desativado"
    IF oCustFields:getFieldPropertyCharacter("enableSequence", "type", "fieldsTypingEnableDisable") = "boolean" THEN DO:
        oCustFields:setFieldProperty("enableSequence", "booleanTrue",  "Ligado",    "fieldsTypingEnableDisable").
        oCustFields:setFieldProperty("enableSequence", "booleanFalse", "Desligado", "fieldsTypingEnableDisable").
    END.
    
    // Tela Novo/Editar: Pegua a quantidades de campos do agrupador "Habitar/Desabilitar Campos" e joga no label o campo "Sequência dos itens"
    ASSIGN oFields = oCustFields:getFields("fieldsTypingEnableDisable").
    IF oFields <> ? THEN DO:
        oField = oCustFields:getField("enableSequence", "fieldsTypingEnableDisable").
        IF oField <> ? THEN
            oField:SET("label", "Sequência dos itens (" + string(oFields:LENGTH) + ")").
    END.
 
    // Tela Novo/Editar: Colocar o Campo "Estado (UF)" depois do campo "Baixa estoque" (Aba: Digitação/Geração)
    oCustFields:changeFieldOrder("enableState", "enableStockMovement", "fieldsTypingEnableDisable").
    //oCustFields:changeFieldOrder("enableState", YES, "fieldsTypingEnableDisable"). // primeiro
    //oCustFields:changeFieldOrder("enableState",  NO, "fieldsTypingEnableDisable"). // último
 
    // Tela Novo/Editar: Ao alterar o campo "Caminho completo do executável GZIP" (Aba: Digitação/Geração):
    // - Muda o conteúdo para minísculo
    // - Retira os acentos
    // - Se retirar os acentos, muda o label para "Caminho completo do executável GZIP (AJUST)"
    oCustFields:setFieldValidate("execGZIPProgram", pAPI, "fieldsTypingConfigurations").
    //oCustFields:setFieldValidateCustom("execGZIPProgram", "/api/rep/v1/userParameters/validateField", "fieldsTypingConfigurations").
 
    // Tela Novo/Editar: Ao alterar o campo “Código tributação ICMS” (Aba: Digitação/Geração): 
    // - Se "sim": desabilita o campo “Percentual redução ICMS” e muda o campo "Alíquota ICMS" para "sim", 
    // - Se "não": faz ao contrário
    oCustFields:addValidateFields("enableICMSTaxationCode").

    DELETE OBJECT oCustFields NO-ERROR.
END.

// Evento de Busca dos Registros da Tela de Lista
IF pEndPoint = "findAll" AND pEvent = "findAll" THEN DO:

    oCustRecords = NEW CustomRecords(CustomOrig:ORIG_GET_ALL, jsonIO).
    
    // Tela de Lista: Incluir uma coluna chamada: "Cópia Usuário" com o valor da coluna "Usuário"
    // Tela de Lista: Alterar o conteúdo da coluna "Nome", concatenado: "- Alterado"
    oCustRecords:updateRecords(THIS-PROCEDURE, "pi_altera_registros").

    DELETE OBJECT oCustRecords NO-ERROR.
END.

PROCEDURE pi_altera_registros:
    DEF INPUT PARAM oItem AS JsonObject NO-UNDO.

    oItem:ADD("userCopy", oItem:getCharacter("userCode")).
    
    oItem:SET("userName", oItem:getCharacter("userName") + " - Alterado").
END PROCEDURE.

// Evento de Busca de Um Registro da tela de Edição
IF pEndPoint = "findById" AND pEvent = "findById" THEN DO:

    oCustFields = NEW CustomFields(CustomOrig:ORIG_GET_RECORD, jsonIO).

    // Tela Editar: Alterar o valor da coluna "Variação máxima data emissão" para "888" (Aba: Digitação/Geração)
    oCustFields:setFieldValue("variationIssuing", 888).

    DELETE OBJECT oCustFields NO-ERROR.
END.

// Evento de Alteração de Formulário
IF pEndPoint = "validateForm" AND pEvent = "validateForm" THEN DO:

    oCustFields = NEW CustomFields(CustomOrig:ORIG_VLD_FORM, jsonIO).

    // Tela Novo/Editar: Ao alterar o campo “Código tributação ICMS” (Aba: Digitação/Geração): 
    // - Se "sim": desabilita o campo “Percentual redução ICMS” e muda o campo "Alíquota ICMS" para "sim", 
    // - Se "não": faz ao contrário
    IF oCustFields:isChangedField("enableICMSTaxationCode") THEN DO:

        ASSIGN v_log_mark = oCustFields:getFieldValueLogical("enableICMSTaxationCode").
        
        IF v_log_mark <> ? THEN DO:
            oCustFields:setFieldProperty("enableICMSReductionPercentage", "disabled", v_log_mark).
              
            oCustFields:setFieldValue("enableICMSRate", v_log_mark).
        END.
    END.

    // oCustFields:getReturnRoot().
    // oCustFields:getFieldValues().
    
    DELETE OBJECT oCustFields NO-ERROR.
END.

// Evento de Alteração de Campo
IF pEndPoint = "validateField" AND pEvent = "validateField" THEN DO:

    oCustFields = NEW CustomFields(CustomOrig:ORIG_VLD_FIELD, jsonIO).

    // Tela Novo/Editar: Ao alterar o campo "Caminho completo do executável GZIP" (Aba: Digitação/Geração):
    // - Muda o conteúdo para minísculo
    // - Retira os acentos
    // - Se retirar os acentos, muda o label para "Caminho completo do executável GZIP (AJUST)"
    IF oCustFields:isChangedField("execGZIPProgram") THEN DO:

        ASSIGN v_cod_caminho = oCustFields:getFieldValueCharacter("execGZIPProgram").

        IF v_cod_caminho <> ? THEN DO:
            ASSIGN v_cod_cam_ajust = LC(v_cod_caminho)
                   v_cod_cam_ajust = REPLACE(v_cod_cam_ajust, "á", "a")
                   v_cod_cam_ajust = REPLACE(v_cod_cam_ajust, "é", "e")
                   v_cod_cam_ajust = REPLACE(v_cod_cam_ajust, "í", "i")
                   v_cod_cam_ajust = REPLACE(v_cod_cam_ajust, "ó", "o")
                   v_cod_cam_ajust = REPLACE(v_cod_cam_ajust, "ú", "u")
                   v_cod_cam_ajust = REPLACE(v_cod_cam_ajust, "ã", "a")
                   v_cod_cam_ajust = REPLACE(v_cod_cam_ajust, "õ", "o")
                   v_cod_cam_ajust = REPLACE(v_cod_cam_ajust, "ç", "c").

            IF NOT v_cod_cam_ajust MATCHES(v_cod_caminho) THEN
                oCustFields:setFieldLabel("execGZIPProgram", "Caminho completo do executável GZIP (AJUST)").
            ELSE
                oCustFields:setFieldLabel("execGZIPProgram", "Caminho completo do executável GZIP").

            oCustFields:setFieldValue("execGZIPProgram", v_cod_cam_ajust).
        END.
    END.

    DELETE OBJECT oCustFields NO-ERROR.
END.

// Evento de Alteração de Registro
IF pEndPoint = "update" AND pEvent = "beforeUpdate" THEN DO:

    oCustFields = NEW CustomFields(CustomOrig:ORIG_UPDATE_RECORD, jsonIO).
    oCustMsgs   = NEW CustomMessages(CustomOrig:ORIG_UPDATE_RECORD, jsonIO).

    // Tela Editar: Valida se o campo "Caminho completo do executável GZIP" foi informado, se não foi, apresenta uma mensagem de Erro
    IF oCustFields:getFieldValueCharacter("execGZIPProgram") = "" OR oCustFields:getFieldValueCharacter("execGZIPProgram") = ? THEN DO:
        jsonIO = oCustMsgs:createMessageError(1, "Caminho completo do executável GZIP OBRIGATÓRIO", "O campo 'Caminho completo do executável GZIP' deve ser informado, não pode ser branco !!!!").
        DELETE OBJECT oCustFields NO-ERROR.
        DELETE OBJECT oCustMsgs   NO-ERROR.
        RETURN "NOK".
    END.
    
    DELETE OBJECT oCustFields NO-ERROR.
    DELETE OBJECT oCustMsgs   NO-ERROR.
END.

RETURN "OK".

...