Árvore de páginas

VISÃO GERAL

Exemplo de execução automáticas das operações de inclusão, exclusão e alteração de títulos a pagar.

Aviso

A função Fa050Inclu() não pode ser usada em customizações por se tratar de um função de menu existem algumas dependências de variáveis privates declaradas no FINA050.

EXEMPLO DE UTILIZAÇÃO


Inclusão
#INCLUDE "Protheus.ch"
USER FUNCTION FIN050INC()
	LOCAL aArray := {}
	 
	PRIVATE lMsErroAuto := .F.
	
	//Estrutura para PA ( Pagamento Antecipado )
	aArray := { { "E2_PREFIXO"  , "PAG"             , NIL },;
				{ "E2_NUM"      , "0001"            , NIL },;
				{ "E2_TIPO"     , "PA"              , NIL },;
				{ "E2_NATUREZ"  , "001"             , NIL },;
				{ "E2_FORNECE"  , "0001"            , NIL },;
				{ "E2_EMISSAO"  , CtoD("17/02/2012"), NIL },;
				{ "E2_VENCTO"   , CtoD("17/02/2012"), NIL },;
				{ "E2_VENCREA"  , CtoD("17/02/2012"), NIL },;
				{ "E2_VALOR"    , 5000              , NIL },;
				{ "AUTBANCO"    , "001"				, NIL },;
				{ "AUTAGENCIA"  , "1234"			, NIL },;
				{ "AUTCONTA"    , "123456"			, NIL } }

	//Estrutura para demais títulos
	aArray := { { "E2_PREFIXO"  , "PAG"             , NIL },;
				{ "E2_NUM"      , "0001"            , NIL },;
				{ "E2_TIPO"     , "NF"              , NIL },;
				{ "E2_NATUREZ"  , "001"             , NIL },;
				{ "E2_FORNECE"  , "0001"            , NIL },;
				{ "E2_EMISSAO"  , CtoD("17/02/2012"), NIL },;
				{ "E2_VENCTO"   , CtoD("17/02/2012"), NIL },;
				{ "E2_VENCREA"  , CtoD("17/02/2012"), NIL },;
				{ "E2_VALOR"    , 5000              , NIL } }
	 
	MsExecAuto( { |x,y,z| FINA050(x,y,z)}, aArray,, 3)  // 3 - Inclusao, 4 - Alteração, 5 - Exclusão
	 
	 
	If lMsErroAuto
		MostraErro()
	Else
		Alert("Título incluído com sucesso!")
	Endif
	 
Return
Alteração
#INCLUDE "Protheus.ch"
USER FUNCTION FIN050ALT()
	LOCAL aArray := {}
	 
	PRIVATE lMsErroAuto := .F.

	aArray := { { "E2_PREFIXO"  , "PAG"             , NIL },;
				{ "E2_NUM"      , "0001"            , NIL },;
				{ "E2_VALOR"    , 2000              , NIL } }  

	DbSelectArea("SE2") 
	DbSetOrder(1)
	DbSeek(xFilial("SE2")+"PAG"+"0001     "+" "+"NF") //Alteração deve ter o registro SE2 posicionado
			 
	MsExecAuto( { |x,y,z| FINA050(x,y,z)}, aArray,, 4)  // 3 - Inclusao, 4 - Alteração, 5 - Exclusão

	If lMsErroAuto
		MostraErro()
	Else
		Alert("Título alterado com sucesso!")
	Endif

Return
Exclusão
#INCLUDE "Protheus.ch"
USER FUNCTION FIN050EXC()
	LOCAL aArray := {}
	 
	PRIVATE lMsErroAuto := .F.
	 
	DbSelectArea("SE2") 
	DbSetOrder(1)
	DbSeek(xFilial("SE2")+"PAG"+"0001     "+" "+"NF") //Exclusão deve ter o registro SE2 posicionado
									
	aArray := { { "E2_PREFIXO" , SE2->E2_PREFIXO , NIL },;
					{ "E2_NUM"     , SE2->E2_NUM     , NIL } }
	 
	MsExecAuto( { |x,y,z| FINA050(x,y,z)}, aArray,, 5)  // 3 - Inclusao, 4 - Alteração, 5 - Exclusão
	 
	If lMsErroAuto
		MostraErro()
	Else
		Alert("Exclusão do Título com sucesso!")
	Endif
 
