01. DADOS GERAIS
Produto: |
TOTVS RH
|
---|---|
Linha de Produto: | Linha Protheus |
Segmento: | RH |
Módulo: |
TOTVS RH (Linha Protheus) - Gestão de Pessoas (SIGAGPE)
|
Função: | N/A |
País: | Brasil |
Ticket: | 15432763 |
Requisito/Story/Issue (informe o requisito relacionado) : | DRHROTPRT-7725 |
02. SITUAÇÃO/REQUISITO
Necessidade de documentação para criação e uso de pontos de entrada na rotina de Histórico Salarial, rotina desenvolvida utilizando-se o conceito de MVC.
03. SOLUÇÃO
A ideia de ponto de entrada, para fontes desenvolvidos utilizando-se o conceito de MVC e suas classes, é um pouco diferente dos fontes desenvolvidos de maneira convencional.
Nos fontes convencionais temos um "nome" para cada ponto de entrada criado, por exemplo, o GPALTSAL utilizado nas rotinas GPEA010 (Cadastro de Funcionários), GPEM690 (Dissídio Retroativo), CSAM080 (Atualização do Aumento Programado), GPER200 (Aumento Salarial) e TRMA100 (Cadastro de Funcionários acessado pelo módulo Cargos e Salários e Arquitetura Organizacional)
Em MVC, não é desta forma, em MVC criamos um único ponto de entrada e este é chamado em vários momentos dentro do fonte desenvolvido.
Este ponto de entrada único deve ser uma User Function e ter como nome o ID do Modelo de Dados (Model) do Fonte.
Peguemos de exemplo o próprio fonte de Histórico Salarial - GPEA250. neste fonte o ID do Modelo de Dados ( definido na funcão ModelDef() ) é MODELGPEA250.
O ponto de entrada criado recebe via parâmetro um vetor (PARAMIXB) com informações referentes ao fonte. Estes parâmetros variam para cada situação, em comum todos eles tem os 3 primeiros elementos que são listados abaixo, no quadro seguinte existe a relação de parâmetros de cada ID:
Posições do array de parâmetros comuns a todos os IDs:
Posição | Tipo | Descrição |
1 | O | Objeto do formulário ou do modelo, conforme o caso |
2 | C | ID do local de execução do ponto de entrada |
3 | C | ID do formulário |
Como já foi dito, o ponto de entrada é chamado em vários momentos dentro do fonte, na 2ª posição da estrutura do vetor é passado um ID que identifica qual é este momento. Ela pode ter como conteúdo:
ID | Momento de Execução |
---|---|
MODELPRE | Antes da alteração de qualquer campo do modelo. 1 O Objeto do formulário ou do modelo, conforme o caso Retorno: |
MODELPOS | Na validação total do modelo. 1 O Objeto do formulário ou do modelo, conforme o caso Retorno: |
FORMPRE | Antes da alteração de qualquer campo do formulário. 1 O Objeto do formulário ou do modelo, conforme o caso Retorno: |
FORMPOS | Na validação total do formulário. 1 O Objeto do formulário ou do modelo, conforme o caso Retorno: |
FORMLINEPRE | Antes da alteração da linha do formulário FWFORMGRID. 1 O Objeto do formulário ou do modelo, conforme o caso Retorno: |
FORMLINEPOS | Na validação total da linha do formulário FWFORMGRID. 1 O Objeto do formulário ou do modelo, conforme o caso Retorno: |
MODELCOMMITTTS | Após a gravação total do modelo e dentro da transação. Parâmetros Recebidos: 1 O Objeto do formulário ou do modelo, conforme o caso Retorno: |
MODELCOMMITNTTS | Após a gravação total do modelo e fora da transação. Parâmetros Recebidos: 1 O Objeto do formulário ou do modelo, conforme o caso Retorno: |
FORMCOMMITTTSPRE | Antes da gravação da tabela do formulário. Parâmetros Recebidos: 1 O Objeto do formulário ou do modelo, conforme o caso Retorno: |
FORMCOMMITTTSPOS | Após a gravação da tabela do formulário. Parâmetros Recebidos: 1 O Objeto do formulário ou do modelo, conforme o caso Retorno: |
MODELCANCEL | No cancelamento do botão. Parâmetros Recebidos: 1 O Objeto do formulário ou do modelo, conforme o caso Retorno: |
BUTTONBAR | Para a inclusão de botões na ControlBar. Para criar os botões deve-se retornar um array bi-dimensional com a seguinte estrutura de cada item: 1 C Titulo para o botão Parâmetros Recebidos: 1 O Objeto do formulário ou do modelo, conforme o caso Retorno: |
Observações:
- Quando o modelo de dados possui vários componentes (por exemplo, vários FWFORMGRIDs), a 3ª posição do vetor trará o ID deste componente,
- Quando o tipo de retorno de um determinado momento de execução não for passado ou for passado com o tipo errado será exibida uma mensagem no console avisando sobre isso. Todos IDs que esperam retorno devem ser tratado no ponto de entrada
- Ao se escrever um fonte em MVC que será uma User Function, cuidado ao se atribuir o ID do modelo de dados (Model), pois ele não poderá ter o mesmo nome do fonte. Se o fonte tiver o nome FONT001, o ID do Modelo de Dados (Model) não poderá ser também FONT001,
Levando os pontos acima em consideração, segue um exemplo de uso de ponto de entrada para execução após a gravação dos dados nas tabelas SR3/SR7:
#INCLUDE 'PROTHEUS.CH'
User Function MODELGPEA250()
Local aParam := PARAMIXB
Local xRet := .T.
Local oObj := ''
Local cIdPonto := ''
Local cIdModel := ''
Local lIsGrid := .F.
If aParam <> NIL
oObj := aParam[1]
cIdPonto := aParam[2]
cIdModel := aParam[3]
If cIdPonto == 'MODELCOMMITNTTS'
ApMsgInfo('Chamada apos gravacao SR3-SR7 - Similacao GPALTSAL')
EndIf
EndIf
Return xRet
04. DEMAIS INFORMAÇÕES
N/A
05. ASSUNTOS RELACIONADOS