Page tree

DT_Ponto_de_Entrada_gravação_de_dados_complementares_tabelas_FK´s_SE5


Table Filter Plugin license is not active, please generate a trial license or purchase the product.

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. O momento da sua execução será definido conforme o ID de execução utilizado. 

Para gravação dos registros auxiliares (multa, juros, desconto) esse ponto de entrada não irá atender, PARA GRAVAÇÃO NA TABELA SE5. 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

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 cIdModel == 'FK1DETAIL'
oSubFK1:SetValue( "FK1_HISTOR", 'PONTO DE ENTRADA EM MVC' )
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

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