Ir para o conteúdo principal

ProtheusDocumentoEntradaPontual (STATUS: PARCIAL)

Documentação Técnica

Nome do clienteOSKLEN
Nome do projetoIntegração LINX → Protheus
Bibliotecawosk_protheus_documento_entrada_pontual
Data03/03/2026


Histórico de Versões

DataVersãoModificado porDescrição da Mudança
03/03/20261.0Maykon/GustavoCriação da documentação técnica do processo ProtheusDocumentoEntradaPontual.

Descrição

Este processo captura documentos de entrada em uma janela pontual e os encaminha para integração no Protheus.
O fluxo monta o conteúdo completo (cabeçalho e itens), aplica padronizações obrigatórias e registra o resultado final do processamento na fila.

Capturador

Descrição Conceitual

Captura documentos de entrada pendentes na origem pontual e registra cada documento para processamento em fila, mantendo controle de continuidade por offset, chave de posição e data de posição.

A captura utiliza filtro por DATA_PARA_TRANSFERENCIA e executa paginação por data, caracterizando processamento cronológico (ordenação/paginação por data).
link: Cronológico

Fonte

Origem consultada: view WOSK_SERVICO_ENVIA_PROTHEUS_ENTRADAS_PONTUAL.

Consulta base (a condição de filtro/paginação é aplicada dinamicamente durante o fluxo):

SELECT
    F1_FILIAL,
    F1_DOC,
    F1_SERIE,
    F1_FORNECE,
    F1_LOJA,
    F1_COND,
    F1_XNATUR,
    F1_DUPL,
    F1_EMISSAO,
    F1_DTDIGIT,
    F1_RECBMTO,
    F1_EST,
    F1_ESTPRES,
    F1_TIPO,
    F1_FORMUL,
    F1_ESPECIE,
    F1_VALMERC,
    F1_VALBRUT,
    F1_FRETE,
    F1_DESPESA,
    F1_SEGURO,
    F1_DESCONT,
    F1_BASEICM,
    F1_VALICM,
    F1_BASEIPI,
    F1_VALIPI,
    F1_BRICMS,
    F1_ICMSRET,
    F1_BASIMP5,
    F1_VALIMP5,
    F1_BASIMP6,
    F1_VALIMP6,
    BASEPS3,
    VALPS3,
    BASECF3,
    VALCF3,
    F1_MUORITR,
    F1_UFORITR,
    F1_MUDESTR,
    F1_UFDESTR,
    F1_II,
    F1CIF,
    F1_TIPO_NF,
    F1_CHVNFE,
    F1_DAUTNFE,
    F1_HAUTNFE,
    F1_PROTOC,
    F1_NFELETR,
    F1_EMINFE,
    F1_HORNFE,
    F1_TPFRETE,
    F1_TPCTE,
    P1_PLIQUI,
    P1_PBRUTO,
    P1_ESPECI1,
    P1_VOLUME1,
    F1_ORIGLAN,
    F1_NFORIG,
    F1_SERORIG,
    F1_NUMTRIB,
    F1_MOEDA,
    F1_PREFIXO,
    F1_STATUS,
    F1_SDOC,
    F1_TRANSP,
    F1_XNATOPE,
    F1_XCANAL,
    F3_DTCANC,
    F3_CODRSEF,
    F1_XCBSIBS,
    CREPROCESSA,
    DATA_PARA_TRANSFERENCIA
FROM
    WOSK_SERVICO_ENVIA_PROTHEUS_ENTRADAS_PONTUAL (NOLOCK)

Operações com Dados

Leitura: consulta documentos na origem com filtro por DATA_PARA_TRANSFERENCIA em janela de 1 dia (00:00:00 a 23:59:59), ordena por data e aplica paginação com OFFSET/FETCH NEXT. Para cada documento recuperado, consulta os itens completos e registra o conteúdo para processamento.

Consulta efetiva do lote (padrão):

SELECT
    -- (mesmas colunas da consulta base)
FROM
    WOSK_SERVICO_ENVIA_PROTHEUS_ENTRADAS_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
    {TOP} ROWS ONLY

Captura manual por chave: a consulta é montada dinamicamente a partir da chave informada, filtrando obrigatoriamente por:

SELECT
    -- (mesmas colunas da consulta base)
FROM
    WOSK_SERVICO_ENVIA_PROTHEUS_ENTRADAS_PONTUAL (NOLOCK)
