Histórico da Página
...
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: |
| |||||||||||||||||||||||||||||
Retorno: |
|
03. EXEMPLO
#INCLUDE #INCLUDE "PROTHEUS.CH"
#INCLUDE #INCLUDE "FWMVCDEFPARMTYPE.CH"
#INCLUDE #INCLUDE "PARMTYPEFWMVCDEF.CH"
Static _aDadosAlt := {}
//-------------------------------------------------------------------
/*/{Protheus.doc} JURA148
Ponto de entrada MVC da rotina de Clientes para inclusão de opção no MenuDefPonto de entrada MVC da rotina de Clientes
@param PARAMIXB, array , Parâmetros do ponto de entrada MVC Parametros do ponto de entrada MVC
PARAMIXB[1], objeto , Objeto do formulário ou do modelo Objeto do formulario ou do modelo, conforme o caso
PARAMIXB[2], caracter, ID do local de execução do ponto de entrada ID do local de execução do ponto de entrada
PARAMIXB[3], caracter, ID do formulário
PARAMIXB[4], numérico, Número da Linha da FWFORMGRID
PARAMIXB[5], Ação da FWFORMGRID
PARAMIXB[6], Id do campo
@author TOTVS
@since 27@since 28/0107/2021
@obs https://tdntdninterno.totvs.com/pages/viewpagereleaseview.action?pageId=208345968631611846
/*/
//-------------------------------------------------------------------
User Function JURA148User Function JURA148()
Local aParam Local aParam := PARAMIXB
Local oObj Local oModel := Nil
Local cIdPonto := Nil""
Local cIdPonto Local cIdModel := ""
Local cIdModel
Local xRetorno := nil
Local aDadCli := {}
Local aFields := {}
Local nX := 0
Local cAliQry := ""
Local lIsGrid Local cQuery := .F.
Local xRetorno ""
Local nPos := 0
Local POSIDCAMPO := 3
Local POSVIRTUAL := 14
Local lNewRec := .TF.
If ValType // Novo registro
If ValType(aParam) == "A"
oObj oModel := aParam[1]
cIdPonto := aParam[2]
cIdModel := aParam[3]
lIsGrid := Len(aParam) > 3
If cIdPonto ==
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, 0, 6, 0 , Nil}}
EndIf
EndIf
Return xRetorno 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( FieldPos( aFields[nX][ POSIDCAMPO ] ) ) != oModel:GetValue( aFields[nX][ POSIDCAMPO ] ) .AND. !aFields[nX][ POSVIRTUAL ]
aAdd( _aDadosAlt, { aFields[nX][POSIDCAMPO], FieldGet( FieldPos( aFields[nX][ POSIDCAMPO ] ) ), oModel:GetValue( aFields[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] .And. (nPos := aScan( _aDadosAlt,{ | x | x[1] == 'A1_COND' } ) ) > 0
//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 += " AND NXP.NXP_CCDPGT = '" + _aDadosAlt[nPos][2] + "' "
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. )
NXP->NXP_CCDPGT := _aDadosAlt[nPos][3]
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 += " AND NXG.NXG_CCDPGT = '" + _aDadosAlt[nPos][2] + "' "
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
Templatedocumentos |
---|
HTML |
---|
<style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } .aui-tabs.horizontal-tabs>.tabs-menu>.menu-item.active-tab a::after { background: #FF9900; !important } .menu-item.active-tab { border-bottom: none !important; } </style> |