Ir para o conteúdo principal

ProtheusNotaFiscalMarketplaceCancelamento (STATUS: PARCIAL)

Documentação Técnica

Nome do cliente OSKLEN
Nome do projeto Integração LINX → Protheus
Biblioteca wosk_protheus_nota_fiscal_marketplace_cancelamento
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 Criação da documentação técnica do processo ProtheusNotaFiscalMarketplaceCancelamento.

Descrição

Esta biblioteca organiza o cancelamento de registros de marketplace do LINX no Protheus, garantindo captura por chave ou por data e registro do resultado do cancelamento.

Capturador

Descrição Conceitual

Permite a captura manual de um ou mais registros por chave composta (c5_filial-c5_num) e a captura por agendador de tarefas com base em janela temporal, consultando a origem e registrando cada item para processamento assíncrono.

A captura por data 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_PEDIDO_OMNIMKTPLACE_CANCELAMENTO.

Consulta utilizada na captura por data (WHERE e paginação construídos dinamicamente conforme posição e limite configurado):

SELECT
    c5_filial,
    c5_num,
    DATA_PARA_TRANSFERENCIA
FROM
    WOSK_SERVICO_ENVIA_PROTHEUS_PEDIDO_OMNIMKTPLACE_CANCELAMENTO (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
    c5_filial,
    c5_num,
    DATA_PARA_TRANSFERENCIA
FROM
    WOSK_SERVICO_ENVIA_PROTHEUS_PEDIDO_OMNIMKTPLACE_CANCELAMENTO (NOLOCK)
WHERE
    c5_filial = '<C5_FILIAL>'
    AND c5_num = '<C5_NUM>'

 

Operações com Dados

- Leitura: consulta a view WOSK_SERVICO_ENVIA_PROTHEUS_PEDIDO_OMNIMKTPLACE_CANCELAMENTO para obter o registro atual (c5_filial, c5_num, DATA_PARA_TRANSFERENCIA) e montar a chave composta c5_filial-c5_num.

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

- Registro para processamento: cada registro capturado é persistido como pendência na tabela wosk_queue sob o serviço ProtheusNotaFiscalMarketplaceCancelamento, com chave composta e conteúdo da origem para processamento assíncrono.

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.

Estruturação de Dados

Campo no payload Origem no item de fila (conteúdo)
c5_filial c5_filial
c5_num c5_num

Exemplo de payload enviado:

{
  "c5_filial": "",
  "c5_num": ""
}



Tratamento de Dados

- Campos utilizados na integração: o envio utiliza os campos c5_filial e c5_num do item da fila.

Integração com o Protheus

Chamada de integração com o Protheus
- Chamada: Requisição HTTP
- Recurso: linx/pedido_venda
- Método HTTP: DELETE
- Cabeçalhos:
  - tenantId: <prefixo_2_caracteres_de_f2_filial>,<f2_filial>.

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 houver code no retorno, registra falha com mensagem JSON: NÃO FOI POSSÍVEL DECODIFICAR A RESPOSTA..

Consolidação de mensagem: a mensagem final é composta por message e, quando existir, complementada por detailedMessage.

Regra de idempotência: quando a mensagem indicar ja integrado, ja gravado ou pedido foi faturado, o retorno é reinterpretado como sucesso (força Mensagem = OK e code = 0).

Sucesso/erro: finaliza como erro quando code > 299; caso contrário, finaliza como sucesso.

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 (situacao = 2 em sucesso, situacao = 4 em erro). O tempo de processamento é registrado para acompanhamento operacional.

Encaminhamento em cenário de erro

Em cenários de falha (ausência de resposta, retorno inválido ou code > 299), o item permanece registrado em wosk_queue com detalhes do retorno e mensagem, permitindo acompanhamento e reprocessamento conforme necessidade operacional.

Notificação

A notificação de erros consulta itens com falha na tabela wosk_queue (serviço ProtheusNotaFiscalMarketplaceCancelamento e situação de erro), ordenando pela data de processamento para priorizar ocorrências mais antigas.

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_PEDIDO_OMNIMKTPLACE_CANCELAMENTO 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 em wosk_monitor e itens pendentes registrados para processamento assíncrono.
Capturador Captura manual por chave composta Ao informar uma chave no padrão c5_filial-c5_num, deve consultar a origem filtrando por c5_filial e c5_num e registrar o item correspondente na fila. Item pendente registrado na fila com chave consistente para processamento.
Fila de Processamento Integração com Protheus Ao processar um item pendente em wosk_queue (serviço ProtheusNotaFiscalMarketplaceCancelamento), deve montar o payload conforme $field (c5_filial, c5_num), definir o cabeçalho tenantId e integrar com o recurso linx/pedido_venda via DELETE. Item atualizado em wosk_queue com retorno/mensagem e situação final coerente (sucesso quando não houver erro; erro quando houver ausência de resposta, retorno inválido ou code > 299).
Fila de Processamento Idempotência por mensagem Quando o retorno indicar ja integrado, ja gravado ou pedido foi faturado, deve reinterpretar o resultado como sucesso e concluir o item sem erro. Item finalizado como sucesso mesmo quando o cancelamento já tiver sido aplicado anteriormente, evitando erro operacional desnecessário.