WHERE
    F1_FILIAL = '{F1_FILIAL}'
    AND F1_DOC = '{F1_DOC}'
    AND F1_SERIE = '{F1_SERIE}'
    AND F1_FORNECE = '{F1_FORNECE}'
    AND F1_LOJA = '{F1_LOJA}'

Consulta de itens do documento:

SELECT
    D1_FILIAL,
    D1_ITEM,
    D1_COD,
    B1_TP,
    B1_UM,
    B1_LOCAL,
    B1_GRUPO,
    D1_TEC,
    D1_QUANT,
    D1_VUNIT,
    D1_TOTAL,
    D1_DESC,
    D1_VALDESC,
    D1_SEGURO,
    D1_VALFRE,
    D1_DESPESA,
    D1_EMISSAO,
    D1_DTDIGIT,
    D1_DOC,
    D1_SERIE,
    F1_SDOC,
    D1_TIPO,
    D1_FORNECE,
    D1_LOJA,
    D1_CLASFIS,
    D1_OPER,
    D1_CF,
    D1_BASEIPI,
    D1_IPI,
    D1_VALIPI,
    D1_BASEICM,
    D1_PICM,
    D1_VALICM,
    D1_VRDICMS,
    D1_VALANTI,
    D1_ICMSDIF,
    D1_BASFECP,
    D1_ALQFECP,
    D1_VALFECP,
    D1_ALIQCMP,
    D1_DIFAL,
    D1_BSFCCMP,
    D1_ALFCCMP,
    D1_VFCPDIF,
    D1_AFCPANT,
    D1_VFCPANT,
    D1_BRICMS,
    D1_ALIQSOL,
    D1_MARGEM,
    D1_ICMSRET,
    D1_BSFCPST,
    D1_ALFCPST,
    D1_VFECPST,
    D1_BASIMP5,
    D1_ALQIMP5,
    D1_VALIMP5,
    D1_BASIMP6,
    D1_ALQIMP6,
    D1_VALIMP6,
    D1_ALIQII,
    D1_II,
    D1_CIF,
    D1_TIPO_NF,
    D1_OP,
    D1_CC,
    D1_CONTA,
    D1_PESO,
    D1_DATORI,
    D1_NFORI,
    D1_SERIORI,
    D1_ITEMORI,
    D1_ORIGLAN,
    DKD_XCBSBS,
    DKD_XCBSAL,
    DKD_XCBSVL,
    DKD_XIBSBS,
    DKD_XIBSAL,
    DKD_XIBSVL,
    DATA_PARA_TRANSFERENCIA
FROM
    WOSK_SERVICO_ENVIA_PROTHEUS_ENTRADAS_ITEM_PONTUAL (NOLOCK)
WHERE
    D1_FILIAL = '{F1_FILIAL}'
    AND D1_DOC = '{F1_DOC}'
    AND D1_SERIE = '{F1_SERIE}'
    AND D1_FORNECE = '{F1_FORNECE}'
    AND D1_LOJA = '{F1_LOJA}'

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.

O item é marcado como “Enviando” no início, tem os valores numéricos normalizados (cabeçalho e itens) e, ao final, registra o retorno e a situação final (sucesso/erro/suspenso) para auditoria.

Estruturação de Dados

O payload enviado ao Protheus segue o schema definido na lista de campos da fila. Abaixo está o mapeamento oficial de origem → payload.

Cabeçalho do documento

