Histórico da Página
DT_Ponto_de_Entrada_gravação_de_dados_complementares_tabelas_FK´s_SE5
Pivot Table | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||
|
Descrição
A partir da versão 12, os pontos de entrada que manipulavam a tabela SE5 serão descontinuados devido à alteração das rotinas de gravação da SE5 para MVC e gravação das tabelas da família FK.
No padrão MVC temos um único ponto de entrada e este é chamado em vários momentos dentro do fonte padrão. Sua ação será determinada pelo seu ID de execução.
FINM010 é o modelo de dados de Baixa a Receber, e, portanto, é o ponto de entrada usado por rotinas que realizam este tipo de operação. FINM020 é o modelo de dados de Baixa a Pagar, e, portanto, é o ponto de entrada usado por rotinas que realizam este tipo de operação.
O momento da sua execução será definido conforme o ID de execução utilizado.
Para gravação dos registros auxiliares (multa, juros, desconto) esses pontos de entrada não irão atender a GRAVAÇÃO NA TABELA SE5. Ele atende somente a gravação do registro principal da baixa. Deverá ser analisado pontualmente qual o ponto de entrada que irá atender a necessidade desejada.
Para mais informações sobre a reestruturação da tabelas SE5, que será descontinuada, verificar o link abaixo.
Documentação sobre pontos de entrada em MVC:
http://tdn.totvs.com/display/public/mp/Pontos+de+Entrada+para+fontes+Advpl+desenvolvidos+utilizando+o+conceito+MVC
Documentação sobre reestruturação da tabela SE5:
http://tdn.totvs.com/pages/releaseview.action?pageId=183730415
Documentação sobre Pontos de Entrada para gravação de dados complementares da baixa:
SE5FI070 - Gravação de dados complementares da tabela SE5 CR
F80GRVFK - Ponto de entrada para gravação de dados complementares da baixa
SE5FI080 - Ponto de entrada para gravação de dados complementares da baixa
F080ACONT - Complemento de baixa a pagar
SE3F070 - Tratamento Complementar da Baixa a Receber
Exemplo de gravação das FK´s e SE5:
Importante: Caso deseje utilizar este exemplo para Movimentos Bancários à Pagar, basta substituir o sub-modelo e o prefixo dos campos da tabela FK1 (FK1DETAIL, FK1_TPDOC) pelo sub-modelo e o prefixo dos campos da tabela FK2 (FK2DETAIL, FK2_TPDOC)
#Include 'Protheus.ch'
#Include 'FWMVCDEF.ch'
User Function FINM010()
Local aParam := PARAMIXB
Local lRet := .T.
Local oSubFK1 := ''
Local cIdPonto := ''
Local cIdModel := ''
If aParam <> NIL
oSubFK1 := aParam[1] //Objeto do formulário ou do modelo, conforme o caso
cIdPonto := aParam[2] //ID do local de execução do ponto de entrada
cIdModel := aParam[3] //ID do formulário
If cIdPonto == 'FORMPOS'
If cIdPonto == 'FORMPOS'
If cIdModel == 'FK1DETAIL'
oSubFK1:SetValue( "FK1_HISTOR", 'PONTO DE ENTRADA EM MVC' )
EndIf
If cIdModel == 'FK5DETAIL'
oSubFK1:SetValue( "FK5_HISTOR", 'PONTO DE ENTRADA EM MVC' )
EndIf
EndIf
EndIf
EndIf
Return lRet
Os dados gravados nas tabelas FK´s são replicados automaticamente para a tabela SE5, caso seja necessário realizar a gravação de um campo da SE5 que não possui um campo correspondente nas tabelas FK´s, será necessário informar o atributo "E5_CAMPOS" do modelo de dados para realizar a gravação na tabela SE5. Os campos informados neste atributo serão gravados diretamente na SE5.
Exemplo:
#Include 'Protheus.ch'
#Include 'FWMVCDEF.ch'
User Function FINM010()
Local aParam := PARAMIXB
Local lRet := .T.
Local oModParam := ''
Local oModelBxR := ''
Local cIdPonto := ''
Local cIdModel := ''
Local oFK8 := Nil
Local oFKA := Nil
Local cCamposE5 := ''
If aParam <> NIL
oModParam := aParam[1] //Objeto do formulário ou do modelo, conforme o caso
cIdPonto := aParam[2] //ID do local de execução do ponto de entrada
cIdModel := aParam[3] //ID do formulário
If cIdPonto == 'FORMPOS'
If cIdModel == 'FK5DETAIL'
oModelBxR := oModParam:GetModel()
oFK8 := oModelBxR:GetModel( "FK8DETAIL" )
oFKA := oModelBxR:GetModel( "FKADETAIL" )
cCamposE5 := AllTrim(oModelBxR:GetValue('MASTER', 'E5_CAMPOS'))
If !Empty(cCamposE5)
cCamposE5 := Left( cCamposE5, Len(cCamposE5) -1 )
cCamposE5 += ",{ 'E5_CCD', '000000001'}"
cCamposE5 += ",{ 'E5_CCC', '000000002'}}"
Else
cCamposE5 := "{{ 'E5_CCD', '000000001'}"
cCamposE5 += ",{ 'E5_CCC', '000000002'}}"
EndIf
oModelBxR:SetValue( "MASTER","E5_CAMPOS",cCamposE5 ) // Informando o atributo "E5_CAMPOS"
oFK8:SetValue( "FK8_CCD", '000000001' )
oFK8:SetValue( "FK8_CCC", '000000002' )
oFK8:SetValue( "FK8_IDMOV", oFKA:GetValue('FKA_IDORIG') )
EndIf
EndIf
EndIf
Return lRet
Exemplo do uso do ponto de entrada alterando as tabelas FK5(Movimento Bancário) e FK6(Valores acessorios - Multa, juros, desconto, etc)
User Function FINM010()
Local aParam := PARAMIXB
Local lRet := .T.
Local oSubModel := ''
Local cIdPonto := ''
Local cIdModel := ''
Local cCamposE5 := ''
Local oModelBx := ''
If aParam <> NIL
oSubModel := aParam[1] //Objeto do formulário ou do modelo, conforme o caso
cIdPonto := aParam[2] //ID do local de execução do ponto de entrada
cIdModel := aParam[3] //ID do formulário
If cIdPonto == 'FORMPOS' // Na validação total do formulário.
If cIdModel == 'FK1DETAIL' //Validação do formulário FK1
If "VL" $ oSubModel:GetValue("FK1_TPDOC") //Condição para alteração de gravação
oSubModel:SetValue( "FK1_HISTOR", 'P.E. EM MVC,BAIXA FK1' ) // Novos valores
EndIF
ElseIf cIdModel == 'FK6DETAIL' //Validação do formulário FK6
If "DC" $ oSubModel:GetValue("FK6_TPDOC")
oSubModel:SetValue( "FK6_HISTOR", 'P.E. EM MVC,DESCONTO' )
EndIf
ElseIf cIdModel == 'FK5DETAIL' //Validação do formulário FK5
If "VL" $ oSubModel:GetValue("FK5_TPDOC") //Condição para alteração de gravação
oSubModel:SetValue( "FK5_HISTOR", 'P.E. EM MVC,BAIXA FK5' ) // Novos valores
EndIF
EndIf
EndIf
EndIf
Return lRet