Ir para o conteúdo principal

ProtheusPedidoOmniElresiduo (STATUS: AJUSTANDO)

DocumentaçãDocumentação cnica

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


HistóHistórico de VersõVersões

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

DescriçãDescrição

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

Capturador

DescriçãDescrição Conceitual

Permite a captura manual (por chave composta) e a captura automáautomática (por agendador de tarefas) das transferêtransferências pendentes de integraçãintegração, consultando a origem e registrando os itensregistros para processamento assíassíncrono.

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

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

Fonte

Origem consultada: view WOSK_SERVICO_ENVIA_PROTHEUS_OMNI_EXCLUSAO.

Consulta utilizada na captura automáautomática (WHERE e paginaçãpaginação construíconstruídos dinamicamente conforme posiçãposição e configuraçã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íconstruído dinamicamente):

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

Operaçõ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íassíncrono.

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

- PersistêPersistência de posiçã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çõSituações registradas no controle: parado/iníinício (0), em processamento (1), concluíconcluído (2) e problema (4). Em caso de falha, o campo filtro recebe um histó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çãposição passa a refletir a data do própróximo ponto de continuidade (data_posicao e filtro['DATA_PARA_TRANSFERENCIA'] no formato Y-m-d H:i:s).

Fila de Processamento

DescriçãDescrição Conceitual

A fila recupera um registro pendente e utiliza o conteúconteúdo do registro como base do payload de integraçãintegração. Em seguida, aplica transformaçõtransformações obrigatóobrigatórias de padronizaçãpadronização e realiza a chamada ao Protheus.

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

Estruturaçã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 deda fila (conteú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úconteúdo do itemregistro deda fila éé normalizado para garantir disponibilidade consistente dos campos definidos em $field. Para integraçãintegração, os campos cpedsite, cproduto, citem e nquant o utilizados na composiçãcomposição dos parâparâmetros enviados ao Protheus, enquanto cfilial permanece como parte do payload oficial do item para padrãpadrão de estrutura.

IntegraçãIntegração com o Protheus

Chamada de integraçãintegração com o Protheus
- Chamada: RequisiçãRequisição HTTP
- Recurso: rtbomni/elresiduo com parâparâmetros na URL
- todo HTTP: o informado explicitamente na chamada (utiliza o padrãpadrão da biblioteca)
- CabeçCabeçalhos: nenhum cabeçcabeçalho explí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

Tratamento de retorno:
Ausência de resposta: registra falha com mensagem JSON: NÃO HOUVE RESPOSTA. e finaliza o registro 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.

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

Encaminhamento em cenácenário de erro

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

NotificaçãNotificação

A notificaçãnotificação de erros consulta itensregistros com falha na tabelafila wosk_queuede processamento (serviçserviço ProtheusPedidoOmniElresiduo e situaçãsituação de erro), ordenando pela data de processamento para priorizar ocorrê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éCritérios de AceitaçãAceitação

Processo Subprocesso DescriçãDescrição SituaçãSituação esperada
Capturador Captura cronolócronológica e controle de posiçãposição Ao consultar a view WOSK_SERVICO_ENVIA_PROTHEUS_OMNI_EXCLUSAO com filtro por DATA_PARA_TRANSFERENCIA, ordenaçãordenação ascendente e paginaçãpaginação por OFFSET/FETCH, deve manter a continuidade por posiçãposição persistida em wosk_monitor (evento, offset, chave_posicao, data_posicao, filtro). PosiçãPosição atualizada na tabela wosk_monitor e itensregistros pendentes registrados para processamento assí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. Itemregistro pendente registrado para processamento, associado àà chave do pedido.
Fila de Processamento IntegraçãIntegração com Protheus Ao processar um itemregistro pendente emna wosk_queuefila de processamento (serviçserviço ProtheusPedidoOmniElresiduo), deve compor o recurso rtbomni/elresiduo com os parâparâmetros cpedsite, cproduto, citem e nquant e registrar o retorno e a mensagem final. Itemregistro atualizado emfila wosk_queuede processamento com retorno/mensagem e situaçãsituação final coerente (sucesso quando code for R200/X200; erro caso contrácontrário, ou quando o houver resposta/digo).
Fila de Processamento NotificaçãNotificação de falhas Ao existirem itensregistros com erro (situacao = 4) para o serviçserviço ProtheusPedidoOmniElresiduo, deve listar os itensregistros ordenados por data de processamento e normalizar a mensagem para leitura, incluindo ajuste de quebras de linha e formataçã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.