Ir para o conteúdo principal

LojaAjusteEstoque (STATUS: CRIADO)

Documentação Técnica
Nome do cliente OSKLEN
Nome do projeto Integração LINX → ILLI (Ajuste de Estoque)Estoque — Contagem)
Biblioteca wosk_loja_ajuste_estoque
Data 25/26/03/2026


Histórico de Versões
Data Versão Modificado por Descrição da Mudança
25/26/03/2026 1.0 Maykon/Gustavo Criação da documentação técnica do processo Loja Ajuste Estoque (LINX → ILLI).

Descrição

EstaEste bibliotecaserviço enviade ajuste de estoque por contagem no LINX encaminha ao ILLI os ajustes de estoque originadosdados de contagens no LINX,marcadas apóspara selecionartransferência, contagens elegíveis e montarcom o detalhamentodetalhe pordos produto.itens ajustados.
ElaGarante garante que cada lote siga fila de processamento,fila, integração e registro de sucesso ou falhaerro para acompanhamento.cada contagem elegível por filial.

Capturador

Descrição Conceitual

A captura automática consulta a view ESTOQUE_PROD_CONTAGEM quando o estado internodo serviço LojaAjusteEstoque está apto (reinício a partir de situação reiniciada de concluído para paradoda ou continuação em andamento), aplicandorestringindo filtro pora filiais de loja definidas em ambiente (excluindo estoque central e centro de distribuição), ESTOQUE_AJUSTADO = '1', data mínima de transferência e ordenação/paginaçãoprocessamento porcronológico data, conforme conceito de (ordenação e paginação por datadata) com ORDER BY DATA_PARA_TRANSFERENCIA ASC, OFFSET e FETCH NEXT conforme o limite de registros por lote configurado para o serviço LojaAjusteEstoque. Para cada registrolinha retornado,retornada, obtém-se aso linhas de ajustedetalhe em ESTOQUE_PROD_CTG_AJUSTE, compõe-se a chave NOME_CONTAGEM-FILIAL e o registro é encaminhadogravado àna filaFila de processamentoProcessamento identificada pelocom serviço LojaAjusteEstoque, atualizando-seatualizando offset, chave e data de posição eaté repetindo-concluir o ciclo.

A captura por chave aceita uma ou mais chaves no formato NOME_CONTAGEM-FILIAL; se a leiturachave enquantonão ativer regraduas partes, o fluxo interrompe com erro de paginaçãochave indicarinválida. novaPara página.

Acada capturachave dirigidaválida, por chaves percorre uma lista informada, valida o formato em duas partes (NOME_CONTAGEM econsulta-se FILIALESTOQUE_PROD_CONTAGEM), consulta a mesma view com WHEREfiltro fixo por nome de contagem e filialfilial, e, para cada linha retornada, incluienriquece-se o detalhamentoregistro com ITENS a partir de ESTOQUE_PROD_CTG_AJUSTE antese grava-se na Fila de gravarProcessamento, na fila compreservando o token quando existenteexistir quandopara houver.a mesma chave.

Fonte

Origem consultada: view ESTOQUE_PROD_CONTAGEM.
 Complemento de detalheslinhas porde contagem:produto: tabela ESTOQUE_PROD_CTG_AJUSTE.

Operações com Dados

LeituraConsulta principal (base da consulta de captura):

SELECT
    NOME_CONTAGEM,
    FILIAL,
    EMISSAO,
    RESPONSAVEL,
    OBS,
    ESTOQUE_AJUSTADO,
    DATA_AJUSTE,
    TIPO,
    SALDO_ARMAZENADO,
    CONTAGEM_POR_AREA_FECHADA,
    DATA_PARA_TRANSFERENCIA,
    NOME_CONTAGEM_ANTERIOR
FROM
    ESTOQUE_PROD_CONTAGEM (NOLOCK)

Operações com Dados

