Regras
Esta solução está destinada para customizações onde a necessidade é a inclusão de novos campos específicos na parte inferior das telas. Caso o cliente opte por não desenvolver e queira contratar esse desenvolvimento, será necessário abrir chamado para o suporte.
Outros pontos de customizações diferentes desse padrão pode ser consultados através do manual de customizações.
Caso o cliente queira customizar alguma tela que não conste na relação acima citada, será necessário abrir chamado para o suporte. Assim como se o cliente queira customizar outras partes da tela, será necessário abrir chamado para o suporte.
Objetivo
Este documento tem o objetivo de apresentar o padrão que deverá ser utilizado para customização de campos na parte inferior das telas po-ui.
Esse padrão contempla cadastros (CRUDS), conforme lista de programas publicada , nas seguintes situações:
- Adição/edição de registros;
- Detalhe de registros.
Local dos fontes específicos e padrão de nomenclatura
Para tratar os campos customizáveis, os fontes específicos do cliente deverão ser armazenados no caminho 'hgp/custom/<nome_da_tela>'. Como exemplo para este documento, vamos utilizar a tela Beneficiário X Fator Multiplicador (hfp.benefMultiplierFactor):
Padrão de nomenclatura para o diretório específico e nome dos programas:
- O diretório onde são armazenados os fontes específicos deverá seguir o padrão '<módulo>.<nome técnico cadastrado no menu>'. Exemplo: hfp.benefMultiplierFactor, hvp.beneficiary, etc...;
- Os nomes dos programas específicos deverão ser precedidos pelo nome da aplicação separado por hífen + o sufixo referente a função do programa. O sufixos possíveis são:
- detail: programa chamado ao acessar a tela de detalhes do CRUD. Ele retornará os campos customizáveis com seus possíveis valores. Exemplo: benef-multiplier-factor-detail.p;
- edit: programa chamado ao acessar a tela de adição ou edição do CRUD. Exemplo: benef-multiplier-factor-edit.p;
- edit-validate: programa chamado para realizar a validação dos campos específicos do cliente. Exemplo: benef-multiplier-edit-validate.p;
- edit-save: programa chamado para realizar a gravação na base de dados dos campos específicos do cliente. Exemplo: benef-multiplier-edit-save.p.
Fluxo para busca e gravação dos campos customizáveis
No padrão denominado Custom Fields, o processo funciona da seguinte maneira:
- Ao abrir a tela de adição de registros, o sistema realiza uma chamada ao endpoint hgp/v1/customFields/<nome_da_tela>/<nome_programa_específico>/new/. Este endpoint será responsável por retornar os campos específicos do cliente. No exemplo utilizado neste documento, a chamada seria equivalente a hgp/v1/customFields/hfp.benefMultiplierFactor/benef-multiplier-factor-edit/new/;
- Ao acessar a tela de edição de registros, o sistema realiza uma chamada ao endpoint hgp/v1/customFields/<nome_da_tela>/<nome_programa_específico>/edit. Este endpoint será responsável por retornar os campos específicos do cliente. Exemplo: hgp/v1/customFields/hfp.benefMultiplierFactor/benef-multiplier-factor-edit/edit/;
- Ao acessar a tela de detalhes, o endpoint acessado será hgp/v1/customFields/<nome_da_tela>/<nome_programa_específico_detalhes>/. Este retornará os campos específicos bem como seus valores. Exemplo: hgp/v1/customFields/hfp.benefMultiplierFactor/benef-multiplier-factor-detail/
- Ao salvar um registro, o sistema realiza os seguintes passos:
- Realiza a chamada ao endpoint para validação dos campos customizáveis: hgp/v1/customFields/hfp.benefMultiplierFactor/benef-multiplier-factor-edit-validate/edit;
- Caso a validação dos campos específicos ocorra com sucesso, então o CRUD irá disparar o método insert ou update do produto padrão para salvar o registro em questão;
- Caso a gravação do registro padrão de produto ocorra com sucesso, então será disparado endpoint para gravação dos campos específicos: hgp/v1/customFields/hfp.benefMultiplierFactor/benef-multiplier-factor-edit-save/edit.
Forma de utilização:
Deverá ser criado um programa progress no seguinte diretório, conforme explicado anteriormente:
hgp\custom\"nomedomenu"\"nomedoprogramahtml".p(.r)
Exemplo:
hgp\custom\portalempresa\edit-beneficiary.p
Este programa deverá ter os métodos e parâmetros:
- getCustomFields
- Utilizado para buscar os campos que serão acrescentados no formulário e seus respectivos valores.
Parâmetros:
define input parameter pathParams as JsonArray no-undo./* Array contendo parâmetros de entrada */define output parameter tableforttCustomField./*Definido no item Tabelas Temporárias Utilizadas (hgp\bosau\bosau-custom.i)*/define output parameter tableforttCustomValue./*Definido no item Tabelas Temporárias Utilizadas (hgp\bosau\bosau-custom.i)*/define input-output parameter tableforrowErrors./*Definida através da include (rtp\rtrowerror.i)*/- Exemplo:
procedure getCustomFields:
define input parameter pathParams as JsonArray no-undo.define output parameter table for ttCustomField.define output parameter table for ttCustomValue.define input-output parameter table for rowErrors.
define variable cd-modalidade-aux as int no-undo.define variable nr-proposta-aux as int no-undo.define variable cd-usuario-aux as int no-undo.
assigncd-modalidade-aux = int(pathParams:getCharacter(3))nr-proposta-aux = int(pathParams:getCharacter(4))cd-usuario-aux = int(pathParams:getCharacter(5))no-error.
find first usuario where usuario.cd-modalidade = cd-modalidade-aux andusuario.nr-proposta = nr-proposta-aux andusuario.cd-usuario-aux = cd-usuario-aux no-lock no-error.
create ttCustomField.assignttCustomField.ds-type = "boolean"ttCustomField.ds-boolean-false = "Campo específico"ttCustomField.ds-boolean-true = "Campo específico"ttCustomField.lg-disabled = truettCustomField.ds-property = "u_log_1".
create ttCustomValue.assign ttCustomValue.ds-property = "u_log_1"ttCustomValue.lg-value = usuario.u-log-1.end.
Tabelas Temporárias Utilizadas:
|