Return

Inclusão com VA (Valores acessorios)
#INCLUDE "Protheus.ch"
USER FUNCTION FIN050VA()
    LOCAL aArray := {}
    LOCAL nOpc   := 3 // 3-Inclusão, 4 Alteração
 
    // Dados do valor acessório.
    LOCAL aVAAut     := {}
    LOCAL cValAce1   := "000001"  // Código do Va
    LOCAL nValAce1   := 200       // Valor do Va
    LOCAL cValAce2   := "000012"
    LOCAL nValAce2   := 4
 
    PRIVATE lMsErroAuto := .F.
  
    aArray := { { "E2_PREFIXO"  , "PAG"             , NIL },;
              { "E2_NUM"      , "0001"            , NIL },;
              { "E2_TIPO"     , "NF"              , NIL },;
              { "E2_NATUREZ"  , "001"             , NIL },;
              { "E2_FORNECE"  , "0001"            , NIL },;
              { "E2_EMISSAO"  , CtoD("17/02/2012"), NIL },;
              { "E2_VENCTO"   , CtoD("17/02/2012"), NIL },;
              { "E2_VENCREA"  , CtoD("17/02/2012"), NIL },;
              { "E2_VALOR"    , 5000              , NIL } }
  
    // Array com valor acessório
    aAdd(aVAAut, {cValAce1, nValAce1})
    aAdd(aVAAut, {cValAce2, nValAce2})
 
    MsExecAuto( { |a,b,c,d,e,f,g,h,i,j,k,l| FINA050(a, b, c, d, e, f, g, h, i, j, k, l)}, aArray,, nOpc,,,,,,,,, aVAAut)  
  
    If lMsErroAuto
        MostraErro()
    Else
        If nOpc == 3       
            Alert("Título incluido com sucesso!")
        Else
            Alert("Título alterado com sucesso!")
        EndIf
    Endif
  
Return
Inclusão com PA com cheque
#INCLUDE "Protheus.ch"
USER FUNCTION FIN050INCPA()
    LOCAL aArray := {}
  
    PRIVATE lMsErroAuto := .F.
  
    aArray := { { "E2_PREFIXO", "PAG"             , NIL },;
              { "E2_NUM"      , "0001"            , NIL },;
              { "E2_TIPO"     , "PA"              , NIL },;
              { "E2_NATUREZ"  , "001"             , NIL },;
              { "E2_FORNECE"  , "0001"            , NIL },;
              { "E2_EMISSAO"  , CtoD("17/02/2012"), NIL },;
              { "E2_VENCTO"   , CtoD("17/02/2012"), NIL },;
              { "E2_VENCREA"  , CtoD("17/02/2012"), NIL },;
              { "E2_VALOR"    , 5000              , NIL },;
              { "AUTBANCO"    , "FIN"             , NIL },;
              { "AUTAGENCIA"  , "00015"           , NIL },;
              { "AUTCONTA"    , "0000000001"      , NIL },;
              { "AUTMOED"     , "1"               , NIL },;
              { "AUTCHEQUE"   , "124569"          , NIL }}
  
    MsExecAuto( { |x,y,z| FINA050(x,y,z)}, aArray,, 3)  // 3 - Inclusão
   
    If lMsErroAuto
        MostraErro()
    Else
        Alert("Título incluído com sucesso!")
    Endif
  
