Ir para o conteúdo principal

ProtheusNotaFiscalMarketplacePontual (STATUS: VERIFICADO)

DocumentaçãDocumentação cnica

Nome do cliente OSKLEN
Nome do projeto IntegraçãIntegração LINX Protheus
Biblioteca wosk_protheus_nota_fiscal_marketplace_pontual
Data 27/02/2026


HistóHistórico de VersõVersões

Data VersãVersão Modificado por DescriçãDescrição da MudançMudança
27/02/2026 1.0 Maykon CriaçãCriação da documentaçãdocumentação cnica do processo ProtheusNotaFiscalMarketplacePontual.

DescriçãDescrição

Este serviçserviço organiza o envio pontual de notas fiscais de marketplace do LINX para o Protheus, garantindo captura por chave ou por períperíodo.

Capturador

DescriçãDescrição Conceitual

Permite a captura manual (por chave composta) e a captura automáautomática (por agendador de tarefas) de notas fiscais pendentes, consultando a origem e registrando cada item para processamento assíassíncrono.

Na captura manual, éé necessánecessário informar uma chave no formato F2_FILIAL-F2_DOC-F2_SERIE-F2_CLIENTE-F2_LOJA, em que cada parte identifica unicamente uma nota fiscal na origem.
A captura automáautomática segue processamento cronolócronológico (ordenaçãordenação/paginaçãpaginação por data) 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_NOTA_OMNIMKTPLACE_PONTUAL.

Origem auxiliar de itens: view WOSK_SERVICO_ENVIA_PROTHEUS_NOTA_OMNIMKTPLACE_ITEM_PONTUAL.

Consulta utilizada na captura automáautomática (janela diádiária calculada a partir de DATA_PARA_TRANSFERENCIA e paginaçãpaginação conforme OFFSET e limite configurado):

SELECT
    TIPO,
    E1_XFILORI,
    F2_FILIAL,
    F2_DOC,
    F2_SERIE,
    F2_PEDIDO,
    F2_TIPO,
    F2_FORMUL,
    F2_EMISSAO,
    F2_CLIENTE,
    F2_LOJA,
    F2_ESPECIE,
    F2_COND,
    F2_XNATOPE,
    F2_CHVNFE,
    F2_HAUTNFE,
    F2_DAUTNFE,
    F2_PROTOCOLO,
    F2_FRETE,
    F2_SEGURO,
    F2_DESPESA,
    DATA_PARA_TRANSFERENCIA
FROM
    WOSK_SERVICO_ENVIA_PROTHEUS_NOTA_OMNIMKTPLACE_PONTUAL (NOLOCK)
WHERE
    DATA_PARA_TRANSFERENCIA BETWEEN '<DATA_INICIO_DIA>' AND '<DATA_FIM_DIA>'
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
    TIPO,
    E1_XFILORI,
    F2_FILIAL,
    F2_DOC,
    F2_SERIE,
    F2_PEDIDO,
    F2_TIPO,
    F2_FORMUL,
    F2_EMISSAO,
    F2_CLIENTE,
    F2_LOJA,
    F2_ESPECIE,
    F2_COND,
    F2_XNATOPE,
    F2_CHVNFE,
    F2_HAUTNFE,
    F2_DAUTNFE,
    F2_PROTOCOLO,
    F2_FRETE,
    F2_SEGURO,
    F2_DESPESA,
    DATA_PARA_TRANSFERENCIA
FROM
    WOSK_SERVICO_ENVIA_PROTHEUS_NOTA_OMNIMKTPLACE_PONTUAL (NOLOCK)
WHERE
    F2_FILIAL = '<F2_FILIAL>'
    AND F2_DOC = '<F2_DOC>'
    AND F2_SERIE = '<F2_SERIE>'
    AND F2_CLIENTE = '<F2_CLIENTE>'
    AND F2_LOJA = '<F2_LOJA>'



Consulta utilizada para recuperar itens da nota fiscal (itens vinculados àà chave principal):

SELECT
    F2_FILIAL,
    F2_DOC,
    F2_SERIE,
    F2_CLIENTE,
    F2_LOJA,
    D2_CCUSTO,
    D2_LOCAL,
    D2_ITEM,
    D2_COD,
    D2_QUANT,
    D2_PRCVEN,
    D2_TOTAL,
    D2_TES,
    D2_BASEICM,
    D2_PICM,
    D2_VALICM,
    D2_DESCON,
    DATA_PARA_TRANSFERENCIA
FROM
    WOSK_SERVICO_ENVIA_PROTHEUS_NOTA_OMNIMKTPLACE_ITEM_PONTUAL (NOLOCK)
WHERE
    F2_FILIAL = '<F2_FILIAL>'
    AND F2_DOC = '<F2_DOC>'
    AND F2_SERIE = '<F2_SERIE>'
    AND F2_CLIENTE = '<F2_CLIENTE>'
    AND F2_LOJA = '<F2_LOJA>'

