Línea de producto: | Microsiga Protheus® |
---|---|
Segmento: | Servicios |
Módulo: | SIGAFAT - Facturación |
Función: | FATA050 - Metas de venta |
Alcances: | Microsiga Protheus 12, Protheus 11 |
Versiones: | Microsiga Protheus 12, Protheus 11 |
Compatible países: | Todos |
Sistemas operativos: | Todos |
Compatible con las bases de datos: | Todas |
Nivel de acceso: | Nivel 1 (Acceso Clientes) |
Idiomas: | Todos |
Función utilizada para inclusión, modificación o borrado de Reglas de bonificación vía rutina automática (ExecAuto).
MSExecAuto({|a, b, c| FATA090(a, b, c)}, aCabec, aGrid, nOpcX)
Principales campos y parámetros
Nombre | Tipo | Descripción | Obligatorio |
aCabec | Array de registros | Array con los campos del encabezado (ACQ) | Sí |
aGrid | Array de registros | Array con los campos de la Grid (ACR) | Sí |
nOpcX | Numérico (opción de ejecución) | 3 = Inclusión; 4 = Modificación; 5 = Borrado | Sí |
No EXISTE
Ejemplo básico para la ejecución de Inclusión, Modificación y Borrado de Reglas de bonificación vía Rutina automática:
#Include 'protheus.ch' #Include 'topconn.ch' #Include "tbiconn.ch" //---------------------------------------------------------------------------- /*/{Protheus.doc} TSTFATA090 Ejemplo de ExecAuto para la rutina FATA090-Mantenimiento de reglas de bonificación @author Squad CRM/FAT @since 29/09/2023 @version 1.0 /*/ //---------------------------------------------------------------------------- User Function TSTFATA090() Local aCab as Array Local aItens as Array Local aLinha as Array Local cCodRegra as Char //Código de la regla Local aErroAuto as Array Local nCount as Numeric Local cLogErro as Char Local cItem as Char Local nOpcX as Numeric //Opción para (3 = Inclusión; 4 = Modificación; 5 = Borrado) Private lMsErroAuto as Logical Private lAutoErrNoFile as Logical // En este RDMAKE (Ejemplo), el mismo número de regla de bonificación se utiliza para la Rutina automática (Modelos INCLUSIÓN / MODIFICACIÓN y BORRADO). //**************************************************************** //* Apertura del entorno //**************************************************************** FWLogMsg('WARN',, 'SIGAFAT', FunName(), '', '01', ("Inicio: " + Time()) , 0, 0, {}) RpcClearEnv() RPCSetType(3) //No realiza consumo de licencia RPCSetEnv("T1", "D MG 01", Nil, Nil, "FAT") //|---------------------------------| //| Inclusión - Inicio | //|---------------------------------| cCodRegra := GetSxeNum("ACQ","ACQ_CODREG") aCab := {} aItens := {} //|---------------------------------| //| Completa encabezado | //|---------------------------------| Aadd(aCab,{"ACQ_CODREG" ,cCodRegra ,Nil}) Aadd(aCab,{"ACQ_DESCRI" ,"REGLA DE BONIFICACIÓN "+cCodRegra,Nil}) Aadd(aCab,{"ACQ_CODPRO" ,"FATR00000000000000000000000032" ,Nil}) Aadd(aCab,{"ACQ_QUANT" ,1 ,Nil}) Aadd(aCab,{"ACQ_TPRGBN" ,"1" ,Nil}) //|---------------------------------| //| Completa ÍTEMS | //|---------------------------------| aLinha := {} Aadd(aLinha,{"ACR_ITEM" ,"001" ,Nil}) Aadd(aLinha,{"ACR_CODPRO" ,"FATR00000000000000000000000026" ,Nil}) Aadd(aItens,aLinha) aLinha := {} Aadd(aLinha,{"ACR_ITEM" ,"002" ,Nil}) Aadd(aLinha,{"ACR_CODPRO" ,"FATR00000000000000000000000027" ,Nil}) Aadd(aItens,aLinha) //|-----------------------------| //| Genera Regla de bonificación| //|-----------------------------| nOpcX := 3 lAutoErrNoFile := .F. MSExecAuto({|a,b,c,d| FATA090(a,b,c)}, aCab, aItens, nOpcx) If lMsErroAuto FWLogMsg('WARN',, 'SIGAFAT', FunName(), '', '02', "¡Error en la inclusión!" , 0, 0, {}) aErroAuto := GetAutoGRLog() For nCount := 1 To Len(aErroAuto) cLogErro += StrTran(StrTran(aErroAuto[nCount], "<", ""), "-", "") + " " FWLogMsg('WARN',, 'SIGAFAT', FunName(), '', '03', cLogErro , 0, 0, {}) ConOut(cLogErro) Next Else FWLogMsg('WARN',, 'SIGAFAT', FunName(), '', '04', ("¡Incluido con éxito! "+cCodRegra) , 0, 0, {}) EndIf //|---------------------------------| //| Inclusión - Final | //|---------------------------------| //|---------------------------------| //| Modificación - Inicio | //|---------------------------------| ACQ->(DbSetOrder(1)) If ACQ->(DbSeek(xFilial("ACQ")+cCodRegra)) aCab := {} aItens := {} //|---------------------------------| //| Completa encabezado | //|---------------------------------| Aadd(aCab,{"ACQ_CODREG" ,ACQ->ACQ_CODREG ,Nil}) Aadd(aCab,{"ACQ_DESCRI" ,ACQ->ACQ_DESCRI ,Nil}) Aadd(aCab,{"ACQ_CODPRO" ,ACQ->ACQ_CODPRO ,Nil}) Aadd(aCab,{"ACQ_QUANT" ,2 ,Nil}) //Modificando la cantidad que se bonificará a 2 Aadd(aCab,{"ACQ_TPRGBN" ,ACQ->ACQ_TPRGBN ,Nil}) //|---------------------------------| //| Completa ÍTEMS | //|---------------------------------| ACR->(DbSetOrder(1)) If ACR->(DbSeek(xFilial("ACR")+cCodRegra)) While ACR->(!Eof()) .And. ACR->ACR_CODREG == cCodRegra aLinha := {} Aadd(aLinha,{"LINPOS" ,"ACR_ITEM" ,ACR->ACR_ITEM}) Aadd(aLinha,{"AUTDELETA" ,"N" ,Nil }) Aadd(aLinha,{"ACR_CODPRO" ,ACR->ACR_CODPRO ,Nil }) Aadd(aItens,aLinha) cItem := ACR->ACR_ITEM ACR->(DbSkip()) End //Agregando el ítem aLinha := {} Aadd(aLinha,{"ACR_ITEM" ,(cItem := Soma1(cItem)) ,Nil}) Aadd(aLinha,{"ACR_CODPRO" ,"FATR00000000000000000000000028" ,Nil}) Aadd(aItens,aLinha) //Agregando el ítem aLinha := {} Aadd(aLinha,{"ACR_ITEM" ,(cItem := Soma1(cItem)) ,Nil}) Aadd(aLinha,{"ACR_CODPRO" ,"FATR00000000000000000000000029" ,Nil}) Aadd(aItens,aLinha) EndIf //|-------------------------------| //| Modifica Regla de bonificación| //|-------------------------------| nOpcX := 4 lMsErroAuto := .F. lAutoErrNoFile := .F. MSExecAuto({|a,b,c,d| FATA090(a,b,c)}, aCab, aItens, nOpcX ) If lMsErroAuto FWLogMsg('WARN',, 'SIGAFAT', FunName(), '', '05', "¡Error en la modificación!" , 0, 0, {}) aErroAuto := GetAutoGRLog() For nCount := 1 To Len(aErroAuto) cLogErro += StrTran(StrTran(aErroAuto[nCount], "<", ""), "-", "") + " " FWLogMsg('WARN',, 'SIGAFAT', FunName(), '', '06', cLogErro , 0, 0, {}) ConOut(cLogErro) Next Else FWLogMsg('WARN',, 'SIGAFAT', FunName(), '', '07', ("¡Modificado con éxito! "+cCodRegra) , 0, 0, {}) EndIf EndIf //|---------------------------------| //| Modificación - Final | //|---------------------------------| //|---------------------------------| //| Borrado - Inicio | //|---------------------------------| ACQ->(DbSetOrder(1)) If ACQ->(DbSeek(xFilial("ACQ")+cCodRegra)) aCab := {} aItens := {} //|---------------------------------| //| Completa encabezado | //|---------------------------------| Aadd(aCab,{"ACQ_CODREG" ,ACQ->ACQ_CODREG ,Nil}) Aadd(aCab,{"ACQ_DESCRI" ,ACQ->ACQ_DESCRI ,Nil}) Aadd(aCab,{"ACQ_CODPRO" ,ACQ->ACQ_CODPRO ,Nil}) Aadd(aCab,{"ACQ_QUANT" ,ACQ->ACQ_QUANT ,Nil}) Aadd(aCab,{"ACQ_TPRGBN" ,ACQ->ACQ_TPRGBN ,Nil}) //|---------------------------------| //| Completa ÍTEMS | //|---------------------------------| ACR->(DbSetOrder(1)) If ACR->(DbSeek(xFilial("ACR")+cCodRegra)) While ACR->(!Eof()) .And. ACR->ACR_CODREG == cCodRegra aLinha := {} Aadd(aLinha,{"ACR_ITEM" ,ACR->ACR_ITEM ,Nil}) Aadd(aLinha,{"ACR_CODPRO" ,ACR->ACR_CODPRO ,Nil}) Aadd(aItens,aLinha) ACR->(DbSkip()) End EndIf //|-------------------------------| //| Borra Regla de bonificación | //|-------------------------------| nOpcX := 5 lMsErroAuto := .F. lAutoErrNoFile := .F. MSExecAuto({|a,b,c,d| FATA090(a,b,c)}, aCab, aItens, nOpcX) If lMsErroAuto FWLogMsg('WARN',, 'SIGAFAT', FunName(), '', '08', "¡Error en el borrado!" , 0, 0, {}) aErroAuto := GetAutoGRLog() For nCount := 1 To Len(aErroAuto) cLogErro += StrTran(StrTran(aErroAuto[nCount], "<", ""), "-", "") + " " FWLogMsg('WARN',, 'SIGAFAT', FunName(), '', '09', cLogErro , 0, 0, {}) ConOut(cLogErro) Next Else FWLogMsg('WARN',, 'SIGAFAT', FunName(), '', '10', ("¡Borrado con éxito! "+cCodRegra) , 0, 0, {}) EndIf EndIf //|---------------------------------| //| Borrado - Final | //|---------------------------------| RpcClearEnv() Return