Árvore de páginas


CONTEÚDO

  1. Visão Geral
  2. Exemplo de utilização
  3. 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


03. Referências