Leitura: consulta da view ESTOQUE_PROD_CONTAGEM conforme SQL da seção Fonte; detalhamento de itens por NOME_CONTAGEM na tabela ESTOQUE_PROD_CTG_AJUSTE.

Consulta dinâmica na (captura automáticatica): (filtroreutiliza ea paginaçprojeção montadoscom em tempo de execução; lista de filiais e valores de data/offset/limit conforme estado e configuração):

SELECT
    NOME_CONTAGEM,
    FILIAL,
    EMISSAO,
    RESPONSAVEL,
    OBS,
    ESTOQUE_AJUSTADO,
    DATA_AJUSTE,
    TIPO,
    SALDO_ARMAZENADO,
    CONTAGEM_POR_AREA_FECHADA,
    DATA_PARA_TRANSFERENCIA,
    NOME_CONTAGEM_ANTERIOR
FROM
    ESTOQUE_PROD_CONTAGEM (NOLOCK)
WHERE FILIAL IN ('...') AND(lista de filiais de loja, excluindo as removidas no código), ESTOQUE_AJUSTADO = '1', ANDDATA_PARA_TRANSFERENCIA DATA_PARA_TRANSFERENCIAmaior >=ou '{filtro_DATA_PARA_TRANSFERENCIA}'igual ao filtro do capturador, ORDER BY DATA_PARA_TRANSFERENCIA ASC, OFFSET {offset}e ROWS FETCH NEXT {limite}com ROWSo ONLYlimite de registros por lote configurado para o serviço LojaAjusteEstoque
.

Consulta dinâmica na (captura por chavechave): (WHEREmesma porprojeção com NOME_CONTAGEM e FILIAL da chave):

SELECT
    NOME_CONTAGEM,
    FILIAL,
    EMISSAO,
    RESPONSAVEL,
    OBS,
    ESTOQUE_AJUSTADO,
    DATA_AJUSTE,
    TIPO,
    SALDO_ARMAZENADO,
    CONTAGEM_POR_AREA_FECHADA,
    DATA_PARA_TRANSFERENCIA,
    NOME_CONTAGEM_ANTERIOR
FROM
    ESTOQUE_PROD_CONTAGEM (NOLOCK)
WHERE NOME_CONTAGEM = '{NOME_CONTAGEM}parte1}' AND FILIAL = '{FILIAL}parte2}'
 obtidas da chave.

Detalhamento de produtositens por contagemcontagem: (consulta à tabela NOME_CONTAGEMESTOQUE_PROD_CTG_AJUSTE informado):

com
SELECT
    NOME_CONTAGEM,
    PRODUTO,
    COR_PRODUTO,
    QTDE_AJUSTE,
    A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
    A11, A12, A13, A14, A15, A16, A17, A18, A19, A20,
    A21, A22, A23, A24, A25, A26, A27, A28, A29, A30,
    A31, A32, A33, A34, A35, A36, A37, A38, A39, A40,
    A41, A42, A43, A44, A45, A46, A47, A48,
    CUSTO1,
    CUSTO2,
    CUSTO3,
    CUSTO4,
    CM_OPERACAO,
    DATA_PARA_TRANSFERENCIA
FROM
    ESTOQUE_PROD_CTG_AJUSTE (NOLOCK)
WHERE NOME_CONTAGEM = '{NOME_CONTAGEM}'
, retornando colunas de produto, grade A1 a A48, custos CUSTO1 a CUSTO4, CM_OPERACAO, DATA_PARA_TRANSFERENCIA, QTDE_AJUSTE, COR_PRODUTO e PRODUTO.

Persistência: estado dado captura mantidocapturador pelo mecanismo do serviço LojaAjusteEstoque (offset, chave,chave de posição, datas, filtro,filtro e situação); registros pendentes e processados armazenados na tabela da fila de integração com serviço LojaAjusteEstoque e chave NOME_CONTAGEM-FILIAL.

Fila de Processamento

Descrição Conceitual