Campo no payloadCampo de origem
F1_FILIALF1_FILIAL
F1_DOCF1_DOC
F1_SERIEF1_SERIE
F1_FORNECEF1_FORNECE
F1_LOJAF1_LOJA
F1_CONDF1_COND
F1_XNATURF1_XNATUR
F1_DUPLF1_DUPL
F1_EMISSAOF1_EMISSAO
F1_DTDIGITF1_DTDIGIT
F1_RECBMTOF1_RECBMTO
F1_ESTF1_EST
F1_ESTPRESF1_ESTPRES
F1_TIPOF1_TIPO
F1_FORMULF1_FORMUL
F1_ESPECIEF1_ESPECIE
F1_VALMERCF1_VALMERC
F1_VALBRUTF1_VALBRUT
F1_FRETEF1_FRETE
F1_DESPESAF1_DESPESA
F1_SEGUROF1_SEGURO
F1_DESCONTF1_DESCONT
F1_BASEICMF1_BASEICM
F1_VALICMF1_VALICM
F1_BASEIPIF1_BASEIPI
F1_VALIPIF1_VALIPI
F1_BRICMSF1_BRICMS
F1_ICMSRETF1_ICMSRET
F1_BASIMP5F1_BASIMP5
F1_VALIMP5F1_VALIMP5
F1_BASIMP6F1_BASIMP6
F1_VALIMP6F1_VALIMP6
F1_BASEPS3BASEPS3
F1_VALPS3VALPS3
F1_BASECF3BASECF3
F1_VALCF3VALCF3
F1_MUORITRF1_MUORITR
F1_UFORITRF1_UFORITR
F1_MUDESTRF1_MUDESTR
F1_UFDESTRF1_UFDESTR
F1_IIF1_II
F1_CIFF1CIF
F1_TIPO_NFF1_TIPO_NF
F1_CHVNFEF1_CHVNFE
F1_DAUTNFEF1_DAUTNFE
F1_HAUTNFEF1_HAUTNFE
F3_PROTOCF1_PROTOC
F1_NFELETRF1_NFELETR
F1_EMINFEF1_EMINFE
F1_HORNFEF1_HORNFE
F1_TPFRETEF1_TPFRETE
F1_TPCTEF1_TPCTE
F1_PLIQUIP1_PLIQUI
F1_PBRUTOP1_PBRUTO
F1_ESPECI1P1_ESPECI1
F1_VOLUME1P1_VOLUME1
F1_ORIGLANF1_ORIGLAN
F1_NFORIGF1_NFORIG
F1_SERORIGF1_SERORIG
F1_NUMTRIBF1_NUMTRIB
F1_MOEDAF1_MOEDA
F1_PREFIXOF1_PREFIXO
F1_STATUSF1_STATUS
F1_SDOCF1_SDOC
F1_TRANSPF1_TRANSP
F1_XNATOPEF1_XNATOPE
F1_XCANALF1_XCANAL
F3_DTCANCF3_DTCANC
F3_CODRSEFF3_CODRSEF
F1_XCBSIBSF1_XCBSIBS
CREPROCESSACREPROCESSA

ITENS

Campo no payloadCampo de origem
D1_FILIALD1_FILIAL
D1_ITEMD1_ITEM
D1_CODD1_COD
D1_TPB1_TP
D1_UMB1_UM
D1_LOCALB1_LOCAL
D1_GRUPOB1_GRUPO
D1_TECD1_TEC
D1_QUANTD1_QUANT
D1_VUNITD1_VUNIT
D1_TOTALD1_TOTAL
D1_DESCD1_DESC
D1_VALDESCD1_VALDESC
D1_SEGUROD1_SEGURO
D1_VALFRED1_VALFRE
D1_DESPESAD1_DESPESA
D1_EMISSAOD1_EMISSAO
D1_DTDIGITD1_DTDIGIT
D1_DOCD1_DOC
D1_SERIED1_SERIE
D1_SDOCF1_SDOC
D1_TIPOD1_TIPO
D1_FORNECED1_FORNECE
D1_LOJAD1_LOJA
D1_CLASFISD1_CLASFIS
D1_OPERD1_OPER
D1_CFD1_CF
D1_BASEIPID1_BASEIPI
D1_IPID1_IPI
D1_VALIPID1_VALIPI
D1_BASEICMD1_BASEICM
D1_PICMD1_PICM
D1_VALICMD1_VALICM
D1_VRDICMSD1_VRDICMS
D1_VALANTID1_VALANTI
D1_ICMSDIFD1_ICMSDIF
D1_BASFECPD1_BASFECP
D1_ALQFECPD1_ALQFECP
D1_VALFECPD1_VALFECP
D1_ALIQCMPD1_ALIQCMP
D1_DIFALD1_DIFAL
D1_BSFCCMPD1_BSFCCMP
D1_ALFCCMPD1_ALFCCMP
D1_VFCPDIFD1_VFCPDIF
D1_AFCPANTD1_AFCPANT
D1_VFCPANTD1_VFCPANT
D1_BRICMSD1_BRICMS
D1_ALIQSOLD1_ALIQSOL
D1_MARGEMD1_MARGEM
D1_ICMSRETD1_ICMSRET
D1_BSFCPSTD1_BSFCPST
D1_ALFCPSTD1_ALFCPST
D1_VFECPSTD1_VFECPST
D1_BASIMP5D1_BASIMP5
D1_ALQIMP5D1_ALQIMP5
D1_VALIMP5D1_VALIMP5
D1_BASIMP6D1_BASIMP6
D1_ALQIMP6D1_ALQIMP6
D1_VALIMP6D1_VALIMP6
D1_ALIQIID1_ALIQII
D1_IID1_II
D1_CIFD1_CIF
D1_TIPO_NFD1_TIPO_NF
D1_OPD1_OP
D1_CCD1_CC
D1_CONTAD1_CONTA
D1_PESOD1_PESO
D1_DATORID1_DATORI
D1_NFORID1_NFORI
D1_SERIORID1_SERIORI
D1_ITEMORID1_ITEMORI
D1_ORIGLAND1_ORIGLAN
DKD_XCBSBSDKD_XCBSBS
DKD_XCBSALDKD_XCBSAL
DKD_XCBSVLDKD_XCBSVL
DKD_XIBSBSDKD_XIBSBS
DKD_XIBSALDKD_XIBSAL
DKD_XIBSVLDKD_XIBSVL

Exemplo de payload enviado

{
  "F1_FILIAL": "",
  "F1_DOC": "",
  "F1_SERIE": "",
  "F1_FORNECE": "",
  "F1_LOJA": "",
  "F1_COND": "",
  "F1_XNATUR": "",
  "F1_DUPL": "",
  "F1_EMISSAO": "",
  "F1_DTDIGIT": "",
  "F1_RECBMTO": "",
  "F1_EST": "",
  "F1_ESTPRES": "",
  "F1_TIPO": "",
  "F1_FORMUL": "",
  "F1_ESPECIE": "",
  "F1_VALMERC": 0,
  "F1_VALBRUT": 0,
  "F1_FRETE": 0,
  "F1_DESPESA": 0,
  "F1_SEGURO": 0,
  "F1_DESCONT": 0,
  "F1_BASEICM": 0,
  "F1_VALICM": 0,
  "F1_BASEIPI": 0,
  "F1_VALIPI": 0,
  "F1_BRICMS": 0,
  "F1_ICMSRET": 0,
  "F1_BASIMP5": 0,
  "F1_VALIMP5": 0,
  "F1_BASIMP6": 0,
  "F1_VALIMP6": 0,
  "F1_BASEPS3": 0,
  "F1_VALPS3": 0,
  "F1_BASECF3": 0,
  "F1_VALCF3": 0,
  "F1_MUORITR": "",
  "F1_UFORITR": "",
  "F1_MUDESTR": "",
  "F1_UFDESTR": "",
  "F1_II": 0,
  "F1_CIF": 0,
  "F1_TIPO_NF": "",
  "F1_CHVNFE": "",
  "F1_DAUTNFE": "",
  "F1_HAUTNFE": "",
  "F3_PROTOC": "",
  "F1_NFELETR": "",
  "F1_EMINFE": "",
  "F1_HORNFE": "",
  "F1_TPFRETE": "",
  "F1_TPCTE": "",
  "F1_PLIQUI": 0,
  "F1_PBRUTO": 0,
  "F1_ESPECI1": "",
  "F1_VOLUME1": 0,
  "F1_ORIGLAN": "",
  "F1_NFORIG": "",
  "F1_SERORIG": "",
  "F1_NUMTRIB": "",
  "F1_MOEDA": 0,
  "F1_PREFIXO": "",
  "F1_STATUS": "",
  "F1_SDOC": "",
  "F1_TRANSP": "",
  "F1_XNATOPE": "",
  "F1_XCANAL": "",
  "F3_DTCANC": "",
  "F3_CODRSEF": "",
  "F1_XCBSIBS": "",
  "CREPROCESSA": "",
  "ITENS": [
    {
      "D1_FILIAL": "",
      "D1_ITEM": "",
      "D1_COD": "",
      "D1_TP": "",
      "D1_UM": "",
      "D1_LOCAL": "",
      "D1_GRUPO": "",
      "D1_TEC": "",
      "D1_QUANT": 0,
      "D1_VUNIT": 0,
      "D1_TOTAL": 0,
      "D1_DESC": 0,
      "D1_VALDESC": 0,
      "D1_SEGURO": 0,
      "D1_VALFRE": 0,
      "D1_DESPESA": 0,
      "D1_EMISSAO": "",
      "D1_DTDIGIT": "",
      "D1_DOC": "",
      "D1_SERIE": "",
      "D1_SDOC": "",
      "D1_TIPO": "",
      "D1_FORNECE": "",
      "D1_LOJA": "",
      "D1_CLASFIS": "",
      "D1_OPER": "",
      "D1_CF": "",
      "D1_BASEIPI": 0,
      "D1_IPI": 0,
      "D1_VALIPI": 0,
      "D1_BASEICM": 0,
      "D1_PICM": 0,
      "D1_VALICM": 0,
      "D1_VRDICMS": 0,
      "D1_VALANTI": 0,
      "D1_ICMSDIF": 0,
      "D1_BASFECP": 0,
      "D1_ALQFECP": 0,
      "D1_VALFECP": 0,
      "D1_ALIQCMP": 0,
      "D1_DIFAL": 0,
      "D1_BSFCCMP": 0,
      "D1_ALFCCMP": 0,
      "D1_VFCPDIF": 0,
      "D1_AFCPANT": 0,
      "D1_VFCPANT": 0,
      "D1_BRICMS": 0,
      "D1_ALIQSOL": 0,
      "D1_MARGEM": 0,
      "D1_ICMSRET": 0,
      "D1_BSFCPST": 0,
      "D1_ALFCPST": 0,
      "D1_VFECPST": 0,
      "D1_BASIMP5": 0,
      "D1_ALQIMP5": 0,
      "D1_VALIMP5": 0,
      "D1_BASIMP6": 0,
      "D1_ALQIMP6": 0,
      "D1_VALIMP6": 0,
      "D1_ALIQII": 0,
      "D1_II": 0,
      "D1_CIF": 0,
      "D1_TIPO_NF": "",
      "D1_OP": "",
      "D1_CC": "",
      "D1_CONTA": "",
      "D1_PESO": 0,
      "D1_DATORI": "",
      "D1_NFORI": "",
      "D1_SERIORI": "",
      "D1_ITEMORI": "",
      "D1_ORIGLAN": "",
      "DKD_XCBSBS": 0,
      "DKD_XCBSAL": 0,
      "DKD_XCBSVL": 0,
      "DKD_XIBSBS": 0,
      "DKD_XIBSAL": 0,
      "DKD_XIBSVL": 0
    }
  ]
}



Tratamento de Dados

Antes do envio ao Protheus, o payload é normalizado para consistência numérica no cabeçalho e nos itens, e os itens são padronizados para numeração sequencial.

Padronização numérica (setNumeric)
- F1_VALMERC, F1_VALBRUT, F1_FRETE, F1_DESPESA, F1_SEGURO, F1_DESCONT, F1_BASEICM, F1_VALICM, F1_BASEIPI, F1_VALIPI, F1_BRICMS, F1_ICMSRET, F1_BASIMP5, F1_VALIMP5, F1_BASIMP6, F1_VALIMP6, F1_BASEPS3, F1_VALPS3, F1_BASECF3, F1_VALCF3, F1_II, F1_CIF, F1_PLIQUI, F1_PBRUTO, F1_VOLUME1, F1_MOEDA: normalizados com o padrão do setNumeric(...).
- D1_QUANT: normalizado com 3 casas decimais (setNumeric(..., 3, false)).
- D1_VUNIT: normalizado com 5 casas decimais (setNumeric(..., 5, false)).
- D1_TOTAL, D1_DESC, D1_VALDESC, D1_SEGURO, D1_VALFRE, D1_DESPESA, D1_BASEIPI, D1_IPI, D1_VALIPI, D1_BASEICM, D1_PICM, D1_VALICM, D1_VRDICMS, D1_VALANTI, D1_ICMSDIF, D1_BASFECP, D1_ALQFECP, D1_VALFECP, D1_ALIQCMP, D1_DIFAL, D1_BSFCCMP, D1_ALFCCMP, D1_VFCPDIF, D1_AFCPANT, D1_VFCPANT, D1_BRICMS, D1_ALIQSOL, D1_MARGEM, D1_ICMSRET, D1_BSFCPST, D1_ALFCPST, D1_VFECPST, D1_BASIMP5, D1_ALQIMP5, D1_VALIMP5, D1_BASIMP6, D1_ALQIMP6, D1_VALIMP6, D1_ALIQII, D1_II, D1_CIF, D1_PESO, DKD_XCBSBS, DKD_XCBSAL, DKD_XCBSVL, DKD_XIBSBS, DKD_XIBSAL, DKD_XIBSVL: normalizados com o padrão do setNumeric(...).

Padronização da numeração de itens
- D1_ITEM: redefinido para numeração sequencial (1..N) no payload, garantindo consistência do item na integração.

Integração com o Protheus

Chamada de integração com o Protheus
- Chamada: Requisição HTTP
- Recurso: documento_entrada
- Método HTTP: POST
- Cabeçalhos:
  - tenantId: <primeiros 2 caracteres de F1_FILIAL>,<F1_FILIAL>

