Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

  1. Dados Gerais
  2. Descrição
  3. Sintaxe
  4. Parâmetros
  5. Retorno
  6. Exemplos

01. DADOS GERAIS

Linha de Produto:Microsiga Protheus®
Segmento:Serviços
Módulo:SIGAFAT - Faturamento
Função:FATA050 - Metas de Venda
Abrangências:Microsiga Protheus 12, Protheus 11
Versões:Microsiga Protheus 12, Protheus 11
Compatível Países:Todos
Sistemas Operacionais:Todos
Compatível com as Bases de Dados:Todos
Nível de Acesso:Nível 1 (Acesso Clientes)
Idiomas:Todos


02. DESCRIÇÃO

Função utilizada para inclusão, alteração ou exclusão de Regras de Bonificação via rotina automática (ExecAuto).

03. SINTAXE

MSExecAuto({|a, b, c| FATA090(a, b, c)}, aCabec, aGrid, nOpcX)

...

Principais Campos e Parâmetros

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

{}

06. EXEMPLOS

Escolha o modelo desejado abaixo de acordo com a operação a ser executada:

Totvs custom tabs box
tabsFonte
idsInclusao/Alteracao/Exclusao
Totvs custom tabs box items
defaultno
referenciaExclusao

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
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

...