A fila recupera um registro pendente e utiliza o conteúdo do registro como base do payload de integração. Em seguida, aplica transformações obrigatórias de padronização e realiza a chamada ao ILLI.
O fluxo marca o registro como em envio, envia o conteúdo ao endpointrecurso ILLI de ajuste de estoque, interpreta o JSON de retorno (success, message) e grava situação final, mensagem, tempo e auditoria de requisição na própriatabela fila.da Nãofila de rotinas inteligentes associadas a este arquivo.integração.

 
Estruturação de Dados

O payloadconteudo enviadogravado aona ILLIfila corresponde ao array conteudo do registro na fila, construído a partiratual da linha deview ESTOQUE_PROD_CONTAGEM maisapós ainclusão da chave ITENS com o array de linhas retornadaslidas de ESTOQUE_PROD_CTG_AJUSTE para o mesmo NOME_CONTAGEM.

  • Chamada: Requisição HTTP
  • Recurso: e3a6737d-ac74-4ed6-9668-e3921320c29f/ilx_ajuste_estoque/setAjuste
  • Método HTTP: POST

Exemplo de payload enviado ao ILLI (JSON):

{
  "NOME_CONTAGEM": "<NOME_CONTAGEM>",
  "FILIAL": "<FILIAL>",
  "EMISSAO": "<EMISSAO>",
  "RESPONSAVEL": "<RESPONSAVEL>",
  "OBS": "<OBS>",
  "ESTOQUE_AJUSTADO": "<ESTOQUE_AJUSTADO>",
  "DATA_AJUSTE": "<DATA_AJUSTE>",
  "TIPO": "<TIPO>",
  "SALDO_ARMAZENADO": "<SALDO_ARMAZENADO>",
  "CONTAGEM_POR_AREA_FECHADA": "<CONTAGEM_POR_AREA_FECHADA>",
  "DATA_PARA_TRANSFERENCIA": "<DATA_PARA_TRANSFERENCIA>",
  "NOME_CONTAGEM_ANTERIOR": "<NOME_CONTAGEM_ANTERIOR>",
  "ITENS": [
    {
      "NOME_CONTAGEM": "<NOME_CONTAGEM>",
      "PRODUTO": "<PRODUTO>",
      "COR_PRODUTO": "<COR_PRODUTO>",
      "QTDE_AJUSTE": "<QTDE_AJUSTE>",
      "A1": "<A1>",
      "A48": "<A48>",
      "CUSTO1": "<CUSTO1>",
      "CM_OPERACAO": "<CM_OPERACAO>",
      "DATA_PARA_TRANSFERENCIA": "<DATA_PARA_TRANSFERENCIA_ITEM>"
    }
  ]
}
Campos raiz do conteudo enviado ao ILLI
Campo no payload CampoTipoObrigatórioDescrição
keystringnãoChave interna da fila quando aplicável à plataforma; o envio ao ILLI usa o array de origemconteúdo montado na captura.
NOME_CONTAGEMstringsimIdentificador da contagem na view ESTOQUE_PROD_CONTAGEM.
FILIALstringsimCódigo da filial na view ESTOQUE_PROD_CONTAGEM.
EMISSAOstringnãoData ou referência de emissão conforme origem.
RESPONSAVELstringnãoResponsável informado na contagem.
OBSstringnãoObservações da contagem.
ESTOQUE_AJUSTADOstringsimIndicador de estoque ajustado (1 na seleção do capturador).
DATA_AJUSTEstringnãoData do ajuste conforme origem.
TIPOstringnãoTipo da contagem.
SALDO_ARMAZENADOstringnãoSaldo armazenado informado.
CONTAGEM_POR_AREA_FECHADAstringnãoIndicador de contagem por área fechada.
DATA_PARA_TRANSFERENCIAstringsimData e hora mínima de transferência usada no filtro e ordenação do capturador.
NOME_CONTAGEM_ANTERIORstringnãoReferência de contagem anterior quando existir.
ITENSarraysimLinhas de ESTOQUE_PROD_CTG_AJUSTE para o NOME_CONTAGEM; ver tabela de elementos.
daviewdaviewdaviewdaviewdaviewdaviewdaviewdaview daview daview
Estrutura de cada elemento de ITENS
CampoTipoObrigatórioDescrição
NOME_CONTAGEM NOME_CONTAGEMstringsimRepete o identificador da viewcontagem ESTOQUE_PROD_CONTAGEMna linha de item.
FILIALPRODUTO FILIALstring sim Código ESTOQUE_PROD_CONTAGEMdo produto.
EMISSAOCOR_PRODUTO EMISSAOstring sim Cor ESTOQUE_PROD_CONTAGEMdo produto.
RESPONSAVELQTDE_AJUSTE RESPONSAVELstring sim Quantidade ESTOQUE_PROD_CONTAGEMajustada.
OBSA1 OBSstring não Quantidade ESTOQUE_PROD_CONTAGEMde grade posição 1.
ESTOQUE_AJUSTADOA2 ESTOQUE_AJUSTADOstring não Quantidade ESTOQUE_PROD_CONTAGEMde grade posição 2.
DATA_AJUSTEA3 DATA_AJUSTEstring não Quantidade ESTOQUE_PROD_CONTAGEMde grade posição 3.
TIPOA4 TIPOstring não Quantidade ESTOQUE_PROD_CONTAGEMde grade posição 4.
SALDO_ARMAZENADOA5 SALDO_ARMAZENADOstring não Quantidade ESTOQUE_PROD_CONTAGEMde grade posição 5.
CONTAGEM_POR_AREA_FECHADAA6 stringnãoQuantidade de grade posição 6.
CONTAGEM_POR_AREA_FECHADAA7 string não Quantidade de grade posição 7.
ESTOQUE_PROD_CONTAGEMA8stringnãoQuantidade de grade posição 8.
A9stringnãoQuantidade de grade posição 9.
A10stringnãoQuantidade de grade posição 10.
A11stringnãoQuantidade de grade posição 11.
A12stringnãoQuantidade de grade posição 12.
A13stringnãoQuantidade de grade posição 13.
A14stringnãoQuantidade de grade posição 14.
A15stringnãoQuantidade de grade posição 15.
A16stringnãoQuantidade de grade posição 16.
A17stringnãoQuantidade de grade posição 17.
A18stringnãoQuantidade de grade posição 18.
A19stringnãoQuantidade de grade posição 19.
A20stringnãoQuantidade de grade posição 20.
A21stringnãoQuantidade de grade posição 21.
A22stringnãoQuantidade de grade posição 22.
A23stringnãoQuantidade de grade posição 23.
A24stringnãoQuantidade de grade posição 24.
A25stringnãoQuantidade de grade posição 25.
A26stringnãoQuantidade de grade posição 26.
A27stringnãoQuantidade de grade posição 27.
A28stringnãoQuantidade de grade posição 28.
A29stringnãoQuantidade de grade posição 29.
A30stringnãoQuantidade de grade posição 30.
A31stringnãoQuantidade de grade posição 31.
A32stringnãoQuantidade de grade posição 32.
A33stringnãoQuantidade de grade posição 33.
A34stringnãoQuantidade de grade posição 34.
A35stringnãoQuantidade de grade posição 35.
A36stringnãoQuantidade de grade posição 36.
A37stringnãoQuantidade de grade posição 37.
A38stringnãoQuantidade de grade posição 38.
A39stringnãoQuantidade de grade posição 39.
A40stringnãoQuantidade de grade posição 40.
A41stringnãoQuantidade de grade posição 41.
A42stringnãoQuantidade de grade posição 42.
A43stringnãoQuantidade de grade posição 43.
A44stringnãoQuantidade de grade posição 44.
A45stringnãoQuantidade de grade posição 45.
A46stringnãoQuantidade de grade posição 46.
A47stringnãoQuantidade de grade posição 47.
A48stringnãoQuantidade de grade posição 48.
CUSTO1stringnãoCusto 1.
CUSTO2stringnãoCusto 2.
CUSTO3stringnãoCusto 3.
CUSTO4stringnãoCusto 4.
CM_OPERACAOstringnãoCusto médio ou operação associada conforme origem.
DATA_PARA_TRANSFERENCIA DATA_PARA_TRANSFERENCIAstring não Data ESTOQUE_PROD_CONTAGEMe (uso tambémhora para datatransferência na linha do registro na fila)
NOME_CONTAGEM_ANTERIORNOME_CONTAGEM_ANTERIOR da view ESTOQUE_PROD_CONTAGEM
ITENSConjunto de linhas projetadas de ESTOQUE_PROD_CTG_AJUSTE (campos listados na secção Tratamento de Dados)item.
 

Exemplo

ilustrativo de estrutura do conteudo (valores fictícios):

{
  "NOME_CONTAGEM": "...",
  "FILIAL": "...",
  "EMISSAO": "...",
  "RESPONSAVEL": "...",
  "OBS": "...",
  "ESTOQUE_AJUSTADO": "...",
  "DATA_AJUSTE": "...",
  "TIPO": "...",
  "SALDO_ARMAZENADO": "...",
  "CONTAGEM_POR_AREA_FECHADA": "...",
  "DATA_PARA_TRANSFERENCIA": "...",
  "NOME_CONTAGEM_ANTERIOR": "...",
  "ITENS": []
}



Tratamento de Dados

Sobre o registro atual retornado da viewde ESTOQUE_PROD_CONTAGEM noantes laçodo deenvio captura:à fila:

  • ITENS: passa a conter o array de linhas obtidas da consulta a ESTOQUE_PROD_CTG_AJUSTE para o mesmo NOME_CONTAGEM, composto por objetos compreservando os campos:campos NOME_CONTAGEM, PRODUTO, COR_PRODUTO, QTDE_AJUSTE, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31, A32, A33, A34, A35, A36, A37, A38, A39, A40, A41, A42, A43, A44, A45, A46, A47, A48, CUSTO1, CUSTO2, CUSTO3, CUSTO4, CM_OPERACAO, e DATA_PARA_TRANSFERENCIA.

