ProtheusPedidoMarketplace (STATUS: REVISANDO)
Documentação Técnica
| Nome do cliente | OSKLEN |
| Nome do projeto | Integração LINX → Protheus |
| Biblioteca | wosk_protheus_pedido_marketplace |
| Data | 02/03/2026 |
Histórico de Versões
| Data | Versão | Modificado por | Descrição da Mudança |
| 02/03/2026 | 1.0 | Maykon/Gustavo | Criação da documentação técnica do processo ProtheusPedidoMarketplace. |
Descrição
Este serviço organiza a integração de pedidos de marketplace do LINX para o Protheus, garantindo captura por chave ou por data e registro do resultado do envio.
Capturador
Descrição Conceitual
Permite a captura manual de um ou mais pedidos por chave no padrão c5_filial-c5_xidlinx 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, 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.
Fontes complementares consultadas para compor o pedido completo:-
- view
WOSK_SERVICO_ENVIA_PROTHEUS_PEDIDO_OMNIMKTPLACE_ITEM(itens).- - view
WOSK_SERVICO_ENVIA_PROTHEUS_PEDIDO_OMNIMKTPLACE_FORMA(formas de pagamento).
Consulta utilizada na captura por data (WHERE e paginação construídos dinamicamente conforme posição e limite configurado):
SELECT
TIPO,
e1_xfilori,
c5_filial,
c5_cliente,
c5_lojacli,
c5_condpag,
c5_naturez,
c5_xidlinx,
c5_xtplinx,
c5_frete,
c5_vend1,
DATA_PARA_TRANSFERENCIA
FROM
WOSK_SERVICO_ENVIA_PROTHEUS_PEDIDO_OMNIMKTPLACE (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
TIPO,
e1_xfilori,
c5_filial,
c5_cliente,
c5_lojacli,
c5_condpag,
c5_naturez,
c5_xidlinx,
c5_xtplinx,
c5_frete,
c5_vend1,
DATA_PARA_TRANSFERENCIA
FROM
WOSK_SERVICO_ENVIA_PROTHEUS_PEDIDO_OMNIMKTPLACE (NOLOCK)
WHERE
c5_filial = '<C5_FILIAL>'
AND c5_xidlinx = '<C5_XIDLINX>'
Consulta utilizada para recuperar itens do pedido (WHERE construído dinamicamente por c5_filial e c5_xidlinx):
SELECT
c5_filial,
c5_cliente,
c5_lojacli,
c5_xidlinx,
c5_xtplinx,
c6_item,
c6_produto,
c6_qtdven,
c6_prcven,
c6_valor,
c6_tes,
c6_qtdlib,
c6_valdesc,
DATA_PARA_TRANSFERENCIA
FROM
WOSK_SERVICO_ENVIA_PROTHEUS_PEDIDO_OMNIMKTPLACE_ITEM (NOLOCK)
WHERE
c5_filial = '<C5_FILIAL>'
AND c5_xidlinx = '<C5_XIDLINX>'
Consulta utilizada para recuperar formas de pagamento do pedido (WHERE construído dinamicamente por c5_filial e c5_xidlinx):
SELECT
c5_filial,
c5_cliente,
c5_lojacli,
c5_xidlinx,
[DATA] AS [data],
FORMA AS forma,
VALOR_TOTAL AS valor,
DATA_PARA_TRANSFERENCIA,
nsu,
autori,
tid
FROM
WOSK_SERVICO_ENVIA_PROTHEUS_PEDIDO_OMNIMKTPLACE_FORMA (NOLOCK)
WHERE
c5_filial = '<C5_FILIAL>'
AND c5_xidlinx = '<C5_XIDLINX>'
Operações com Dados
- Leitura: consulta a view WOSK_SERVICO_ENVIA_PROTHEUS_PEDIDO_OMNIMKTPLACE para obter o registro atual do pedido (TIPO, e1_xfilori, c5_filial, c5_cliente, c5_lojacli, c5_condpag, c5_naturez, c5_xidlinx, c5_xtplinx, c5_frete, c5_vend1, DATA_PARA_TRANSFERENCIA).- Chave do registro: define a chave do registro como c5_filial-c5_xidlinx para identificação e rastreio na fila.- Enriquecimento do registro atual: para cada chave capturada, complementa o conteúdo com:
itensa partir da viewWOSK_SERVICO_ENVIA_PROTHEUS_PEDIDO_OMNIMKTPLACE_ITEM.c5_xformaa partir da viewWOSK_SERVICO_ENVIA_PROTHEUS_PEDIDO_OMNIMKTPLACE_FORMA.-- Controle de limite de captura: obtém o limite de registros por ciclo via configuração
woskLimiteCaptura::ProtheusPedidoMarketplace, aplicado na paginação da consulta (FETCH NEXT <LIMITE>).- - Persistência de posição/continuidade: registra e atualiza o controle do capturador na tabela
wosk_monitorusandoevento = 'ProtheusPedidoMarketplace', mantendotoken,offset,filtro,chave_posicao,situacao,data_posicao,data_iniciadoedata.- - Registro para processamento: cada pedido capturado é persistido como pendência na fila de processamento sob o serviço
ProtheusPedidoMarketplace, com chavec5_filial-c5_xidlinxe conteúdo completo (incluindoitensec5_xforma) 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) |
TIPO |
TIPO (removido antes do envio) |
e1_xfilori |
e1_xfilori |
c5_filial |
c5_filial |
c5_cliente |
c5_cliente |
c5_lojacli |
c5_lojacli |
c5_condpag |
c5_condpag |
c5_frete |
c5_frete (normalizado) |
c5_naturez |
c5_naturez |
c5_xidlinx |
c5_xidlinx |
c5_xtplinx |
c5_xtplinx |
c5_vend1 |
c5_vend1 (removido quando TIPO = OMNI) |
c5_xforma[].data |
c5_xforma[].data (formatado) |
c5_xforma[].forma |
c5_xforma[].forma |
c5_xforma[].valor |
c5_xforma[].valor (normalizado) |
c5_xforma[].nsu |
c5_xforma[].nsu |
c5_xforma[].autori |
c5_xforma[].autori |
c5_xforma[].tid |
c5_xforma[].tid |
itens[].c6_item |
itens[].c6_item |
itens[].c6_produto |
itens[].c6_produto |
itens[].c6_qtdven |
itens[].c6_qtdven (normalizado) |
itens[].c6_prcven |
itens[].c6_prcven (normalizado) |
itens[].c6_valor |
itens[].c6_valor (normalizado) |
itens[].c6_tes |
itens[].c6_tes |
itens[].c6_qtdlib |
itens[].c6_qtdlib (normalizado) |
itens[].c6_valdesc |
itens[].c6_valdesc (normalizado quando existir) |
Tratamento de Dados
Transformações aplicadas no payload antes do envio:
Validação prévia de integração do cliente: antes de enviar o pedido, valida se o cliente (c5_lojacli-c5_cliente) está integrado.
Quando a validação falha, o registro é concluído como suspenso (situacao = 3) com suspensaoTipo e suspensaoChave preenchidos para rastreio.
Padronização numérica (precisão padrão do integrador):
c5_frete: normalizado via padronização numérica.c5_xforma[].valor: normalizado via padronização numérica.itens[].c6_qtdven,itens[].c6_prcven,itens[].c6_valor,itens[].c6_qtdlib: normalizados via padronização numérica.itens[].c6_valdesc: normalizado via padronização numérica quando existir no item.
Padronização de data em forma de pagamento: c5_xforma[].data é convertida para o formato d/m/Y antes do envio.
Ajuste condicional de campos: quando TIPO for OMNI, remove o campo c5_vend1 do payload. Em seguida, remove o campo TIPO do payload em todos os cenários.
Persistência de de/para do pedido (quando aplicável): ao receber no retorno do Protheus o identificador id, verifica existência e, se necessário, insere na tabela OSK_DEPARA_PROTHEUS_PEDIDO_OMNI_MARKETPLACE o relacionamento PEDIDO_LINX (valor de c5_xidlinx) e PEDIDO_PROTHEUS (valor de id), registrando DATA_PARA_TRANSFERENCIA com GETDATE().
Integração com o Protheus
- Chamada: Requisição HTTP
- Recurso:
/rest/linx/pedido_venda - Método HTTP:
POST - Cabeçalhos:
- tenantId:
<UF>,<C5_FILIAL>, onde<UF>corresponde aos 2 primeiros caracteres dec5_filiale<C5_FILIAL>ao valor completo dec5_filial.
- tenantId:
Exemplo de payload:
