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.
#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
#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
#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
#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
#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
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
#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
#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
#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
No hay.
Documento de referencia FINA050