Return
Inclusão com rateio de projeto (PMS)
USER FUNCTION F050IPMS()
	Local cPref := "FIN"
	Local cNum := "210408001"
	Local cPar := "1"
	Local cTipo := "NF"
	Local cNaturez := "FGRV01"
	Local cFornec := "FGRV04"
	Local cLoja := "01"
	Local nValor := 1000
	Local aGrvSe2 := {}
	Local aInfProj := {}
	Local aInfAFR := {}
 
	PRIVATE lMsErroAuto := .F.
 
	PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "FIN" TABLES "SE2","SE5","SA2","AFR","AF9","AF8"
	 
	aAdd(aInfAFR, {"AFR_PROJET", PadR("PMSU000023", TamSX3("AF9_PROJET")[1]), Nil})
	aAdd(aInfAFR, {"AFR_TAREFA", "01.02", Nil})
	aAdd(aInfAFR, {"AFR_TIPOD", PadR("0004", TamSx3("AFR_TIPOD")[1]), Nil})
	aAdd(aInfAFR, {"AFR_VALOR1", nValor, Nil})
	aAdd(aInfAFR, {"AFR_REVISA", StrZero(4, TamSX3("AFR_REVISA")[1]), Nil})
	aAdd(aInfAFR, {"AFR_PREFIX", cPref, Nil})
	aAdd(aInfAFR, {"AFR_NUM", cNum, Nil})
	aAdd(aInfAFR, {"AFR_PARCEL", cPar, Nil})
	aAdd(aInfAFR, {"AFR_TIPO", cTipo, Nil})
	aAdd(aInfAFR, {"AFR_FORNEC", cFornec, Nil})
	aAdd(aInfAFR, {"AFR_LOJA", cLoja, Nil})
	aAdd(aInfAFR, {"AFR_DATA", Date(), Nil})
	aAdd(aInfAFR, {"AFR_VENREA", Date(), Nil})
	aAdd(aInfProj, aInfAFR)
 
	aGrvSe2 := { { "E2_PREFIXO" , cPref , NIL },;
	{ "E2_NUM" , cNum , NIL },;
	{ "E2_TIPO" , cTipo , NIL },;
	{ "E2_NATUREZ" , cNaturez , NIL },;
	{ "E2_FORNECE" , cFornec , NIL },;
	{ "E2_LOJA" , cLoja , NIL },;
	{ "E2_EMISSAO" , Date() , NIL },;
	{ "E2_VENCTO" , Date() , NIL },;
	{ "E2_VENCREA" , Date() , NIL },;
	{ "E2_VALOR" , nValor , NIL },;
	{ "E2_PROJPMS" , "2" , NIL },;
	{ "E2_HIST" , "Inclusão de Projeto" , NIL },;
	{"AUTRATAFR" , aInfProj ,Nil } }
 
	MsExecAuto( { |x,y,z| FINA050(x,y,z)}, aGrvSe2,, 3) // 3 - Inclusao, 4 - Alteração, 5 - Exclusão
 
	If lMsErroAuto
		MostraErro()
	Else
		Conout("Título incluído com sucesso!")
	Endif
 
Return
Código de retenção de títulos a pagar
#INCLUDE "Protheus.ch"

/*	Quando houver qualquer tipo de operação que envolva a inserção de valor no campo
	E2_CODRET, é necessário utilizar a função SetFuName("FINA050") antes de executar a MSExecAuto(),
	pois existe uma validação no X3_VALID -(EXISTCPO("SX5","37"+M->E2_CODRET) .AND. Iif(FUNNAME() $ "FINA050|FINA750",FA050Natur(),.T.))
	deste campo que so ira realizar o calculo do imposto por código de retenção se o FunName() estiver contido em "FINA050".	*/

USER FUNCTION F050CODRET()
	LOCAL aArray := {}
	 
	PRIVATE lMsErroAuto := .F.
	
	//Estrutura para demais títulos
	aArray := { { "E2_PREFIXO"  , "PAG"             , NIL },;
				{ "E2_NUM"      , "0001"            , NIL },;
				{ "E2_TIPO"     , "NF"              , NIL },;
				{ "E2_NATUREZ"  , "001"             , NIL },;
				{ "E2_FORNECE"  , "0001"            , NIL },;
				{ "E2_EMISSAO"  , CtoD("17/02/2012"), NIL },;
				{ "E2_VENCTO"   , CtoD("17/02/2012"), NIL },;
				{ "E2_VENCREA"  , CtoD("17/02/2012"), NIL },;
				{ "E2_VALOR"    , 5000              , NIL },;
 				{ "E2_DIRF"     , "1"				, NIL },;
				{ "E2_CODRET"   , "3208"            , NIL }}
	
	SetFunName("FINA050") 
	MsExecAuto( { |x,y,z| FINA050(x,y,z)}, aArray,, 3)  // 3 - Inclusao, 4 - Alteração, 5 - Exclusão
	 
	 
	If lMsErroAuto
		MostraErro()
	Else
		Alert("Título incluído com sucesso!")
	Endif
	 
