// Indica ao programa onde estão as Classes
USING PROGRESS.json.ObjectModel.*. // Classes da Progress
USING com.totvs.framework.po.*. // Classes do Utilitário
// Parâmetros recebidos pela UPC
DEF INPUT PARAM pEndPoint AS CHAR NO-UNDO.
DEF INPUT PARAM pEvent AS CHAR NO-UNDO.
DEF INPUT PARAM pAPI AS CHAR NO-UNDO.
DEF INPUT-OUTPUT PARAM jsonIO AS JsonObject NO-UNDO.
// Define as variáveis que irão representar as Classes
DEF VAR oCustPages AS CustomPages NO-UNDO.
DEF VAR oCustFields AS CustomFields NO-UNDO.
DEF VAR oCustActions AS CustomActions NO-UNDO.
DEF VAR oCustRecords AS CustomRecords NO-UNDO.
DEF VAR oCustMsgs AS CustomMessages NO-UNDO.
// Variáveis axuliáresauxiliares
DEF VAR oFields AS JsonArray NO-UNDO.
DEF VAR oField AS JsonObject NO-UNDO.
DEF VAR oAction AS JsonObject NO-UNDO.
DEF VAR vValorAtual AS CHARACTER NO-UNDO.
DEF VAR vValorAjust AS CHARACTER NO-UNDO.
DEF VAR vValorMark AS LOGICAL NO-UNDO.
// Evento de Busca do Metadata da Tela de Lista
IF pEndPoint = "getMetaData" AND pEvent = "list" THEN DO:
// Instância as Classes necessárias
oCustPages = NEW CustomPages(CustomOrig:ORIG_METADATA, jsonIO).
oCustFields = NEW CustomFields(CustomOrig:ORIG_METADATA, jsonIO).
oCustActions = NEW CustomActions(CustomOrig:ORIG_METADATA, jsonIO).
// Altera o Título da Página
oCustPages:setPageTitle(oCustPages:getPageTitle() + " - ALTERADO").
// Altera a propriedade para salvar o Filtro da busca Avançada
oCustPages:setPageProperty("keepfilters", TRUE).
// Altera o label da coluna "FIFO" para "FIFO-ALT"
oCustFields:setFieldLabel("enableFIFOInPurchaseReq", "FIFO-ALT").
// Inclui uma coluna chamada: "Cópia Usuário"
ASSIGN oField = oCustFields:addField("userCopy", "Cópia Usuário", FieldType:STRING).
// Inclui a nova coluna no Gerenciador de Colunas
IF oField <> ? THEN
oField:ADD("allowColumnsManager", TRUE).
// Retira a Ação Padrão de "Excluir" da Tabela
oCustActions:setAction("remove", FALSE).
// Retira a Ação Padrão de "Cópia" da Tabela
oCustActions:removeAction("duplicate").
// Faz a Ação Padrão de Visualizar abrir a tela de Edição
oCustActions:setAction("detail", oCustActions:getActionCharacter("edit")).
// Inclui uma nova Ação Customizada no Pagina chamada "Atz Dados" que chama uma EndPoint
oCustActions:addPageCustomAction(CustomActions:TYPE_ENDPOINT, "Atz Dados", "http://server01:3000/atzDados").
// Inclui uma nova Ação Customizada no Pagina chamada "Google" que chama uma Rota
oCustActions:addPageCustomAction(CustomActions:TYPE_ROUTE, "Google", "http://www.google.com",
"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". |