Pular para o conteúdo principal

Análise de Validação de Estoque

Este documento descreve o processo de análise técnica quando ocorre erro de validação de estoque durante a exportação de pedidos, utilizando como apoio:

  • Insomnia
  • Banco Cloud
  • CloudWatch

Como exemplo, será utilizado o cliente Amabile, com erro de validação de estoque em 02/03/2026.


Identificar o erro no Station

Para localizar o produto com erro na validação de estoque:

  1. Acesse Tarefas escalonadas no Station.
  2. Clique sobre a tarefa de descarga que está com erro.
  3. Analise os detalhes apresentados na tela.

Descarga

Nesta tela, é possível verificar que:

  • A descarga foi realizada com sucesso.
  • O erro ocorreu na exportação, etapa em que a validação de estoque é aplicada.
  • A mensagem indica falta de estoque para o produto 1640, no local 10100, na empresa 1, pois não há saldo suficiente para atender a quantidade negociada no pedido.

Para investigar a situação no CloudWatch, copie o nome do arquivo de descarga do vendedor.
No exemplo:

  • dsg_95_20260302185127423366.zip

Analisar o erro no CloudWatch

Localizar os logs da lambda de exportação

  1. Abra o CloudWatch no perfil correspondente ao cliente.

  2. No menu lateral, acesse Logs > Gerenciamento de Logs.

  3. Na busca de Grupos de logs, procure pela lambda:

    /aws/lambda/sfv-mobile-lambda-seller-discharge-prod-us-east-2-main

  4. Clique em Pesquisar todos os fluxos de log (canto inferior direito).

  5. Em Eventos de log, cole na busca o nome do arquivo de descarga copiado no Station.

  6. Ajuste o período de tempo conforme o horário em que a tarefa ocorreu.

  7. Clique no link azul em Nome do stream de logs da primeira linha que contenha na mensagem um texto semelhante a:

    {‘Records: [{messageId...”

Identificar a tentativa de inserção do pedido

Dentro do stream de logs:

  1. Role a página ou use Ctrl + F.
  2. Pesquise por INSERT.
  3. Localize a linha em que o Landix tenta inserir o pedido no Sankhya, com mensagem semelhante a:
  • Sending INSERT PEDIDO TO API...

Algumas linhas abaixo, é exibido o retorno do Sankhya informando estoque insuficiente.

Exemplo de retorno:

    [ERROR] 2026-03-02T21:51:44.409Z Ưbb6c8e-ebd7-4fd2-9878-1152756729df
{
"errorType": "Exception",
"errorMessage": "Erro: Estoque insuficiente.\nEmpresa: 1\nProduto: 1640 - TALHARIM 500G\nLocal: 10100\nValidação do estoque: Empresa/Local",
"stackTrace": [
"Traceback (most recent call last):\n",
" File \"/var/task/proc_exp_utils.py\", line 370, in call_api_insert_pedido\n raise Exception(f\"Erro: {status_msg}\")\n",
"Exception: Erro: Estoque insuficiente.\nEmpresa: 1\nProduto: 1640 - TALHARIM 500G\nLocal: 10100\nValidação do estoque: Empresa/Local\n"
]
}

No corpo do INSERT, também é possível identificar a quantidade do produto que o sistema tentou consumir para efetivar a venda.


Orientação ao vendedor

Quando ocorre esse erro, o vendedor receberá a mensagem e deverá ajustar a quantidade negociada, garantindo que ela não ultrapasse a quantidade disponível no momento do fechamento do pedido.


Consultar logs na lambda MEDIATOR

Para aprofundar a análise, também é possível verificar os logs da lambda:

/aws/lambda/sfv-mobile-lambda-sfa-mediator-prod-us-east-2-main

Essa lambda é responsável por:

  • Receber todas as requisições vindas do SSM
  • Acionar diferentes partes do sistema e outras lambdas

Como a validação de estoque é acionada pela MEDIATOR (que chama a SELLER-DISCHARGE), se ocorrer erro de validação e não houver logs suficientes na SELLER-DISCHARGE, é provável que existam registros úteis na MEDIATOR.


Consultar o estoque atual do produto no ERP (Insomnia)

Para validar o estoque no ERP:

  1. Abra o Insomnia.
  2. Procure a requisição “TGFEST – Estoque”.
  3. Utilize o body de consulta abaixo (substituindo os parâmetros conforme necessário).
{
"serviceName":"CRUDServiceProvider.loadRecords",
"requestBody":{
"dataSet":{
"rootEntity":"Estoque",
"offsetPage":0,
"criteria": {
"expression": {
"$": "this.CODPROD = '<Código do Produto>' AND this.CODLOCAL = '<Código do Local de Estoque>'"
}
},
"entity":{
"fieldset":{
"list":"CODPROD,ESTOQUE,RESERVADO"
}
}
}
}
}

Retorno da Sankhya:

{
"serviceName": "CRUDServiceProvider.loadRecords",
"status": "1",
"pendingPrinting": "false",
"transactionId": "B6B7E5C9F7C786C677197A89E834D492",
"responseBody": {
"entities": {
"total": "1",
"hasMoreResult": "false",
"offsetPage": "0",
"offset": "0",
"metadata": {
"fields": {
"field": [
{
"name": "CODPROD"
},
{
"name": "ESTOQUE"
},
{
"name": "RESERVADO"
},
{
"name": "CODEMP"
},
{
"name": "CODLOCAL"
},
{
"name": "CONTROLE"
},
{
"name": "CODPARC"
},
{
"name": "TIPO"
}
]
}
},
"entity": {
"f6": {
"$": "0"
},
"f7": {
"$": "P"
},
"_rmd": {
"CODPROD": {
"$": "{\"decVlr\":2,\"decQtd\":0,\"controle\":{\"tipoContEst\":\"N\",\"listaContEst\":[\"\"],\"usaMascara\":false}}",
"provider": "PRODUTORMP"
}
},
"f0": {
"$": "1640"
},
"f1": {
"$": "6"
},
"f2": {
"$": "6"
},
"f3": {
"$": "1"
},
"f4": {
"$": "10100"
},
"f5": {}
}
}
}
}

Interpretar o retorno e confirmar a falta de estoque

No retorno:

  • f1 representa ESTOQUE
  • f2 representa RESERVADO

Para calcular o estoque disponível:

ESTOQUE (f1) - RESERVADO (f2)

No exemplo, o cálculo resulta em estoque disponível igual a 0.

Por isso, a quantidade negociada no pedido não foi atendida e o ERP retornou estoque insuficiente.

Material de apoio