CONTEÚDO
- Dados Gerais
- Descrição
- Sintaxe
- Parâmetros
- Retorno
- 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)
04. PARÂMETROS
Principais Campos e Parâmetros
Nome | Tipo | Descrição | Obrigatório |
---|---|---|---|
aCabec | Array de registros | Array contendo os campos do cabeçalho (ACQ) | Sim |
aGrid | Array de registros | Array contendo os campos da Grid (ACR) | Sim |
nOpcX | Numérico (opção de execução) | 3 = Inclusão; 4 = Alteração; 5 = Exclusão | Sim |
05. RETORNO
Não há
06. EXEMPLOS
Exemplo básico para a execução de Inclusão, Alteração e Exclusão de Regras de Bonificação via Rotina Automática:
#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
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas