Ir para o conteúdo principal

ProtheusProduto (STATUS: PARCIAL)

Documentação Técnica

Nome do cliente OSKLEN
Nome do projeto Integração LINX → Protheus
Biblioteca wosk_protheus_produto
Data 26/02/2026


Histórico de Versões

Data Versão Modificado por Descrição da Mudança
26/02/2026 1.0 Maykon/Gustavo Criação da documentação técnica do processo ProtheusProduto.

Descrição

Esta biblioteca organiza a integração de produtos do LINX para o Protheus, garantindo captura consistente e envio com validação de retorno.

Capturador

Descrição Conceitual

Permite a captura manual (por lista de chaves) e a captura automática (por agendador de tarefas) dos produtos pendentes de integração, consultando a origem e registrando os itens para processamento assíncrono.

A captura automática segue processamento cronológico (ordenação/paginação por data) para priorizar registros mais antigos e manter continuidade por posição; link conceitual: Processamento cronológico.

Fonte

Origem consultada: view WOSK_SERVICO_ENVIA_PROTHEUS_PRODUTO.

Consulta utilizada na captura automática (WHERE e paginação construídos dinamicamente conforme posição e configuração de limite):

SELECT
    B1_COD,
    B1_DESC,
    B1_TIPO,
    B1_UM,
    B1_LOCPAD,
    B1_GRUPO,
    B1_CONTA,
    B1_CONTRAT,
    ASB1_CEST,
    B1_IPI,
    B1_POSIPI,
    B1_PICMRET,
    B1_PICMENT,
    B1_ORIGEM,
    B1_GRTRIB,
    B1_FECP,
    B1_CCCUSTO,
    B1_PESBRU,
    B1_PESO,
    B1_XPRV1,
    B1_MSBLQL,
    DATA_PARA_TRANSFERENCIA
FROM
    WOSK_SERVICO_ENVIA_PROTHEUS_PRODUTO
WHERE
    DATA_PARA_TRANSFERENCIA >= '<DATA_PARA_TRANSFERENCIA>'
ORDER BY
    DATA_PARA_TRANSFERENCIA ASC
OFFSET
    <OFFSET> ROWS FETCH NEXT <LIMITE> ROWS ONLY

Operações com Dados

  • Leitura: consulta a view WOSK_SERVICO_ENVIA_PROTHEUS_PRODUTO para obter o registro atual de produto (com chave B1_COD) e encaminhar 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 registro atual
B1_COD B1_COD
B1_DESC B1_DESC
B1_TIPO B1_TIPO
B1_UM B1_UM
B1_LOCPAD B1_LOCPAD
B1_GRUPO B1_GRUPO
B1_CONTA B1_CONTA
B1_CONTRAT B1_CONTRAT
B1_CEST ASB1_CEST
B1_IPI B1_IPI
B1_POSIPI B1_POSIPI
B1_PICMRET B1_PICMRET
B1_PICMENT B1_PICMENT
B1_ORIGEM B1_ORIGEM
B1_GRTRIB B1_GRTRIB
B1_FECP B1_FECP
B1_CCCUSTO B1_CCCUSTO
B1_PESBRU B1_PESBRU
B1_PESO B1_PESO
B1_XPRV1 B1_XPRV1
B1_MSBLQL B1_MSBLQL

Exemplo de payload enviado:

{
  "B1_COD": "",
  "B1_DESC": "",
  "B1_TIPO": "",
  "B1_UM": "",
  "B1_LOCPAD": "",
  "B1_GRUPO": "",
  "B1_CONTA": "",
  "B1_CONTRAT": "",
  "B1_CEST": "",
  "B1_IPI": "",
  "B1_POSIPI": "",
  "B1_PICMRET": "",
  "B1_PICMENT": "",
  "B1_ORIGEM": "",
  "B1_GRTRIB": "",
  "B1_FECP": "",
  "B1_CCCUSTO": "",
  "B1_PESBRU": "",
  "B1_PESO": "",
  "B1_XPRV1": "",
  "B1_MSBLQL": ""
}



Tratamento de Dados

Antes do envio, os seguintes campos numéricos do payload são padronizados por rotina de normalização numérica: B1_IPI, B1_PICMRET, B1_PICMENT, B1_FECP, B1_PESBRU, B1_PESO, B1_XPRV1

Integração com o Protheus

Chamada de integração com o Protheus
- Chamada: Requisição HTTP
- Recurso: produto
- Método HTTP: POST
- Cabeçalhos:
  - tenantId: 01,01SD0001
- Tratamento de retorno:
  - Ausência de resposta: registra erro com mensagem de “não houve resposta” e finaliza o item como falha.
  - Resposta inválida/inesperada: se o retorno não puder ser interpretado como estrutura contendo Mensagem, registra erro de decodificação e finaliza como falha.
  - Indicadores de erro: finaliza como falha quando houver code no retorno ou quando Mensagem for ERRO. Quando disponível, utiliza Mensagem Detalhada como mensagem final.
  - Sucesso: quando não houver indicadores de erro, finaliza como sucesso e persiste o retorno para auditoria.

Tratamento de retorno

Ao final do processamento, o item é atualizado na tabela wosk_queue com o retorno do Protheus (quando existir), a mensagem consolidada e a situação final (sucesso/erro). O tempo de processamento é registrado para acompanhamento operacional.

Encaminhamento em cenário de erro

Quando ocorre erro na integração (ausência de resposta, resposta inválida ou retorno com indicador de falha), o item é finalizado como erro e permanece registrado em wosk_queue com detalhes de mensagem e retorno, permitindo acompanhamento e reprocessamento conforme necessidade operacional.

Notificação

A notificação de erros consulta itens com falha na tabela wosk_queue (serviço ProtheusProduto e situação de erro), ordenando pela data de processamento para priorizar ocorrências mais antigas. A mensagem de erro é normalizada para leitura, e o tipo do produto (B1_TIPO) é apresentado de forma descritiva (ex.: MP, PA e demais). Por fim, a notificação encaminha a lista para os destinatários configurados.

Fluxo do Processo

Diagrama sem nome.jpg


Critérios de Aceitação

Processo Subprocesso Descrição Situação esperada
Capturador Captura e registro para processamento Ao consultar a view WOSK_SERVICO_ENVIA_PROTHEUS_PRODUTO com paginação e ordenação por DATA_PARA_TRANSFERENCIA, deve manter a continuidade por posição persistida em wosk_monitor (evento, offset, chave_posicao, data_posicao). Posição atualizada na tabela wosk_monitor e itens pendentes registrados para processamento assíncrono.
Fila de Processamento Estruturação e envio ao Protheus Ao processar um item pendente em wosk_queue (serviço ProtheusProduto), deve montar payload conforme $field, aplicar padronização numérica em B1_IPI, B1_PICMRET, B1_PICMENT, B1_FECP, B1_PESBRU, B1_PESO, B1_XPRV1 e realizar a requisição ao recurso produto. Item atualizado em wosk_queue com retorno/mensagem e situação final coerente (sucesso quando não houver erro; erro quando houver ausência de resposta, resposta inválida, code ou Mensagem = ERRO).
Fila de Processamento Notificação de falhas Ao identificar itens com falha em wosk_queue (serviço ProtheusProduto, situação de erro), deve ordenar pelas ocorrências mais antigas e normalizar a mensagem de erro para leitura, mantendo B1_TIPO em formato descritivo para contexto. Destinatários recebem a notificação com os itens de falha priorizados e mensagem legível, permitindo tratativa operacional.