ProtheusPedidoOmniElresiduo (STATUS: AJUSTANDO)
DocumentaçãDocumentação TéTécnica
| Nome do cliente | OSKLEN |
| Nome do projeto | |
| Biblioteca | wosk_protheus_pedido_omni_elresiduo |
| Data | 27/02/2026 |
HistóHistórico de VersõVersões
| Data | Modificado por | ||
| 27/02/2026 | 1.0 | Maykon/Gustavo |
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
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 de wosk_queue(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
$field| Campo no payload | Origem no item |
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 sãsã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
- MéMétodo HTTP: nãnã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 de processamento com o retorno do Protheus (quando existir), a mensagem consolidada e a wosk_queuesituaçãsituação final. O tempo de processamento éé registrado e a situaçãsituação éé definida como sucesso (2) ou erro (4) conforme o cócó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 cócódigo diferente de R200/X200), o itemregistro éé finalizado como erro e permanece registrado emna fila de processamento com detalhes do retorno e da mensagem para acompanhamento operacional. Quando houver wosk_queueaplicaçãaplicação de suspensãsuspensão (quando identificada no fluxo), a situaçãsituação pode ser marcada como suspenso (3).
NotificaçãNotificação
wosk_queuede processamento (ProtheusPedidoOmniElresiduo e cpedsitechave:data_adicionadodatad/m/Y H:i:sFluxo do Processo
CritéCritérios de AceitaçãAceitação
| Processo | Subprocesso | ||
| Capturador | Captura |
Ao consultar a view WOSK_SERVICO_ENVIA_PROTHEUS_OMNI_EXCLUSAO com filtro por DATA_PARA_TRANSFERENCIA, OFFSET/FETCH, deve manter a continuidade por wosk_monitor (evento, offset, chave_posicao, data_posicao, filtro). |
wosk_monitor e |
| Capturador | Captura manual por pedido | Ao informar um cpedsite, deve consultar a origem filtrando por cpedsite e registrar o item correspondente para processamento. |
|
| Fila de Processamento | Ao processar um fila de processamento (ProtheusPedidoOmniElresiduo), deve compor o recurso rtbomni/elresiduo com os cpedsite, cproduto, citem e nquant e registrar o retorno e a mensagem final. |
de processamento com retorno/mensagem e code for R200/X200; erro caso |
|
| Fila de Processamento | Ao existirem situacao = 4) para o ProtheusPedidoOmniElresiduo, deve listar os |
Lista gerada com cpedsite consistente (a partir da chave), datas em d/m/Y H:i:s e mensagem consolidada para suporte operacional. |
