DT_Ponto_de_Entrada_gravação_de_dados_complementares_tabelas_FK´s_SE5
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