OperaçõOperações com Dados

- Leitura: consulta a view WOSK_SERVICO_ENVIA_PROTHEUS_NOTA_OMNIMKTPLACE_PONTUAL para obter o registro atual da nota fiscal e montar a chave composta F2_FILIAL-F2_DOC-F2_SERIE-F2_CLIENTE-F2_LOJA.

- Leitura auxiliar de itens: consulta a view WOSK_SERVICO_ENVIA_PROTHEUS_NOTA_OMNIMKTPLACE_ITEM_PONTUAL para obter os itens relacionados àà chave, que serãserão anexados ao conteúconteúdo do item da fila.

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

- Registro para processamento: cada nota fiscal capturada éé persistida como pendêpendência na tabela wosk_queue  sob o serviçserviço ProtheusNotaFiscalMarketplacePontual, com chave composta e conteúconteúdo (incluindo itens) para processamento assíassíncrono.

Fila de Processamento

DescriçãDescrição Conceitual

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.

EstruturaçãEstruturação de Dados

Campo no payload Origem no item de fila (conteúconteúdo)
TIPO TIPO
e1_xfilori E1_XFILORI
f2_filial F2_FILIAL
f2_doc F2_DOC
f2_serie F2_SERIE
f2_pedido F2_PEDIDO
f2_tipo F2_TIPO
f2_formul F2_FORMUL
f2_emissao F2_EMISSAO
f2_cliente F2_CLIENTE
f2_loja F2_LOJA
f2_especie F2_ESPECIE
f2_chvnfe F2_CHVNFE
f2_hautnfe F2_HAUTNFE
f2_dautnfe F2_DAUTNFE
f2_protocolo F2_PROTOCOLO
f2_cond F2_COND
f2_frete F2_FRETE
f2_seguro F2_SEGURO
f2_despesa F2_DESPESA
f2_xnatope F2_XNATOPE
itens[].d2_item D2_ITEM
itens[].d2_cod D2_COD
itens[].d2_quant D2_QUANT
itens[].d2_prcven D2_PRCVEN
itens[].d2_total D2_TOTAL
itens[].d2_tes D2_TES
itens[].d2_baseicm D2_BASEICM
itens[].d2_picm D2_PICM
itens[].d2_valicm D2_VALICM
itens[].D2_DESCON D2_DESCON

Exemplo de payload enviado:

{
  "TIPO": "",
  "e1_xfilori": "",
  "f2_filial": "",
  "f2_doc": "",
  "f2_serie": "",
  "f2_pedido": "",
  "f2_tipo": "",
  "f2_formul": "",
  "f2_emissao": "",
  "f2_cliente": "",
  "f2_loja": "",
  "f2_especie": "",
  "f2_chvnfe": "",
  "f2_hautnfe": "",
  "f2_dautnfe": "",
  "f2_protocolo": "",
  "f2_cond": "",
  "f2_frete": "",
  "f2_seguro": "",
  "f2_despesa": "",
  "f2_xnatope": "",
  "itens": [
    {
      "d2_item": "",
      "d2_cod": "",
      "d2_quant": "",
      "d2_prcven": "",
      "d2_total": "",
      "d2_tes": "",
      "d2_baseicm": "",
      "d2_picm": "",
      "d2_valicm": "",
      "D2_DESCON": ""
    }
  ]
}


Tratamento de Dados

- ValidaçãValidação préprévia obrigatóobrigatória: antes do envio da nota fiscal, valida se o cliente da nota estáestá integrado consultando a rotina inteligente setProtheusClienteIntegrado com a chave F2_LOJA-F2_CLIENTE. Se o estiver integrado, o item éé finalizado como suspenso (situacao = 3) com suspensao_tipo e suspensao_chave preenchidos para tratamento posterior.

- PadronizaçãPadronização numénumérica (precisãprecisão padrãpadrão):
    - f2_frete, f2_seguro, f2_despesa: normalizados com setNumeric(...).
    - itens[].d2_quant, itens[].d2_prcven, itens[].d2_total, itens[].d2_baseicm, itens[].d2_picm, itens[].d2_valicm, itens[].D2_DESCON: normalizados com setNumeric(...).

Rotinas Inteligentes

- Cliente Integrado: validada antes de iniciar o envio da nota fiscal (condiçãcondição obrigatóobrigatória por cliente). Garante que a integraçãintegração da nota fiscal prossiga quando o cliente estiver pronto para o Protheus.
link: https://kb.illimitar.pro/books/integracao-linx-protheus/page/cliente-integrado

- Nota Fiscal Omni Integrado: executada apóapós retorno de sucesso do Protheus para a nota fiscal. Marca a nota fiscal como integrada usando a chave F2_FILIAL-F2_DOC-F2_SERIE-F2_CLIENTE-F2_LOJA para evitar reprocessamento.
link: https://kb.illimitar.pro/books/integracao-linx-protheus/page/nota-fiscal-omni-integrado

