#Include 'protheus.ch'
#Include 'topconn.ch'
#Include "tbiconn.ch"
//----------------------------------------------------------------------------
/*/{Protheus.doc} TSTFATA090
EjemploExemplo de ExecAuto para laa rutinarotina FATA090-MantenimientoManutenção dedas reglasRegras de bonificaciónBonificação
@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 deda la reglaRegra
Local aErroAuto as Array
Local nCount as Numeric
Local cLogErro as Char
Local cItem as Char
Local nOpcX as Numeric //OpciónOpção para (3 = InclusiónInclusão; 4 = ModificaciónAlteração; 5 = BorradoExclusão)
Private lMsErroAuto as Logical
Private lAutoErrNoFile as Logical
// En esteNeste RDMAKE (EjemploExemplo), elo mismomesmo número de reglaregra de bonificaciónbonificação seé utilizautilizado para laa RutinaRotina automáticaAutomática (Modelos INCLUSIÓNINCLUSÃO / MODIFICACIÓNALTERAÇÃO ye BORRADOEXCLUSÃO).
//****************************************************************
//* AperturaAbertura deldo entornoambiente
//****************************************************************
FWLogMsg('WARN',, 'SIGAFAT', FunName(), '', '01', ("Inicio: " + Time()) , 0, 0, {})
RpcClearEnv()
RPCSetType(3) //NoNao realizafaz consumo de licencialicença
RPCSetEnv("T1", "D MG 01", Nil, Nil, "FAT")
//|---------------------------------|
//| InclusiónInclusão - InicioInício |
//|---------------------------------|
cCodRegra := GetSxeNum("ACQ","ACQ_CODREG")
aCab := {}
aItens := {}
//|---------------------------------|
//| Completa encabezado Preenche Cabeçalho |
//|---------------------------------|
Aadd(aCab,{"ACQ_CODREG" ,cCodRegra ,Nil})
Aadd(aCab,{"ACQ_DESCRI" ,"REGLAREGRA DE BONIFICACIÓNBONIFICACAO "+cCodRegra,Nil})
Aadd(aCab,{"ACQ_CODPRO" ,"FATR00000000000000000000000032" ,Nil})
Aadd(aCab,{"ACQ_QUANT" ,1 ,Nil})
Aadd(aCab,{"ACQ_TPRGBN" ,"1" ,Nil})
//|---------------------------------|
//| CompletaPreenche ÍTEMSITENS |
//|---------------------------------|
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)
//|-----------------------------|
//| Gera Generaa ReglaRegra de Bonificação 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', "¡ErrorErro enna la inclusióninclusao!" , 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', ("¡IncluidoIncluido concom éxitosucesso! "+cCodRegra) , 0, 0, {})
EndIf
//|---------------------------------|
//| InclusiónInclusão - FinalFim |
//|---------------------------------|
//|---------------------------------|
//| ModificaciónAlteração - InicioInício |
//|---------------------------------|
ACQ->(DbSetOrder(1))
If ACQ->(DbSeek(xFilial("ACQ")+cCodRegra))
aCab := {}
aItens := {}
//|---------------------------------|
//| Completa encabezado Preenche Cabeçalho |
//|---------------------------------|
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}) //ModificandoAlterando laa cantidadquantidade quea seser bonificarábonificada apara 2
Aadd(aCab,{"ACQ_TPRGBN" ,ACQ->ACQ_TPRGBN ,Nil})
//|---------------------------------|
//| CompletaPreenche ÍTEMSITENS |
//|---------------------------------|
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 Adicionando o item
aLinha := {}
Aadd(aLinha,{"ACR_ITEM" ,(cItem := Soma1(cItem)) ,Nil})
Aadd(aLinha,{"ACR_CODPRO" ,"FATR00000000000000000000000028" ,Nil})
Aadd(aItens,aLinha)
//Agregando el ítem Adicionando o item
aLinha := {}
Aadd(aLinha,{"ACR_ITEM" ,(cItem := Soma1(cItem)) ,Nil})
Aadd(aLinha,{"ACR_CODPRO" ,"FATR00000000000000000000000029" ,Nil})
Aadd(aItens,aLinha)
EndIf
//|-------------------------------|
//| Altera Modificaa ReglaRegra de bonificaciónBonificação |
//|-------------------------------|
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', "¡ErrorErro enna la modificaciónalteração!" , 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', ("¡ModificadoAlterado concom éxitosucesso! "+cCodRegra) , 0, 0, {})
EndIf
EndIf
//|---------------------------------|
//| ModificaciónAlteração - FinalFim |
//|---------------------------------|
//|---------------------------------|
//| BorradoExclusão - Inicio Início |
//|---------------------------------|
ACQ->(DbSetOrder(1))
If ACQ->(DbSeek(xFilial("ACQ")+cCodRegra))
aCab := {}
aItens := {}
//|---------------------------------|
//| Completa encabezado Preenche Cabeçalho |
//|---------------------------------|
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})
//|---------------------------------|
//| CompletaPreenche ÍTEMSITENS |
//|---------------------------------|
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
//|-------------------------------|
//| Exclui Borraa ReglaRegra de bonificación Bonificação |
//|-------------------------------|
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', "¡ErrorErro enna el borradoexclusão!" , 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', ("¡BorradoExcluido concom éxitosucesso! "+cCodRegra) , 0, 0, {})
EndIf
EndIf
//|---------------------------------|
//| BorradoExclusão - Final Fim |
//|---------------------------------|
RpcClearEnv()
Return |