Ir para o conteúdo principal

ProtheusPedidoOmniElresiduo (STATUS: ESTRANHO)

Documentação Técnica

Nome do cliente OSKLEN
Nome do projeto Integração LINX → Protheus
Biblioteca wosk_protheus_pedido_omni_elresiduo
Data 27/02/2026


Histórico de Versões

Data Versão Modificado por Descrição da Mudança
27/02/2026 1.0 Maykon/Gustavo Criação da documentação técnica do processo ProtheusPedidoOmniElresiduo.

Descrição

Esta biblioteca organiza o envio de exclusão/ajuste de resíduo de itens de Pedido Omni do LINX para o Protheus, garantindo captura consistente e integração com validação de retorno.

Capturador

Descrição Conceitual

Realiza a captura automática (por agendador de tarefas) dos pedidos Omni pendentes, consultando a origem por janela temporal e registrando os itens para processamento assíncrono.

A captura automática segue processamento cronológico (ordenação/paginação por data) para priorizar registros mais antigos e manter continuidade por posição; link conceitual: Processamento cronológico.

Fonte

Origem consultada: view WOSK_SERVICO_ENVIA_PROTHEUS_OMNI_EXCLUSAO.

Consulta utilizada na captura automática (WHERE e paginação construídos dinamicamente conforme posição e configuração de limite):

SELECT
    cpedsite,
    cproduto,
    citem,
    nquant,
    DATA_PARA_TRANSFERENCIA
FROM
    WOSK_SERVICO_ENVIA_PROTHEUS_OMNI_EXCLUSAO (NOLOCK)
WHERE
    DATA_PARA_TRANSFERENCIA >= '<DATA_PARA_TRANSFERENCIA>'
ORDER BY
    DATA_PARA_TRANSFERENCIA ASC
OFFSET
    <OFFSET> ROWS FETCH NEXT <LIMITE> ROWS ONLY



Consulta utilizada na captura manual (chave informada e WHERE construído dinamicamente):

SELECT
    cpedsite,
    cproduto,
    citem,
    nquant,
    DATA_PARA_TRANSFERENCIA
FROM
    WOSK_SERVICO_ENVIA_PROTHEUS_OMNI_EXCLUSAO (NOLOCK)
WHERE
    cpedsite = '<CPEDSITE>'

 

Operações com Dados

- Leitura: consulta a view WOSK_SERVICO_ENVIA_PROTHEUS_OMNI_EXCLUSAO para obter o registro atual de pedido (cpedsite, cproduto, citem, nquant, DATA_PARA_TRANSFERENCIA) e encaminhar para processamento assíncrono.

- Controle de limite de captura: obtém o limite de itens por ciclo via configuração woskLimiteCaptura::ProtheusPedidoOmniElresiduo, aplicado na paginação da consulta (FETCH NEXT <LIMITE>).

- Persistência de posição/continuidade: registra e atualiza o controle do capturador na tabela wosk_monitor (banco {$this->bancoIntegrador}) usando evento = 'ProtheusPedidoOmniElresiduo', mantendo os campos token, offset, filtro, chave_posicao, situacao, data_posicao, data_iniciado e data.

- Situações registradas no controle: parado/início (0), em processamento (1), concluído (2) e problema (4). Em caso de falha, o campo filtro recebe um histórico em ERRORS[] com DATE e MESSAGE para auditoria.

- Regra de continuidade por data: o filtro DATA_PARA_TRANSFERENCIA é inicializado (quando ausente) com 2023-05-01 00:00:00 e, para cada registro capturado, a posição passa a refletir a data do próximo ponto de continuidade (data_posicao e filtro['DATA_PARA_TRANSFERENCIA'] no formato Y-m-d H:i:s).

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 Protheus.

O item de fila é persistido e atualizado na tabela wosk_queue (banco {$this->bancoIntegrador}) ao longo do processamento, registrando chave, conteúdo, retorno, mensagem, tempo e situação final (sucesso/erro) para auditoria.

Estruturação de Dados

A estrutura oficial do payload de integração é definida pelo array $field da fila, refletindo os campos de conteúdo esperados para composição da integração do Pedido Omni (exclusão/ajuste de resíduo).

Campo no payload Origem no item de fila (conteúdo)
cfilial cfilial
cpedsite cpedsite
cproduto cproduto
nquant nquant
citem citem

Exemplo de payload (com todos os campos previstos em $field):

{
  "cfilial": "",
  "cpedsite": "",
  "cproduto": "",
  "nquant": "",
  "citem": ""
}



Tratamento de Dados

O conteúdo do item de fila é normalizado para garantir disponibilidade consistente dos campos definidos em $field. Para integração, os campos cpedsite, cproduto, citem e nquant são utilizados na composição dos parâmetros enviados ao Protheus, enquanto cfilial permanece como parte do payload oficial do item para padrão de estrutura.

Integração com o Protheus

Chamada de integração com o Protheus
- Chamada: Requisição HTTP
- Recurso: rtbomni/elresiduo com parâmetros na URL
- Método HTTP: não informado explicitamente na chamada (utiliza o padrão da biblioteca)
- Cabeçalhos: nenhum cabeçalho explícito informado na chamada
- Exemplo de envio:
  - Não há corpo de requisição (payload vazio). Os valores são enviados como parâmetros de URL, montados a partir do conteúdo do item: cpedsite, cproduto, citem, nquant.
  - Exemplo de recurso com parâmetros:
    rtbomni/elresiduo?cpedsite=<CPEDSITE>&cproduto=<CPRODUTO>&citem=<CITEM>&nquant=<NQUANT>
- Tratamento de retorno:
  - Ausência de resposta: registra falha com mensagem JSON: NÃO HOUVE RESPOSTA. e finaliza o item como erro.
  - Resposta inválida/inesperada: quando não for possível obter um código de retorno, registra falha com mensagem JSON: NÃO FOI POSSÍVEL DECODIFICAR A RESPOSTA..
  - Mapeamento de campos de retorno: quando presentes, COD é reinterpretado como code e MSG como message para padronização de leitura do retorno.
  - Indicadores de sucesso/erro: considera sucesso quando code for R200 ou X200; demais valores finalizam como erro.
  - Consolidação de mensagem: a mensagem final é composta por message e, quando existir, complementada por detailedMessage.

Tratamento de retorno

Ao final do processamento, o item é atualizado na tabela wosk_queue com o retorno do Protheus (quando existir), a mensagem consolidada e a situação final. O tempo de processamento é registrado e a situação é definida como sucesso (2) ou erro (4) conforme o código retornado.

Encaminhamento em cenário de erro

Quando ocorre erro na integração (ausência de resposta, resposta inválida ou código diferente de R200/X200), o item é finalizado como erro e permanece registrado em wosk_queue com detalhes do retorno e da mensagem para acompanhamento operacional. Quando houver aplicação de suspensão (quando identificada no fluxo), a situação pode ser marcada como suspenso (3).

Notificação

A notificação de erros consulta itens com falha na tabela wosk_queue (serviço ProtheusPedidoOmniElresiduo e situação de erro), ordenando pela data de processamento para priorizar ocorrências mais antigas. Para compor a listagem, o campo cpedsite é preenchido a partir da chave do item e a mensagem de erro é normalizada: quando identificado padrão de erro de SQL Server, é extraído apenas o trecho relevante; quando existir separador :, é mantida a parte posterior; quebras de linha são padronizadas para exibição. As datas data_adicionado e data são formatadas para d/m/Y H:i:s.

Fluxo do Processo

Diagrama sem nome.jpg


Critérios de Aceitação

Processo Subprocesso Descrição Situação esperada
Capturador Captura cronológica e controle de posição Ao consultar a view WOSK_SERVICO_ENVIA_PROTHEUS_OMNI_EXCLUSAO com filtro por DATA_PARA_TRANSFERENCIA, ordenação ascendente e paginação por OFFSET/FETCH, deve manter a continuidade por posição persistida em wosk_monitor (evento, offset, chave_posicao, data_posicao, filtro). Posição atualizada na tabela wosk_monitor e itens pendentes registrados para processamento assíncrono.
Capturador Captura manual por pedido Ao informar um cpedsite, deve consultar a origem filtrando por cpedsite e registrar o item correspondente para processamento. Item pendente registrado para processamento, associado à chave do pedido.
Fila de Processamento Integração com Protheus Ao processar um item pendente em wosk_queue (serviço ProtheusPedidoOmniElresiduo), deve compor o recurso rtbomni/elresiduo com os parâmetros cpedsite, cproduto, citem e nquant e registrar o retorno e a mensagem final. Item atualizado em wosk_queue com retorno/mensagem e situação final coerente (sucesso quando code for R200/X200; erro caso contrário, ou quando não houver resposta/código).
Fila de Processamento Notificação de falhas Ao existirem itens com erro (situacao = 4) para o serviço ProtheusPedidoOmniElresiduo, deve listar os itens ordenados por data de processamento e normalizar a mensagem para leitura, incluindo ajuste de quebras de linha e formatação de datas. Lista gerada com cpedsite consistente (a partir da chave), datas em d/m/Y H:i:s e mensagem consolidada para suporte operacional.