Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Revertida da versão 11

...

Nome

Tipo

Descrição

Obrigatório

aCabecArray de registrosArray contendo os campos do cabeçalho (ACQ)Sim
aGridArray de registrosArray contendo os campos da Grid (ACR)Sim
nOpcXNumérico (opção de execução)3 = Inclusão; 4 = Alteração; 5 = ExclusãoSim

05. RETORNO

{}         Não há

06. EXEMPLOS

Totvs custom tabs box items
defaultno
referenciaFonte

Exemplo básico para a execução de Inclusão, Alteração e Exclusão de Regras de Bonificação via Rotina Automática:

Bloco de código
linenumberstrue
#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 |
//|-----------------------------|
lMsErroAutonOpcX		    := .F.3
lAutoErrNoFile	:= .F.
MSExecAuto({|a,b,c,d| FATA090(a,b,c)}, aCab, aItens, 3nOpcx)

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 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 |
    //|-------------------------------| 
	nOpcX		    := 5
    lMsErroAuto		:= .F.
    lAutoErrNoFile	:= .F.
    MSExecAuto({|a,b,c,d| FATA090(a,b,c)}, aCab, aItens, 5nOpcX)

    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