IntegraçãIntegração com o Protheus

Chamada de integraçãintegração com o Protheus
- Chamada: RequisiçãRequisição HTTP
- Recurso: linx/nota_fiscal
- todo HTTP: POST
- CabeçCabeçalhos:
    - tenantId: <prefixo_2_caracteres_de_F2_FILIAL>,<F2_FILIAL>
  

Tratamento de retorno

AusêAusência de resposta: registra erro com mensagem mensagem JSON: O HOUVE RESPOSTA. e finaliza o item como falha.

Resposta inváinválida/inesperada: quando o houver code no retorno, registra erro com mensagem JSON: O FOI POSSÍPOSSÍVEL DECODIFICAR A RESPOSTA..

Indicadores de sucesso/erro: considera erro quando code for maior que 299; caso contrácontrário, considera sucesso.

Regra de idempotêidempotência: quando a mensagem contiver numero de nota fiscal ja gravado, o retorno éé reinterpretado como sucesso (forçforça code = 0 e Mensagem = OK).

Sucesso: quando a situaçãsituação for sucesso, marca a nota fiscal como integrada pela rotina inteligente Nota Fiscal Omni Integrado  usando a chave F2_FILIAL-F2_DOC-F2_SERIE-F2_CLIENTE-F2_LOJA.

Quando a prévalidaçãprévalidação de cliente o for atendida, o item éé finalizado como suspenso (situacao = 3) e a fila registra suspensao_tipo = 'ProtheusCliente' e suspensao_chave = 'F2_LOJA-F2_CLIENTE' para direcionar o tratamento.

Encaminhamento em cenácenário de erro

Em cenácenários de falha (ausêausência de resposta, retorno invá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. Em cenácenários de dependêdependência (cliente o integrado), o item éé marcado como suspenso (situacao = 3) para impedir processamento indevido atéaté que a condiçãcondição seja resolvida.

NotificaçãNotificação

A notificaçãnotificação de erros consulta itens com falha na tabela wosk_queue (serviçserviço ProtheusNotaFiscalMarketplacePontual e situaçãsituação de erro), ordenando pela data de processamento para priorizar ocorrêocorrências mais antigas.
Para apresentaçãapresentação, preenche F2_FILIAL, F2_DOC, F2_SERIE, F2_CLIENTE e F2_LOJA a partir da chave do item, normaliza a mensagem para leitura (removendo prefixos/picos cnicos quando identificados e padronizando quebras de linha) e formata data_adicionado e data para d/m/Y H:i:s.

Fluxo do Processo

Diagrama sem nome.jpg


CritéCritérios de AceitaçãAceitação

Processo Subprocesso DescriçãDescrição SituaçãSituação esperada
Capturador Captura automáautomática com ordem por data Ao consultar WOSK_SERVICO_ENVIA_PROTHEUS_NOTA_OMNIMKTPLACE_PONTUAL com filtro por DATA_PARA_TRANSFERENCIA, ordenaçãordenação ascendente e paginaçãpaginação por OFFSET/FETCH, deve manter continuidade por posiçãposição persistida em wosk_monitor (evento, offset, chave_posicao, data_posicao, filtro). PosiçãPosição atualizada em wosk_monitor e itens pendentes registrados na fila com chave composta.
Capturador Captura manual por chave composta Ao informar uma chave no padrãpadrão F2_FILIAL-F2_DOC-F2_SERIE-F2_CLIENTE-F2_LOJA, deve consultar a origem filtrando pelos cinco campos e registrar o item correspondente na fila, anexando itens obtidos de WOSK_SERVICO_ENVIA_PROTHEUS_NOTA_OMNIMKTPLACE_ITEM_PONTUAL. Item pendente registrado na fila com conteúconteúdo completo (cabeçcabeçalho + itens) para integraçãintegração.
Fila de Processamento IntegraçãIntegração com Protheus Ao processar um item pendente em wosk_queue (serviçserviço ProtheusNotaFiscalMarketplacePontual), deve normalizar campos numénuméricos com setNumeric(...), incluir cabeçcabeçalho tenantId e integrar via POST no recurso linx/nota_fiscal. Item atualizado em wosk_queue com retorno/mensagem e situacao coerente (sucesso quando code o indicar erro; erro quando houver ausêausência de resposta, retorno inváinválido ou code > 299).
Fila de Processamento Tratamento de retorno e marcaçãmarcação de integrado Quando a integraçãintegração retornar sucesso (incluindo o caso de idempotêidempotência por mensagem numero de nota fiscal ja gravado), deve marcar a nota como integrada pela rotina inteligente setProtheusNotaFiscalOmniIntegrado e registrar a situaçãsituação final. Nota fiscal marcada como integrada e item de fila finalizado com situaçãsituação de sucesso.