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_PRODUTOpara obter o registro atual de produto (com chaveB1_COD) e encaminhar 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
$field| 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
$field{
"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. O objetivo é garantir consistência de formato (ex.: separador decimal e representação) conforme exigência do Protheus.
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- Exemplo de payload enviado: - O payload segue a estrutura descrita na seção “Estruturação de Dados”, com campos B1_* e o mapeamento B1_CEST a partir de ASB1_CEST.
- 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
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
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. |
