Árvore de páginas

DT_Ponto_de_Entrada_gravação_de_dados_complementares_tabelas_FK´s_SE5


Oops, it seems that you need to place a table or a macro generating a table within the Pivot Table macro.

The table is being loaded. Please wait for a bit ...

Linha de Produto:

Microsiga Protheus

Segmento:

Serviços

Módulo:

Financeiro

Ponto de Entrada:

FINM010, FINM020

Requisito (ISSUE):

DSERFINR-660

DSERFINR-2195

DSERFINP-1307

País(es):

Todos

Banco(s) de Dados:

Todos

Sistema(s) operacional(is):

Todos

Versões/Release:

12

Função:

FINM010, FINM020

Retorno:

lRet

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