Árvore de páginas


01. DADOS GERAIS

Produto:

Gestão Jurídica by Legal Desk

Linha de Produto:

Linha Protheus

Segmento:

Jurídico

Função:Clientes - JURA148
País:Brasil
Ticket:Não há
Requisito/Story/Issue:DJURFAT1-13461


02. PONTO DE ENTRADA

Descrição:

Este ponto de entrada permite incluir novas opções ao menu do cadastro de clientes.

Localização:

Atualizações - Cadastro - Clientes

Programa Fonte:

JURA148

Função:

MENUDEF

Parâmetros:

Nome

Tipo

Descrição

Obrigatório

PARAMIXBarray

Array com 3 posições ou mais se existir grid

Nome

Tipo

Descrição

PARAMIXB[1]Objeto

Objeto do formulário ou do modelo, conforme o caso

PARAMIXB[2]Caractere

ID do local de execução do ponto de entrada

PARAMIXB[3]Caractere

ID do formulário

Sim

*Conforme o ID do Local de Execução, podem existir mais parâmetros, favor verificar a documentação Pontos de Entrada para fontes Advpl desenvolvidos utilizando MVC

Retorno:Varia confirme o ID do Local de execução, favor verificar a documentação


03. EXEMPLO

#INCLUDE "PROTHEUS.CH"
#INCLUDE "PARMTYPE.CH"
#INCLUDE "FWMVCDEF.CH"


Static _aDadosAlt := {}

