#Include 'protheus.ch'
#Include 'topconn.ch'
#Include "tbiconn.ch"
//----------------------------------------------------------------------------
/*/{Protheus.doc} TSTFATA090
Exemplo de ExecAuto para a rotina FATA090-Manutenção das Regras de Bonificaçã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
Local aErroAuto as Array
Local nCount as Numeric
Local cLogErro as Char
Local cItem as Char
Private lMsErroAuto as Logical
Private lAutoErrNoFile as Logical
// Neste RDMAKE (Exemplo), o mesmo número de regra de bonificação é utilizado para a Rotina Automática (Modelos INCLUSÃO / ALTERAÇÃO e EXCLUSÃO).
//****************************************************************
//* Abertura do ambiente
//****************************************************************
FWLogMsg('WARN',, 'SIGAFAT', FunName(), '', '01', ("Inicio: " + Time()) , 0, 0, {})
RpcClearEnv()
RPCSetType(3) //Nao faz consumo de licença
RPCSetEnv("T1", "D MG 01", Nil, Nil, "FAT")
//|---------------------------------|
//| Inclusão - Início |
//|---------------------------------|
cCodRegra := GetSxeNum("ACQ","ACQ_CODREG")
aCab := {}
aItens := {}
//|---------------------------------|
//| Preenche Cabeçalho |
//|---------------------------------|
Aadd(aCab,{"ACQ_CODREG" ,cCodRegra ,Nil})
Aadd(aCab,{"ACQ_DESCRI" ,"REGRA DE BONIFICACAO "+cCodRegra,Nil})
Aadd(aCab,{"ACQ_CODPRO" ,"FATR00000000000000000000000032" ,Nil})
Aadd(aCab,{"ACQ_QUANT" ,1 ,Nil})
Aadd(aCab,{"ACQ_TPRGBN" ,"1" ,Nil})
//|---------------------------------|
//| Preenche ITENS |
//|---------------------------------|
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 a Regra de Bonificação |
//|-----------------------------|
lMsErroAuto := .F.
lAutoErrNoFile := .F.
MSExecAuto({|a,b,c,d| FATA090(a,b,c)}, aCab, aItens, 3)
If lMsErroAuto
FWLogMsg('WARN',, 'SIGAFAT', FunName(), '', '02', "Erro na inclusao!" , 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 com sucesso! "+cCodRegra) , 0, 0, {})
EndIf
//|---------------------------------|
//| Inclusão - Fim |
//|---------------------------------|
//|---------------------------------|
//| Alteração - Início |
//|---------------------------------|
ACQ->(DbSetOrder(1))
If ACQ->(DbSeek(xFilial("ACQ")+cCodRegra))
aCab := {}
aItens := {}
//|---------------------------------|
//| 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}) //Alterando a quantidade a ser bonificada para 2
Aadd(aCab,{"ACQ_TPRGBN" ,ACQ->ACQ_TPRGBN ,Nil})
//|---------------------------------|
//| Preenche ITENS |
//|---------------------------------|
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
//Adicionando o item
aLinha := {}
Aadd(aLinha,{"ACR_ITEM" ,(cItem := Soma1(cItem)) ,Nil})
Aadd(aLinha,{"ACR_CODPRO" ,"FATR00000000000000000000000028" ,Nil})
Aadd(aItens,aLinha)
//Adicionando o item
aLinha := {}
Aadd(aLinha,{"ACR_ITEM" ,(cItem := Soma1(cItem)) ,Nil})
Aadd(aLinha,{"ACR_CODPRO" ,"FATR00000000000000000000000029" ,Nil})
Aadd(aItens,aLinha)
EndIf
//|-------------------------------|
//| Altera a Regra de Bonificação |
//|-------------------------------|
lMsErroAuto := .F.
lAutoErrNoFile := .F.
MSExecAuto({|a,b,c,d| FATA090(a,b,c)}, aCab, aItens, 4)
If lMsErroAuto
FWLogMsg('WARN',, 'SIGAFAT', FunName(), '', '05', "Erro na alteraçã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', ("Alterado com sucesso! "+cCodRegra) , 0, 0, {})
EndIf
EndIf
//|---------------------------------|
//| Alteração - Fim |
//|---------------------------------|
//|---------------------------------|
//| Exclusão - Início |
//|---------------------------------|
ACQ->(DbSetOrder(1))
If ACQ->(DbSeek(xFilial("ACQ")+cCodRegra))
aCab := {}
aItens := {}
//|---------------------------------|
//| 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})
//|---------------------------------|
//| Preenche ITENS |
//|---------------------------------|
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 a Regra de Bonificação |
//|-------------------------------|
lMsErroAuto := .F.
lAutoErrNoFile := .F.
MSExecAuto({|a,b,c,d| FATA090(a,b,c)}, aCab, aItens, 5)
If lMsErroAuto
FWLogMsg('WARN',, 'SIGAFAT', FunName(), '', '08', "Erro na exclusã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', ("Excluido com sucesso! "+cCodRegra) , 0, 0, {})
EndIf
EndIf
//|---------------------------------|
//| Exclusão - Fim |
//|---------------------------------|
RpcClearEnv()
Return |