CONTEÚDO
- Visão Geral
- Exemplo de utilização
- Referências
01. VISÃO GERAL
A rotina de Cálculo de Rescisões (GPEM040) possibilita a utilização dos pontos de entrada do padrão MVC. Além de alguns pontos de entrada específicos (GPESALAR, GPM040RA, GPM040AR, VLDTPRESP), pode ser utilizado o ponto de entrada genérico (GPEM040), onde é acionado em diversos pontos da rotina.
A seguir apresentaremos um exemplo do ponto de entrada GPEM040, onde podemos obter algumas informações da rotina em momentos diferente da execução da rotina de calculo de Rescisão:
02. EXEMPLO DE UTILIZAÇÃO
#include "Protheus.ch"
#include "FWMVCDEF.CH"
User Function GPEM040()
Local aParam := PARAMIXB
Local xRet := .T.
Local cIdPonto := ''
Local cIdModel := ''
Local lIsGrid := .F.
Local nLinha := 0
Local nQtdLinhas := 0
Local cMsg := ''
Local oObj := ''
/*
Exemplo de ponto de entrada genérico GPEM040
*/
If aParam <> NIL
oObj := aParam[1]
cIdPonto := aParam[2]
cIdModel := aParam[3]
lIsGrid := ( Len( aParam ) > 3 )
If cIdPonto == 'MODELPOS'
cModel := cIdModel+'_'+"MSRG" //Concatena o identificado do modelo com o identificador da tabela.
If oObj:GetModel(cModel):HasField('RG_DATAHOM') //Verifica se campo existe no modelo.
cDtHom := ""
If !Empty( oObj:GetValue(cModel,'RG_DATAHOM') ) //Conteudo do campo
cDtHom := Dtoc( oObj:GetValue(cModel,'RG_DATAHOM') ) //Conteudo do campo
EndIf
cMsg := 'O conteudo do campo RG_DATAHOM no MODELPOS = '+cDtHom + CRLF
cMsg += 'ID ' + cIdModel + CRLF
ApMsgInfo(cMsg)
EndIf
ElseIf cIdPonto == 'MODELPRE'
dDataHom := dDataPag := Ctod('')
aModels := OOBJ:AALLSUBMODELS
If ValType(aModels) == 'A' .And. Len(OOBJ:AALLSUBMODELS[1]:ADATAMODEL[1]) > 0
dDataHom := oObj:GetValue('GPEM040_MSRG','RG_DATAHOM')
If !Empty(dDataHom)
cMsg := 'Acessou o Modelo MODELPRE ' + CRLF
cMsg += 'ID '+ cIdModel + CRLF
cMsg += 'campo RG_DATAHOM = ' + dToc(dDataHom) + CRLF
ApMsgInfo(cMsg)
EndIf
EndIf
ElseIf cIdPonto == 'FORMLINEPRE'
If aParam[5] == 'DELETE'
If lIsGrid
nQtdLinhas := oObj:GetQtdLine()
nLinha := oObj:nLine
cMsg := 'Chamada na pre validação da linha do formulário (FORMLINEPRE).' + CRLF
cMsg += 'Onde esta se tentando deletar uma linha' + CRLF
cMsg += 'É um FORMGRID com ' + Alltrim( Str( nQtdLinhas ) ) +' linha(s).' + CRLF
cMsg += 'Posicionado na linha ' + Alltrim( Str( nLinha ) ) + CRLF
cMsg += 'ID ' + cIdModel + CRLF
ApMsgInfo(cMsg)
EndIf
EndIf
ElseIf cIdPonto == 'FORMLINEPOS'
If lIsGrid
nQtdLinhas := oObj:GetQtdLine()
nLinha := oObj:nLine
nPosPd := Ascan( oobj:aHeader, { |x| x[ 2 ] == "RR_PD" } )
nPosDataPag := Ascan( oobj:aHeader, { |x| x[ 2 ] == "RR_DATAPAG" } )
If nLinha > 0 .And. nPosDataPag > 0
cVerba := OOBJ:ADATAMODEL[nLinha][1][1][nPosPd]
dDataPag := OOBJ:ADATAMODEL[nLinha][1][1][nPosDataPag]
If !Empty(dDataPag)
cMsg := 'Chamada na validação da linha do formulário (FORMLINEPOS). ' + CRLF
cMsg += 'ID ' + cIdModel + CRLF
cMsg += ' É um FORMGRID com ' + Alltrim( Str( nQtdLinhas ) ) + ' linha(s). ' + CRLF
cMsg += 'Posicionado na linha ' + Alltrim( Str( nLinha ) ) +' ' + CRLF
cMsg += ' Verba: ' + cVerba + CRLF
cMsg += ' Data Pagamento: ' + dtoc(dDataPag) + CRLF
ApMsgInfo(cMsg)
EndIf
EndIf
EndIf
ElseIf cIdPonto == 'MODELCANCEL'
cMsg := 'Chamada no Botão Cancelar (MODELCANCEL).' + CRLF
ApMsgInfo(cMsg)
ElseIf cIdPonto == 'BUTTONBAR'
ApMsgInfo('Adicionando Botao na Barra de Botoes (BUTTONBAR).' + 'ID ' + cIdModel )
EndIf
EndIf
Return xRet