Versão atual:

Retorno do ExecAuto da MATA410

Boa tarde, pessoal.

Estou desenvolvendo um ExecAuto da MATA410 para pegar os pedidos criados de um serviço web.

Usei o mesmo exemplo que está disponível na documentação da TOTVS, entretanto o sistema retorna alguns erros que não tenho ideia de como resolver.

Ao criar o mesmo pedido com interface, este é salvo normalmente, sem erros. A única coisa que notei são alguns elementos visuais que terei de ajustar, tipo um condicional com alert ao invés de conout, por exemplo.

Abaixo, o fonte que estou usando (até o:

#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"

User Function CAFIF004()

Local cDoc       := ""                                                                 // Número do Pedido de Vendas
Local cA1Cod     := "C29368"                                                           // Código do Cliente
Local cA1Loja    := "01"                                                               // Loja do Cliente
Local cB1Cod     := "001508         "                                   // Código do Produto
Local cF4TES     := "556"                                                              // Código do TES
Local cE4Codigo  := "001"                                                              // Código da Condição de Pagamento
Local cMsgLog    := ""
Local cLogErro   := ""
Local cFilSA1    := ""
Local cFilSB1    := ""
Local cFilSE4    := ""
Local cFilSF4    := ""
Local nOpcX      := 0
Local nX         := 0
Local nCount     := 0
Local aCabec     := {}
Local aItens     := {}
Local aLinha     := {}
Local aErroAuto  := {}
Local lOk        := .T.

Private lMsErroAuto    := .F.
Private lAutoErrNoFile := .t.

//****************************************************************
//* Abertura do ambiente
//****************************************************************
ConOut("Inicio: " + Time())

ConOut(Repl("-",80))
ConOut(PadC("Teste de inclusao / alteração / exclusão de 01 pedido de venda com 02 itens", 80))


SA1->(dbSetOrder(1))
SB1->(dbSetOrder(1))
SE4->(dbSetOrder(1))
SF4->(dbSetOrder(1))

cFilSA1 := xFilial("SA1")
cFilSB1 := xFilial("SB1")
cFilSE4 := xFilial("SE4")
cFilSF4 := xFilial("SF4")

//****************************************************************
//* Verificacao do ambiente para teste
//****************************************************************
If SB1->(! MsSeek(cFilSB1 + cB1Cod))
   cMsgLog += "Cadastrar o Produto: " + cB1Cod + CRLF
   lOk     := .F.
EndIf

If SF4->(! MsSeek(cFilSF4 + cF4TES))
   cMsgLog += "Cadastrar o TES: " + cF4TES + CRLF
   lOk     := .F.
EndIf

If SE4->(! MsSeek(cFilSE4 + cE4Codigo))
   cMsgLog += "Cadastrar a Condição de Pagamento: " + cE4Codigo + CRLF
   lOk     := .F.
EndIf

If SA1->(! MsSeek(cFilSA1 + cA1Cod + cA1Loja))
   cMsgLog += "Cadastrar o Cliente: " + cA1Cod + " Loja: " + cA1Loja + CRLF
   lOk     := .F.
EndIf

If lOk

   // Neste RDMAKE (Exemplo), o mesmo número do Pedido de Venda é utilizado para a Rotina Automática (Modelos INCLUSÃO / ALTERAÇÃO e EXCLUSÃO).
   cDoc := GetSxeNum("SC5", "C5_NUM")

   //****************************************************************
   //* Inclusao - INÍCIO
   //****************************************************************
   aCabec   := {}
   aItens   := {}
   aLinha   := {}
   aadd(aCabec, {"C5_NUM",     "150000",      Nil})
   aadd(aCabec, {"C5_TIPO",    "N",       Nil})
   aadd(aCabec, {"C5_CLIENTE", cA1Cod,    Nil})
   aadd(aCabec, {"C5_LOJACLI", cA1Loja,   Nil})
   aadd(aCabec, {"C5_LOJAENT", cA1Loja,   Nil})
   aadd(aCabec, {"C5_CONDPAG", cE4Codigo, Nil})
   aadd(aCabec, {"C5_VEND1", "94    ", Nil})
   aadd(aCabec, {"C5_NATUREZ", "01CX003   ", Nil})

   For nX := 1 To 01
      //--- Informando os dados do item do Pedido de Venda
      aLinha := {}
      aadd(aLinha,{"C6_ITEM",    StrZero(nX,2), Nil})
      aadd(aLinha,{"C6_PRODUTO", cB1Cod,        Nil})
      aadd(aLinha,{"C6_QTDVEN",  1,             Nil})
      aadd(aLinha,{"C6_PRCVEN",  1000,          Nil})
      aadd(aLinha,{"C6_PRUNIT",  1000,          Nil})
      aadd(aLinha,{"C6_VALOR",   1000,          Nil})
      aadd(aLinha,{"C6_TES",     cF4TES,        Nil})
      aadd(aLinha,{"C6_OPER","01",        Nil})
      aadd(aItens, aLinha)
   Next nX

   nOpcX := 3
   MSExecAuto({|a, b, c, d| MATA410(a, b, c, d)}, aCabec, aItens, nOpcX, .F.)
   If !lMsErroAuto
      ConOut("Incluido com sucesso! " + cDoc)
   Else
      ConOut("Erro na inclusao!")
      aErroAuto := GetAutoGRLog()
      For nCount := 1 To Len(aErroAuto)
         cLogErro += StrTran(StrTran(aErroAuto[nCount], "<", ""), "-", "") + " "
         ConOut(cLogErro)
      Next nCount
   EndIf
Else

   ConOut(cMsgLog)

EndIf

ConOut("Fim: " + Time())


Return(.T.)

Retorno do sistema:

aErroAuto[1]:"Erro no Gatilho : C5_CLIENTE

variable is not an object "
aErroAuto[2]:"AJUDA:A410TOTAL 
O valor total informado não confere com o valor calculado.
"
aErroAuto[3]:"Tabela SC5 29/01/2021 17:47:32"
aErroAuto[4]:"Numero               - C5_NUM       := 150000"
aErroAuto[5]:"Tipo Pedido          - C5_TIPO      := N"
aErroAuto[6]:"Cliente              - C5_CLIENTE   := C29368"
aErroAuto[7]:"Loja                 - C5_LOJACLI   := 01"
aErroAuto[8]:"Loja Entrega         - C5_LOJAENT   := 01"
aErroAuto[9]:"Cond. Pagto          - C5_CONDPAG   := 001"
aErroAuto[10]:"Vendedor 1           - C5_VEND1     := 94    "
aErroAuto[11]:"Natureza             - C5_NATUREZ   := 01CX003   "
aErroAuto[12]:"--------------------------------------------------------------------------------"
aErroAuto[13]:"Tabela SC6 29/01/2021 17:47:32"
aErroAuto[14]:"Erro no Item   1"
aErroAuto[15]:"--------------------------------------------------------------------------------"
aErroAuto[16]:"Item                 - C6_ITEM      := 01"
aErroAuto[17]:"Produto              - C6_PRODUTO   := 001508         "
aErroAuto[18]:"Quantidade           - C6_QTDVEN    := 1"
aErroAuto[19]:"Prc Unitario         - C6_PRCVEN    := 1000"
aErroAuto[20]:"Prc Lista            - C6_PRUNIT    := 1000"
aErroAuto[21]:"Vlr.Total            - C6_VALOR     := 1000"
aErroAuto[22]:"Tipo Saida           - C6_TES       := 556"
aErroAuto[23]:"Tp. Operacao         - C6_OPER      := 01"
aErroAuto[24]:"Erro -->  Inconsistencia na Linha de Itens"
aErroAuto[25]:"--------------------------------------------------------------------------------"

Como eu consegui faturar o pedido o gerando com interface, queria saber se alguém tem alguma ideia de como forçar a execução dos gatilhos ou mesmo obter um erro mais detalhado, pois é apresentado que o C5_CLIENTE não é um objeto, mas eu não sei qual dos gatilhos do sistema está criando esse problema.

Desde já, agradeço as respostas.

Qualquer dúvida, podem perguntar.

Versão (1):

Ver a versão formatada

Retorno do ExecAuto da MATA410

Comentário

new question