Na fila, o processamento utiliza o conteúdo do registro como corpo enviado ao ILLI, sem reestruturação adicional de campos no código analisado.analisado além do conteúdo já montado na captura.

 

Integração com o ILLI

Chamada de integração com o ILLI (via biblioteca de integração):ILLI:

  • Chamada: Requisição HTTP (encapsulada pela rotina de envio ao ILLI).
  • Recurso: e3a6737d-ac74-4ed6-9668-e3921320c29f/ilx_ajuste_estoque/setAjuste
  • Método HTTP: conforme implementação padrão da rotina de integração ILLI (corpo JSON com o array conteudoPOST).
  • Corpo de entrada: objeto/objeto ou array correspondente ao conteudo do registro da fila (camposcabeçalho da contagem + ITENS).
  • Processamento: envio do payload e leitura da resposta JSON com indicadores success e message.

Exemplo

 de
corpo enviado (estrutura mínima, mesma forma do conteudo na fila):

{
  "NOME_CONTAGEM": "...",
  "FILIAL": "...",
  "ITENS": [ { "PRODUTO": "...", "QTDE_AJUSTE": "..." } ]
}

Tratamento de retorno

Ausência de resposta JSON: situaçlança exceção deindicando erroque (exceção)não ehouve resposta; situação final 4 na fila.tabela da fila de integração.
Resposta sem success e sem message: tratada como retorno não reconhecido (exceção), situação 4.
Sucesso: quando success não está vazio no JSON,vazio, situação 2; caso contrário situação 4 com mensagem retornada em message quando existir.
Em exceção,o genérica, a mensagem é persistida; se a mensagem indicar trecho após prefixo de erroJSON énão persistida ereconhecido, o retorno estruturado pode incluir error e data quando a mensagem contém prefixo indicando JSON não reconhecido.