Tratamento de retorno
- Ausência de resposta: gera erro com mensagem JSON: NÃO HOUVE RESPOSTA.
- Resposta inválida/inesperada: se não for array ou não contiver Mensagem, gera erro com JSON: NÃO FOI POSSÍVEL DECODIFICAR A RESPOSTA.
- Ajuste de sucesso por mensagem: quando a mensagem detalhada contém indicação de “já cadastrado”, a resposta é tratada como sucesso (Mensagem = OK) e o campo code é removido (se existir).
- Condição de erro: quando existir code na resposta ou quando Mensagem = ERRO, o processamento é marcado como falha.
- Condição de sucesso: quando o retorno é considerado OK, o item é finalizado como sucesso e aciona os marcadores correlatos quando aplicável.

Rotinas Inteligentes

- Documento de Saida Integrado (rotina inteligente): chamada antes do envio, quando o documento de entrada foi identificado como devolução por regras de F1_XNATOPE/F1_TIPO e existe chave de origem (D1_NFORI e D1_SERIORI). Garante que o documento de saída associado esteja integrado para suportar o relacionamento.
link: Documento de Saida Integrado
- Nota Fiscal Omni Integrado (rotina inteligente): chamada antes do envio, quando a devolução é tratada no contexto omni. Evita prosseguir com dependência pendente de integração.
link: Nota Fiscal Omni Integrado
- Documento de Cancelamento de Entrada (rotina inteligente): chamada após retorno de sucesso do envio do documento de entrada. Encaminha o cancelamento correlato para manter o status consistente.
link: Documento de Cancelamento de Entrada

Tratamento de retorno

Persistência do resultado: o item processado é atualizado na tabela wosk_queue (base integrador), registrando retorno, mensagem, requisicao, tempo e situacao.

Situações utilizadas:
- 1: Em envio.
- 2: Sucesso.
- 3: Suspenso por dependência.
- 4: Erro.

Encaminhamento em cenário de erro

Quando a falha ocorre por dependência prévia (ex.: integração de origem não concluída), o item pode ser marcado como suspenso e manter informações de tipo/chave para rastreio. Demais falhas permanecem como erro com mensagem registrada para correção e reprocessamento.

Notificação

Em cenário de falhas, a notificação recupera itens com erro na tabela wosk_queue para o serviço ProtheusDocumentoEntradaPontual, ordenando por data de processamento para priorizar ocorrências mais antigas.
SELECT
    `token`,
    `acao`,
    `chave`,
    `data_adicionado`,
    `data`,
    `mensagem` AS 'ERRO'
FROM
    `{BASE_INTEGRADOR}`.`wosk_queue`
WHERE
    `acao` = 'ProtheusDocumentoEntradaPontual'
    AND `situacao` = 4
ORDER BY
    `data` ASC

Fluxo do Processo

Diagrama sem nome.jpg


Critérios de Aceitação

ProcessoSubprocessoDescriçãoSituação esperada
CapturadorCaptura por janela pontualAo capturar documentos na view WOSK_SERVICO_ENVIA_PROTHEUS_ENTRADAS_PONTUAL, deve filtrar por DATA_PARA_TRANSFERENCIA dentro do dia e paginar ordenando por data, atualizando o controle de posição (offset/chave/data) conforme o avanço.Processamento avança em ordem por data, sem duplicidades, mantendo continuidade por posição.
CapturadorCaptura manual por chaveAo informar uma chave no padrão F1_FILIAL-F1_DOC-F1_SERIE-F1_FORNECE-F1_LOJA-F1_TIPO-F1_XNATOPE, deve consultar o documento na origem (ao menos pelos 5 primeiros componentes) e registrar o conteúdo completo para processamento.Item registrado com chave consistente e conteúdo completo (incluindo ITENS).
Fila de ProcessamentoNormalização e consistência de payloadAo processar um item pendente, deve normalizar campos numéricos do cabeçalho e itens, aplicar precisão diferenciada para D1_QUANT (3 casas, false) e D1_VUNIT (5 casas, false), e padronizar D1_ITEM para numeração sequencial no payload.Payload consistente e pronto para envio ao Protheus, com itens numerados e valores padronizados.
Fila de ProcessamentoIntegração e persistência do retornoApós enviar ao Protheus (POST no recurso documento_entrada com header tenantId), deve validar a resposta, tratar “já cadastrado” como sucesso, e registrar em wosk_queue o retorno, mensagem e situação final.Fila atualizada com situação final e detalhes para auditoria; em sucesso, os marcadores correlatos são acionados quando aplicável.