Return
Substituição de titulo provisório
#INCLUDE "Protheus.ch"
USER FUNCTION FIN050SUBST()
	LOCAL aArray := {}
	LOCAL aAuxTitPrv := {}
	LOCAL aTitPrv    := {}
	 
	PRIVATE lMsErroAuto := .F.
	
	//Titulo efetivo
	aArray := { { "E2_PREFIXO"  , "DRG"             , NIL },;
				{ "E2_NUM"      , "VT002"            , NIL },;
				{ "E2_PARCELA"  , " "               , NIL },;
				{ "E2_TIPO"     , "NF"              , NIL },;
				{ "E2_NATUREZ"  , "001"             , NIL },;
				{ "E2_FORNECE"  , "001"            , NIL },;
				{ "E2_LOJA"     , "00"              , NIL },;
				{ "E2_EMISSAO"  , CtoD("27/10/2021"), NIL },;
				{ "E2_VENCTO"   , CtoD("27/10/2021"), NIL },;
				{ "E2_VENCREA"  , CtoD("27/10/2021"), NIL },;
				{ "E2_VALOR"    , 5000              , NIL } }
		
	//No array aAuxTitPrv devera conter as informações dos títulos provisórios que serão substituídos
	aAuxTitPrv := { { "E2_PREFIXO"          ,PadR("DRG",TamSx3("E2_PREFIXO")[1])  	, NIL },;
					{ "E2_NUM"              ,PadR("000000001",TamSx3("E2_NUM")[1])  , NIL },;
					{ "E2_PARCELA"          ,PadR("1",TamSx3("E2_PARCELA")[1])      , NIL },;
					{ "E2_TIPO"             ,PadR("PR ",TamSx3("E2_TIPO")[1])       , NIL },;
					{ "E2_FORNECE"          ,PadR("001",TamSx3("E2_FORNECE")[1])    , NIL },;
					{ "E2_LOJA"             ,PadR("00",TamSx3("E2_LOJA")[1])        , NIL }}
	
	aadd(aTitPrv, aAuxTitPrv)
		
	MsExecAuto({|a,b,c,d,e,f,g,h,i,j| FINA050(a,b,c,d,e,f,g,h,i,j)},aArray,,6,,,,,,aTitPrv)
	 
	 
	If lMsErroAuto
		MostraErro()
	Else
		Conout("Título substituído com sucesso!")
	Endif
	 
Return
Inclusão com Complemento de Título
#INCLUDE "Protheus.ch"

/*
Exemplo: 
	Inclusão de título a pagar com cálculo de IR, preenchendo a 
	natureza de rendimento (FKF_NATREN) no complemento do título (FKF).
*/
User Function A050Inc1()

    Local aArray  := {}
	Local aFKF    := {}
	Local cNatRen := "13002"      

	PRIVATE lMsErroAuto := .F.

    //Dados da SE2
    aArray := { { "E2_PREFIXO"  , "BOL"              , NIL },;
                { "E2_NUM"      , "BOL00110"         , NIL },;
                { "E2_TIPO"     , "BOL"              , NIL },;
                { "E2_NATUREZ"  , "RNF000002"        , NIL },;
                { "E2_FORNECE"  , "RNF017"           , NIL },;
                { "E2_LOJA"     , "01"               , NIL },;
                { "E2_EMISSAO"  , CtoD("09/02/2023") , NIL },;
                { "E2_VENCTO"   , CtoD("09/02/2023") , NIL },;
                { "E2_VENCREA"  , CtoD("09/02/2023") , NIL },;
                { "E2_VALOR"    , 5000               , NIL }}

	//Dados da FKF - Complemento do titulo
	aFKF := { { "FKF_NATREN", cNatRen , NIL }}

	aAdd(aArray, {"AUTCMTIT", aFKF, Nil})
    
    MsExecAuto( { |x,y,z| FINA050(x,y,z)}, aArray,, 3)  // 3 - Inclusao, 4 - Alteração, 5 - Exclusão
      
    If lMsErroAuto
        MostraErro()
    Else
        Conout("Titulo incluso com sucesso!")
    Endif

Return

DEMAIS INFORMAÇÕES

Não há.

ASSUNTOS RELACIONADOS

Documento de referencia FINA050