ProtheusOrdemProducaoCadastroPi (STATUS: PARCIAL)
Documentação Técnica
| Nome do cliente | OSKLEN |
| Nome do projeto | Integração LINX → Protheus |
| Biblioteca | wosk_protheus_ordem_producao_cadastro_pi |
| 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 ProtheusOrdemProducaoCadastroPi. |
Descrição
Esta biblioteca organiza o envio de dados de Ordem de Produção (Cadastro PI) do LINX para o Protheus, garantindo captura por chave ou por data e registro do resultado da integração.
Capturador
Descrição Conceitual
Permite a captura manual de uma ou mais ordens mediante chave no padrão filial-codigopa-operacao e a captura por agendador de tarefas com base em janela temporal, consultando a origem e registrando cada item para processamento assíncrono.
A captura por data segue ordenação e paginação por DATA_PARA_TRANSFERENCIA para priorizar registros mais antigos e manter continuidade por posição; link conceitual: Processamento por data (ordenação/paginação).
Fonte
Origem consultada: view WOSK_SERVICO_ENVIA_PROTHEUS_CADASTRO_PI_CABECALHO.
Fonte complementar consultada para compor as fases da ordem: view WOSK_SERVICO_ENVIA_PROTHEUS_CADASTRO_PI.
Consulta utilizada na captura por data (WHERE e paginação construídos dinamicamente conforme posição, data e limite configurado):
SELECT
FILIAL AS filial,
CODIGOPA AS codigopa,
QTDEBASE AS qtdbase,
GGF AS ggf,
OPERACAO AS operacao,
DATA_PARA_TRANSFERENCIA
FROM
WOSK_SERVICO_ENVIA_PROTHEUS_CADASTRO_PI_CABECALHO (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
FILIAL AS filial,
CODIGOPA AS codigopa,
QTDEBASE AS qtdbase,
GGF AS ggf,
OPERACAO AS operacao,
DATA_PARA_TRANSFERENCIA
FROM
WOSK_SERVICO_ENVIA_PROTHEUS_CADASTRO_PI_CABECALHO (NOLOCK)
WHERE
filial = '<FILIAL>'
AND codigopa = '<CODIGOPA>'
AND operacao = '<OPERACAO>'
Consulta utilizada para recuperar fases da ordem (WHERE construído dinamicamente por FILIAL, CODIGOPA e OPERACAO):
SELECT
FILIAL AS filial,
CODIGOPA AS codigopa,
QTDEBASE AS qtdbase,
GGF AS ggf,
OPERACAO AS operacao,
FASE_PRODUCAO AS codigo,
DESC_FASE_PRODUCAO AS descricao,
CODIGOMOD AS codigomod,
DATA_PARA_TRANSFERENCIA
FROM
WOSK_SERVICO_ENVIA_PROTHEUS_CADASTRO_PI (NOLOCK)
WHERE
FILIAL = '<FILIAL>'
AND CODIGOPA = '<CODIGOPA>'
AND OPERACAO = '<OPERACAO>'
Operações com Dados
- Leitura: consulta a view WOSK_SERVICO_ENVIA_PROTHEUS_CADASTRO_PI_CABECALHO para obter o registro atual da ordem (filial, codigopa, qtdbase, ggf, operacao, DATA_PARA_TRANSFERENCIA).
- Chave do item: define a chave do item como filial-codigopa-operacao para identificação e rastreio na fila.
- Enriquecimento do registro atual: inclui no conteúdo do item o campo fases, obtido pela consulta à view WOSK_SERVICO_ENVIA_PROTHEUS_CADASTRO_PI, listando para cada fase os campos codigo, descricao e codigomod.
- Controle de limite de captura: obtém o limite de itens por ciclo via configuração woskLimiteCaptura::ProtheusOrdemProducaoCadastroPi, aplicado na paginação da consulta (FETCH NEXT <LIMITE>).
- Continuidade e priorização por data: utiliza DATA_PARA_TRANSFERENCIA como referência de posição e consulta ordenada ascendente com paginação por OFFSET/FETCH, mantendo offset e chave_posicao para evitar recaptura.
- Registro para processamento: cada ordem capturada é persistida como pendência na tabela wosk_queue (banco {$this->bancoIntegrador}) sob o serviço ProtheusOrdemProducaoCadastroPi, com chave filial-codigopa-operacao e conteúdo enriquecido (incluindo fases) 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) |
filial |
filial |
codigopa |
codigopa |
operacao |
operacao |
ggf |
ggf |
qtdbase |
qtdbase (normalizado) |
fases[].codigo |
fases[].codigo |
fases[].descricao |
fases[].descricao |
fases[].codigomod |
fases[].codigomod |
Exemplo de payload:
{
"filial": "",
"codigopa": "",
"operacao": "",
"ggf": "",
"qtdbase": 0,
"fases": [
{
"codigo": "",
"descricao": "",
"codigomod": ""
}
]
}
Tratamento de Dados
- Padronização numérica (precisão padrão do integrador):
- qtdbase: normalizado via padronização numérica antes do envio ao Protheus.
Rotinas Inteligentes
Ordem de Produção Cadastro Pi Integrado: após a integração ser interpretada como sucesso, imediatamente antes de finalizar o item como concluído. Registra o identificador integrado para evitar recaptura/reenvio e manter rastreabilidade.
link: https://kb.illimitar.pro/books/integracao-linx-protheus/page/ordem-de-producao-cadastro-pi-integrado
Integração com o Protheus
Chamada de integração com o Protheus
- Chamada: Requisição HTTP
- Recurso: rtblinx/estrutura
- Método HTTP: POST
- Cabeçalhos:
- tenantId: <UF>,<FILIAL>, onde <UF> corresponde aos 2 primeiros caracteres de filial e <FILIAL> ao valor completo de filial.
Tratamento de retorno
Ausência de resposta: registra falha com mensagem JSON: NÃO HOUVE RESPOSTA. e finaliza o item como erro.
Resposta inválida/inesperada: quando o retorno não for um array ou não contiver o campo Mensagem, registra falha com mensagem JSON: NÃO FOI POSSÍVEL DECODIFICAR A RESPOSTA..
Consolidação de mensagem: quando existir status, ele é mapeado para Mensagem; quando existir erro, ele é utilizado como Mensagem Detalhada (caso contrário, utiliza a própria Mensagem).
Indicadores de erro: considera erro quando existir o campo code no retorno ou quando Mensagem for ERRO; caso contrário, considera sucesso.
Ao final do processamento, o item é atualizado na tabela wosk_queue com o retorno do Protheus (quando existir), a mensagem final (incluindo detalhamento quando aplicável), o tempo de processamento e a situação final (situacao = 2 em sucesso, situacao = 4 em erro). Em cenário de sucesso, também registra o identificador integrado com base na chave filial-codigopa-operacao.
Encaminhamento em cenário de erro
Em cenários de falha (ausência de resposta, retorno inválido/inesperado, presença de code ou Mensagem = ERRO), o item é finalizado como erro e permanece registrado em wosk_queue com detalhes do retorno e mensagem, permitindo acompanhamento e reprocessamento conforme necessidade operacional.
Notificação
wosk_queue (serviço ProtheusOrdemProducaoCadastroPi e situação de erro), ordenando pela data de processamento para priorizar ocorrências mais antigas.Fluxo do Processo
Critérios de Aceitação
| Processo | Subprocesso | Descrição | Situação esperada |
| Capturador | Captura por data e controle de posição | Ao consultar a view WOSK_SERVICO_ENVIA_PROTHEUS_CADASTRO_PI_CABECALHO com filtro por DATA_PARA_TRANSFERENCIA, ordenação ascendente e paginação por OFFSET/FETCH, deve manter a continuidade por posição persistida em wosk_monitor (evento, offset, chave_posicao, data_posicao, filtro). |
Posição atualizada em wosk_monitor e itens pendentes registrados para processamento assíncrono. |
| Capturador | Captura manual por chave | Ao informar uma chave no padrão filial-codigopa-operacao, deve consultar a origem filtrando por filial, codigopa e operacao, complementar o conteúdo com fases e registrar o item correspondente na fila. |
Item pendente registrado para processamento, associado à chave filial-codigopa-operacao, com conteúdo enriquecido. |
| Fila de Processamento | Estruturação e padronização do payload | Ao processar um item pendente em wosk_queue (serviço ProtheusOrdemProducaoCadastroPi), deve montar o payload conforme $field e normalizar qtdbase via padronização numérica antes do envio. |
Payload enviado no formato esperado, contendo filial, codigopa, operacao, ggf, qtdbase e fases. |
| Fila de Processamento | Integração e registro do resultado | Ao integrar com o Protheus (rtblinx/estrutura, POST), deve tratar ausência de resposta ou retorno inválido como erro, considerar erro quando existir code ou Mensagem = ERRO, e registrar em wosk_queue o retorno, a mensagem e a situação final. |
Item atualizado em wosk_queue com situação coerente (sucesso/erro) e rastreabilidade do retorno e mensagem; em sucesso, identificador integrado registrado para a chave filial-codigopa-operacao. |

Nenhum comentário