#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 //Código da Regra
Local aErroAuto as Array
Local nCount as Numeric
Local cLogErro as Char
Local cItem as Char
Local nOpcX as Numeric //Opção para (3 = Inclusão; 4 = Alteração; 5 = Exclusão)
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 |
//|-----------------------------|
nOpcX := 3
lAutoErrNoFile := .F.
MSExecAuto({|a,b,c,d| FATA090(a,b,c)}, aCab, aItens, nOpcx)
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 |
//|-------------------------------|
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', "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 |
//|-------------------------------|
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', "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 |