VISIÓN GENERAL

Ejemplo de ejecución automática de las operaciones de inclusión, borrado y modificación de títulos por pagar.

Aviso

La función Fa050Inclu() no puede utilizarse en personalizaciones, por tratarse de una función de menú existen algunas dependencias de variables privates declaradas en FINA050.

EJEMPLO DE UTILIZACIÓN


Inclusión
#INCLUDE "Protheus.ch"
USER FUNCTION FIN050INC()
	LOCAL aArray := {}
	 
	PRIVATE lMsErroAuto := .F.
	
	//Estructura para PA ( Pago anticipado )
	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 } }

	//Estructura para otros 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 - Inclusión, 4 - Modificación, 5 - Borrado
	 
	 
	If lMsErroAuto
		MostraErro()
	Else
		Alert("¡Título incluido con éxito!")
	Endif
	 
Return
Modificación
#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") //Modificación debe tener el registro SE2 marcado
			 
	MsExecAuto( { |x,y,z| FINA050(x,y,z)}, aArray,, 4)  // 3 - Inclusión, 4 - Modificación, 5 - Borrado

	If lMsErroAuto
		MostraErro()
	Else
		Alert("¡Título modificado con éxito!")
	Endif

Return
Borrado
#INCLUDE "Protheus.ch"
USER FUNCTION FIN050EXC()
	LOCAL aArray := {}
	 
	PRIVATE lMsErroAuto := .F.
	 
	DbSelectArea("SE2") 
	DbSetOrder(1)
	DbSeek(xFilial("SE2")+"PAG"+"0001     "+" "+"NF") //Borrado debe tener el registro SE2 marcado
									
	aArray := { { "E2_PREFIXO" , SE2->E2_PREFIXO , NIL },;
					{ "E2_NUM"     , SE2->E2_NUM     , NIL } }
	 
	MsExecAuto( { |x,y,z| FINA050(x,y,z)}, aArray,, 5)  // 3 - Inclusión, 4 - Modificación, 5 - Borrado
	 
	If lMsErroAuto
		MostraErro()
	Else
		Alert("¡Borrado del título con éxito!")
	Endif
 
Return

Inclusión con VA (Valores adicionales)
#INCLUDE "Protheus.ch"
USER FUNCTION FIN050VA()
    LOCAL aArray := {}
    LOCAL nOpc   := 3 // 3-Inclusión, 4 Modificación
 
    // Datos del valor adicional.
    LOCAL aVAAut     := {}
    LOCAL cValAce1   := "000001"  // Código del Va
    LOCAL nValAce1   := 200       // Valor del 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 con valor adicional
    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 con éxito!")
        Else
            Alert("¡Título modificado con éxito!")
        EndIf
    Endif
  
Return
Inclusión con PA con 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 - Inclusión
   
    If lMsErroAuto
        MostraErro()
    Else
        Alert("¡Título incluido con éxito!")
    Endif
  
Return
Inclusión con prorrateo de proyecto (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" , "Inclusión de proyecto" , NIL },;
	{"AUTRATAFR" , aInfProj ,Nil } }
 
	MsExecAuto( { |x,y,z| FINA050(x,y,z)}, aGrvSe2,, 3) // 3 - Inclusión, 4 - Modificación, 5 - Borrado
 
	If lMsErroAuto
		MostraErro()
	Else
		Conout("¡Título incluido con éxito!")
	Endif
 
Return
Código de retención de títulos por pagar
#INCLUDE "Protheus.ch"

/*	Si hubiera cualquier tipo de operación que involucre la inclusión de valor en el campo
	E2_CODRET, es necesario utilizar la función SetFuName("FINA050") antes de ejecutar MSExecAuto(),
	pues existe una validación en X3_VALID -(EXISTCPO("SX5","37"+M->E2_CODRET) .AND. Iif(FUNNAME() $ "FINA050|FINA750",FA050Natur(),.T.))
	de este campo que solamente realizará el cálculo del impuesto por código de retención si FunName() estuviera contenido en "FINA050".	*/

USER FUNCTION F050CODRET()
	LOCAL aArray := {}
	 
	PRIVATE lMsErroAuto := .F.
	
	//Estructura para otros 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 - Inclusión, 4 - Modificación, 5 - Borrado
	 
	 
	If lMsErroAuto
		MostraErro()
	Else
		Alert("¡Título incluido con éxito!")
	Endif
	 
Return
Sustitución de título provisional
#INCLUDE "Protheus.ch"
USER FUNCTION FIN050SUBST()
	LOCAL aArray := {}
	LOCAL aAuxTitPrv := {}
	LOCAL aTitPrv    := {}
	 
	PRIVATE lMsErroAuto := .F.
	
	//Título efectivo
	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 } }
		
	//El array aAuxTitPrv debe contener la información de los títulos provisionales que se substituirán
	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 sustituido con éxito!")
	Endif
	 
Return
Inclusión con complemento de título
#INCLUDE "Protheus.ch"

/*
Exemplo: 
	Inclusión de título por pagar con cálculo de IR, completando la 
	modalidad de rentabilidad (FKF_NATREN) en el complemento del título (FKF).
*/
User Function A050Inc1()

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

	PRIVATE lMsErroAuto := .F.

    //Datos de 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 }}

	//Datos de FKF - Complemento del título
	aFKF := { { "FKF_NATREN", cNatRen , NIL }}

	aAdd(aArray, {"AUTCMTIT", aFKF, Nil})
    
    MsExecAuto( { |x,y,z| FINA050(x,y,z)}, aArray,, 3)  // 3 - Inclusión, 4 - Modificación, 5 - Borrado
      
    If lMsErroAuto
        MostraErro()
    Else
        Conout("¡Título incluido con éxito!")
    Endif

Return

OTRAS INFORMACIONES

No hay.

ASSUNTOS RELACIONADOS

Documento de referencia FINA050