Ir para o conteúdo principal

ProtheusNotaFiscalMarketplaceCancelamento (STATUS: AJUSTADO)

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

Este serviço 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 registro para processamento assíncrono.

A captura por data segue processamento cronológico (ordenação/paginação por data), a partir do campo DATA_PARA_TRANSFERENCIA, 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 registros 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 fila de processamento 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: /rest/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 registro 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 registro é atualizado na fila de processamento 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 registro permanece registrado na fila de processamento com detalhes do retorno e mensagem, permitindo acompanhamento e reprocessamento conforme necessidade operacional.

Notificação

A notificação de erros consulta registros com falha na fila de processamento (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 registros 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 registro correspondente na fila. registro pendente registrado na fila com chave consistente para processamento.
Fila de Processamento Integração com Protheus Ao processar um registro pendente na fila de processamento (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. registro atualizado na fila de processamento 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 registro sem erro. registro finalizado como sucesso mesmo quando o cancelamento já tiver sido aplicado anteriormente, evitando erro operacional desnecessário.