//-------------------------------------------------------------------
/*/{Protheus.doc} JURA148
Ponto de entrada MVC da rotina de Clientes

@param PARAMIXB, array      , Parametros do ponto de entrada MVC
       PARAMIXB[1], objeto  , Objeto do formulario ou do modelo, conforme o caso
       PARAMIXB[2], caracter, ID do local de execução do ponto de entrada
       PARAMIXB[3], caracter, ID do formulário

@author TOTVS
@since  28/07/2021
@obs    
/*/
//-------------------------------------------------------------------
User Function JURA148()
Local aParam     := PARAMIXB
Local oModel     := Nil
Local cIdPonto   := ""
Local cIdModel   := ""
Local xRetorno   := .T.
Local aDadCli    := {}
Local aFields    := {}
Local nX         := 0
Local cAliQry    := ""
Local cQuery     := ""
Local nPos       := 0
Local POSIDCAMPO := 3
Local POSVIRTUAL := 14
Local lNewRec    := .F. // Novo registro

  If ValType(aParam) == "A"
        oModel   := aParam[1]
        cIdPonto := aParam[2]
        cIdModel := aParam[3]

          If cIdPonto =='MENUDEF'
            /*===============================================================================

            Retorno
            [n][1] --> Título da rotina que será exibido no menu
            [n][2] --> Nome da função que será executada
            [n][3] --> Parâmetro reservado. Deve ser sempre 0 (zero)
            [n][4] --> Número da operação que a função executará. As alternativas são:
                        1=Pesquisa
                        2=Visualização
                        3=Inclusão
                        4=Alteração
                        5=Exclusão
                        6=Alteração sem a permissão para incluir novas linhas. É válido apenas para os objetos GetDados e GetDb.
            [n][5] -->  Parâmetro descontinuado.
            ===============================================================================*/
            xRetorno := {{"PE-J148Menu", "MsgInfo('Ponto de entrada do menu JURA148 ok!')", 0, 6, 0 , Nil}}

          ElseIf cIdPonto == '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
            2     C        ID do local de execução do ponto de entrada
            3     C        ID do formulário
            4     L        Se .T. indica novo registro (Inclusão) se .F. registro já existente (Alteração / Exclusão)
            */
                //GetAltClien - Capturar se o usuário confirmou a tela de replicação de dados
                //Confirmação da Alteração
                //Array dos dados alterados na tabela NUH, onde
                //01 - Nome do Campo
                //02 - Valor anterior
                //03 - Valor alterado
                aDadCli := GetAltClien()
                lNewRec := aParam[4]

                If cIdModel == "SA1MASTER" .And. !lNewRec
                    _aDadosAlt := {}
                    aFields    := oModel:GetStruct():GetFields()
                    For nX := 1 To Len(aFields)
                        //Precisa ver se o campo é virtual
                        If FieldGet(  FieldPosaFields[nX][ POSIDCAMPO ] ) ) != oModel:GetValueaFields[nX][ POSIDCAMPO ] ) .AND. !aFields[nX][ POSVIRTUAL ]
                            aAdd_aDadosAlt, { aFields[nX][POSIDCAMPO], FieldGetFieldPosaFields[nX][ POSIDCAMPO ] ) ), oModel:GetValueaFields[nX][ POSIDCAMPO ]) } )
                        EndIf

                    Next nX
                EndIf
        ElseIf cIdPonto == '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
            2     C        ID do local de execução do ponto de entrada
            3     C        ID do formulário
            */
            aDadCli := GetAltClien()
            If aDadCli[01]
                //Atualiza a natureza dos pagadores
                cAliQry := GetNextAlias()
                cQuery := " SELECT NXP.R_E_C_N_O_ NXPRECNO "
                cQuery +=   " FROM " + RetSqlName("NXP") + " NXP "
                cQuery +=  " WHERE NXP.D_E_L_E_T_ = ' ' "
                cQuery +=    " AND NXP.NXP_FILIAL = '" + xFilial("NXP") + "' "
                cQuery +=    " AND NXP.NXP_CLIPG  = '" + oModel:GetValue('SA1MASTER', 'A1_COD')  + "' "
                cQuery +=    " AND NXP.NXP_LOJAPG = '" + oModel:GetValue('SA1MASTER', 'A1_LOJA') + "' "

                cQuery := ChangeQuery(cQuery, .F.)

                dbUseArea(.T., "TOPCONN", TcGenQry(,, cQuery), cAliQry, .T., .T.)

                (cAliQry)->(dbGoTop())
                While !(cAliQry)->(EOF())
                    If (cAliQry)->NXPRECNO > 0
                        NXP->( dbGoTo( (cAliQry)->NXPRECNO ) )
                        RecLock'NXP', .F. )
                            If (nPos := aScan_aDadosAlt,{ | x | x[1] == 'A1_COND' } ) ) > 0 
                                NXP->NXP_CCDPGT := _aDadosAlt[nPos][3]
                            EndIf
                            If (nPos := aScan_aDadosAlt,{ | x | x[1] == 'A1_NATUREZ' } ) ) > 0
                                NXP->NXP_CNATPG := _aDadosAlt[nPos][3]
                            EndIf
                        NXP->(MsUnlock())
                    EndIf
                    (cAliQry)->(dbskip())
                End

                (cAliQry)->( dbCloseArea() )

                cQuery := " SELECT NXG.R_E_C_N_O_ NXGRECNO "
                cQuery +=   " FROM " + RetSqlName("NXG") + " NXG "
                cQuery +=  " WHERE NXG.D_E_L_E_T_ = ' ' "
                cQuery +=    " AND NXG.NXG_FILIAL = '" + xFilial("NXG") + "' "
                cQuery +=    " AND NXG.NXG_CLIPG  = '" + oModel:GetValue('SA1MASTER', 'A1_COD')  + "' "
                cQuery +=    " AND NXG.NXG_LOJAPG = '" + oModel:GetValue('SA1MASTER', 'A1_LOJA') + "' "
                cQuery +=    " AND NXG.NXG_CFATAD <> '' "
                cQuery +=    " AND NXG.NXG_CPREFT = '' "
                cQuery +=    " AND NXG.NXG_CFATUR = '' "

                cQuery := ChangeQuery(cQuery , .F.)

                dbUseArea(.T., "TOPCONN", TcGenQry(,, cQuery), cAliQry, .T., .T.)

                (cAliQry)->(dbGoTop())
                While !(cAliQry)->(EOF())
                    If (cAliQry)->NXGRECNO > 0
                        NXG->( dbGoTo( (cAliQry)->NXGRECNO ) )
                        RecLock'NXG', .F. )
                            NXG->NXG_CCDPGT := _aDadosAlt[nPos][3]
                        NXG->(MsUnlock())
                    EndIf
                    (cAliQry)->(dbskip())
                End

                (cAliQry)->( dbCloseArea() )

            EndIf
            _aDadosAlt := {}
        EndIf
    EndIf

Return xRetorno