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.

compartilhar
  • Lucas, consegue informar aqui quais são os gatilhos que existem no campo C5_CLIENTE?

    Gabriel Landeira   29 de Jan de 2021
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags execauto mata410 gatilho ou faça a sua própria pergunta.