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 itemregistro 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 itensregistros 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 tabelafila de processamento sob o serviço wosk_queueProtheusNotaFiscalMarketplaceCancelamento, com chave composta e conteúdo da origem para processamento assíncrono.
Fila de Processamento
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 itemregistro 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 itemregistro é atualizado na tabelafila de processamento com o retorno do Protheus (quando existir), a mensagem consolidada e a situação final (wosk_queuesituacao = 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 itemregistro permanece registrado emna fila de processamento com detalhes do retorno e mensagem, permitindo acompanhamento e reprocessamento conforme necessidade operacional.wosk_queue
Notificação
wosk_queuede processamento (serviço ProtheusNotaFiscalMarketplaceCancelamento e situação de erro), ordenando pela data de processamento para priorizar ocorrências mais antigas.Fluxo do Processo
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 |
| 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 |
|
| Fila de Processamento | Integração com Protheus | Ao processar um 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. |
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 |