Encaminhamento em cenário de erro

Não há, neste fluxo, encaminhamento automático para outro serviço ou biblioteca após falha na integração com o ILLI;conteúdo o registro permanece com o estado de erro registrado na fila.analisado.

 

Notificação

A notificação de erros consulta registros com falha na tabela da fila de integração para o serviço LojaAjusteEstoque, e situação de erro, ordenando pelo horário de processamento para priorizar ocorrências mais antigas.

Destinatários

Endpoint (API)

O endpoint publica a biblioteca para instanciar dinamicamente as classes internas (por exemplo, capturador ou fila) via parâmetro de classe no padrão da plataforma. O caminho declarado no arquivo da biblioteca é usado como base do recurso HTTP.

 
Estruturação de Dados

A invocação segue o contrato de publicação de biblioteca: corpo ou parâmetros conforme a plataforma para selecionar a classe alvo e assuntoa operação definidosdesejada.

no
    código;
  • Chamada: osRequisição camposHTTP
  • exibidos
  • Recurso: incluem/bibliotecas/01a79ef5-24bc-4bdc-b797-512284913153/wosk_loja_ajuste_estoque
  • datas
  • Método HTTP: POST

Exemplo de capturapayload eenviado processamento,para chave,o mensagemendpoint (JSON):

{
  "key": "<API_KEY_OU_VAZIO>",
  "class": "Monitor",
  "method": "run",
  "params": []
}
extraí com
Contrato ilustrativo do payload de errochamada eà biblioteca
CampoTipoObrigatórioDescrição
DATA_AJUSTEkey stringnãoChave ou identificador conforme exigência da plataforma de publicação do conteúdo,serviço.
classstringsimNome da classe interna a carregar via fábrica da biblioteca (ex.: Monitor, Queue).
methodstringvariávelMétodo a executar na instância retornada, conforme contrato da plataforma.
paramsarraynãoParâmetros do método quando aplicável.
 
Tratamento de Dados

O carregamento dinâmico instancia a classe em WOSK\LojaAjusteEstoque\ conforme o nome informado após normalização dedo quebrassegmento recebido; não há transformação adicional de linhanegócio nanesta mensagemcamada dealém erroda pararesolução exibição.da classe.

 

Fluxo do Processo

Diagrama sem nome.jpg


Critérios de Aceitação
existir;chave
Processo Subprocesso Descrição Situação esperada
Capturador Captura e enfileiramento Com estado apto e filtros válidos, deve ler ESTOQUE_PROD_CONTAGEM com ESTOQUE_AJUSTADO = '1', filiais de loja permitidas e data mínima de transferência, enriquecer com linhas de ESTOQUE_PROD_CTG_AJUSTE e gravar na fila de integração com chave NOME_CONTAGEM-FILIAL e serviço LojaAjusteEstoque. Registro pendente na fila com conteúdo completo e chave consistente.
Capturador Captura por chave Para cada chave no formato NOME_CONTAGEM-FILIAL, deve consultar a contagem e reproduzir o encaminhamento à fila com token preservado quando existir. Chavechave inválida interrompe com exceção;o. Chave válida gera atualização na fila.fila; chave inválida gera erro imediato.
Fila de Processamento Integração ILLI Ao processar registro pendente, deve enviar o conteudo ao endpointrecurso ilx_ajuste_estoque/setAjuste, interpretar o retorno quanto à situação de sucesso ou erro com mensagem (success/, message) e persistir na tabela da fila de integração a situação final (2 ou 44), coma mensagem retornada e o tempo de processamento. Fila atualizada com situação final, mensagem e auditoria de requisição coerentes com o retorno.retorno do ILLI.
Endpoint (API)Publicação da bibliotecaAo receber requisição válida para o caminho da biblioteca, deve resolver a classe solicitada e permitir a execução dos métodos expostos (Monitor, Queue) conforme contrato da plataforma.Instância obtida sem erro de reflexão e operação encaminhada conforme parâmetros.