ProtheusTransferencia (STATUS: PARCIAL)
Documentação Técnica
| Nome do cliente | OSKLEN |
| Nome do projeto | Integração LINX → Protheus |
| Biblioteca | wosk_protheus_transferencia |
| Data | 27/02/2026 |
Histórico de Versões
| Data | Versão | Modificado por | Descrição da Mudança |
| 27/02/2026 | 1.0 | Maykon | Criação da documentação técnica do processo ProtheusTransferencia. |
Descrição
Esta biblioteca faz a integração de transferências entre armazéns do LINX para o Protheus, garantindo captura consistente e envio com validação de retorno.
Capturador
Descrição Conceitual
Permite a captura manual (por chave composta) e a captura automática (por agendador de tarefas) das transferências 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_TRANSFERENCIA.
Consulta utilizada na captura automática (WHERE e paginação construídos dinamicamente conforme posição e configuração de limite):
SELECT
D3_FILIAL,
D3_EMISSAO,
D3_DOC,
D3_XLOCALORIG,
D3_XLOCALDEST,
D3_COD,
D3_DESCRI,
D3_QUANT,
DATA_PARA_TRANSFERENCIA
FROM
WOSK_SERVICO_ENVIA_PROTHEUS_TRANSFERENCIA
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 composta e WHERE construído dinamicamente a partir da chave informada):
SELECT
D3_FILIAL,
D3_EMISSAO,
D3_DOC,
D3_XLOCALORIG,
D3_XLOCALDEST,
D3_COD,
D3_DESCRI,
D3_QUANT,
DATA_PARA_TRANSFERENCIA
FROM
WOSK_SERVICO_ENVIA_PROTHEUS_TRANSFERENCIA
WHERE
D3_FILIAL = '<D3_FILIAL>'
AND D3_EMISSAO = '<D3_EMISSAO>'
AND D3_DOC = '<D3_DOC>'
AND D3_COD = '<D3_COD>'
Operações com Dados
- Leitura: consulta a view WOSK_SERVICO_ENVIA_PROTHEUS_TRANSFERENCIA para obter o registro atual de transferência e encaminhar para processamento assíncrono.
- Chave de identificação do item: composta no padrão D3_FILIAL-D3_EMISSAO-D3_DOC-D3_COD, utilizada para registrar o item na fila e para reconstrução de campos no processo de notificação de falhas.
- Persistência de posição/continuidade: registra e atualiza o controle do capturador na tabela wosk_monitor (banco {$this->bancoIntegrador}) usando evento = 'ProtheusTransferencia', mantendo os campos token, offset, filtro, chave_posicao, situacao, data_posicao, data_iniciado e data.
- Situações registradas no controle: parado/início (0), em processamento (1), concluído (2) e problema (4). Em caso de falha, o campo filtro recebe um histórico em ERRORS[] com DATE e MESSAGE para auditoria.
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 registro atual |
D3_FILIAL |
D3_FILIAL |
D3_EMISSAO |
D3_EMISSAO |
D3_DOC |
D3_DOC |
D3_XLOCALORIG |
D3_XLOCALORIG |
D3_XLOCALDEST |
D3_XLOCALDEST |
D3_COD |
D3_COD |
D3_DESCRI |
D3_DESCRI |
D3_QUANT |
D3_QUANT |
Exemplo de payload enviado:
{
"D3_FILIAL": "",
"D3_EMISSAO": "",
"D3_DOC": "",
"D3_XLOCALORIG": "",
"D3_XLOCALDEST": "",
"D3_COD": "",
"D3_DESCRI": "",
"D3_QUANT": ""
}
Tratamento de Dados
Antes do envio, o campo D3_QUANT é padronizado para número com precisão de 3 casas decimais, garantindo consistência de formato para integração.
Integração com o Protheus
Chamada de integração com o Protheus
- Chamada: Requisição HTTP
- Recurso: transferencia_armazens
- Método HTTP: POST
- Cabeçalhos:
- tenantId: <UF_DA_FILIAL>,<D3_FILIAL> (montado a partir dos 2 primeiros caracteres de D3_FILIAL + vírgula + o valor completo de D3_FILIAL)
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.
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 ProtheusTransferencia e situação de erro), ordenando pela data de processamento para priorizar ocorrências mais antigas. Para compor a listagem, a chave do item é decomposta para preencher os campos D3_FILIAL, D3_EMISSAO, D3_DOC e D3_COD, e as datas data_adicionado e data são formatadas para apresentação.Fluxo do Processo
Critérios de Aceitação
| Processo | Subprocesso | Descrição | Situação esperada |
| Capturador | Captura cronológica e controle de posição | Ao consultar a view WOSK_SERVICO_ENVIA_PROTHEUS_TRANSFERENCIA com ordenação por DATA_PARA_TRANSFERENCIA e paginação, 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. |
| Capturador | Captura manual por chave composta | Ao informar uma chave no padrão D3_FILIAL-D3_EMISSAO-D3_DOC-D3_COD, deve consultar a view com filtros exatos desses campos e registrar o item correspondente para processamento. |
Item pendente registrado para processamento, associado à chave composta e apto a integração. |
| Fila de Processamento | Integração com Protheus | Ao processar um item pendente em wosk_queue (serviço ProtheusTransferencia), deve montar payload conforme $field, padronizar D3_QUANT com precisão de 3 casas decimais e realizar a requisição ao recurso transferencia_armazens. |
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). |
