ProtheusCliente (STATUS: AVALIANDO-GUS)
Documentação Técnica
| Nome do cliente | OSKLEN |
| Nome do projeto | Integração LINX → Protheus |
| Biblioteca | wosk_protheus_cliente |
| 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 ProtheusCliente. |
Descrição
Esta biblioteca organiza a integração de cadastros de clientes do LINX para o Protheus, mantendo rastreabilidade do processamento e do retorno da integração.
Capturador
Descrição Conceitual
O capturador recupera clientes a partir da fonte WOSK_SERVICO_ENVIA_PROTHEUS_CLIENTES e também permite captura manual por chave, garantindo validação do formato e previsibilidade do fluxo. No processo incremental, os registros são filtrados e ordenados por DATA_PARA_TRANSFERENCIA e paginados, permitindo continuidade pela posição registrada.
Esse fluxo caracteriza processamento cronológico (ordenação/paginação por data). Conceito cronológico.
Fonte
Consulta principal (filtro por data e paginação):
SELECT
A1_COD,
A1_LOJA,
CGC_CPF,
NOME,
PESSOA,
NOME_REDUZ,
ENDERECO,
BAIRRO,
COMPLEMENTO,
TIPO,
UF,
COD_MUNICIPIO_IBGE,
CEP,
DDI,
DDD,
TELEFONE,
CONTATO,
A1_PFISICA,
A1_INSCR,
INSC_MUNICIPAL,
DATA_NASC,
EMAIL,
COD_PAIS_SISCOMEX,
COD_PAIS_BC,
A1_CONTA,
A1_CONTRIB,
A1_TPESSOA,
A1_SUFRAMA,
A1_CALCSUF,
A1_CODMUN,
STATUS,
DATA_PARA_TRANSFERENCIA
FROM
WOSK_SERVICO_ENVIA_PROTHEUS_CLIENTES
WHERE
DATA_PARA_TRANSFERENCIA >= '<DATA_PARA_TRANSFERENCIA>'
ORDER BY
DATA_PARA_TRANSFERENCIA ASC
OFFSET <OFFSET> ROWS FETCH NEXT <LIMITE> ROWS ONLY
Consulta de captura manual (WHERE construído dinamicamente a partir da chave):
SELECT
A1_COD,
A1_LOJA,
CGC_CPF,
NOME,
PESSOA,
NOME_REDUZ,
ENDERECO,
BAIRRO,
COMPLEMENTO,
TIPO,
UF,
COD_MUNICIPIO_IBGE,
CEP,
DDI,
DDD,
TELEFONE,
CONTATO,
A1_PFISICA,
A1_INSCR,
INSC_MUNICIPAL,
DATA_NASC,
EMAIL,
COD_PAIS_SISCOMEX,
COD_PAIS_BC,
A1_CONTA,
A1_CONTRIB,
A1_TPESSOA,
A1_SUFRAMA,
A1_CALCSUF,
A1_CODMUN,
STATUS,
DATA_PARA_TRANSFERENCIA
FROM
WOSK_SERVICO_ENVIA_PROTHEUS_CLIENTES
WHERE
A1_LOJA = '<A1_LOJA>'
AND A1_COD = '<A1_COD>'
AND CGC_CPF = '<CGC_CPF (opcional)>'
Operações com Dados
Entrada de dados: registros vindos de WOSK_SERVICO_ENVIA_PROTHEUS_CLIENTES.
Validação (captura manual): exige chave no padrão A1_LOJA-A1_COD ou A1_LOJA-A1_COD-CGC_CPF; em formato inválido, o processo é interrompido com erro de chave inválida.
Persistência (fila): para cada registro capturado é gravado um item na tabela wosk_queue para processamento posterior, usando o serviço ProtheusCliente e chave no padrão A1_LOJA-A1_COD-CGC_CPF.
Persistência (continuidade): a posição do capturador (índices como offset, chave_posicao, data_posicao, filtro, situacao) é atualizada ao longo do fluxo para permitir retomada controlada (tabela interna não explicitada neste arquivo).
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 capturado |
A1_COD |
A1_COD |
A1_LOJA |
A1_LOJA |
A1_CGC |
CGC_CPF |
A1_NOME |
NOME |
A1_PESSOA |
PESSOA |
A1_NREDUZ |
NOME_REDUZ |
A1_END |
ENDERECO |
A1_BAIRRO |
BAIRRO |
A1_COMPLEM |
COMPLEMENTO |
A1_TIPO |
TIPO |
A1_EST |
UF |
A1_COD_MUN |
COD_MUNICIPIO_IBGE |
A1_CEP |
CEP |
A1_DDI |
DDI |
A1_DDD |
DDD |
A1_TEL |
TELEFONE |
A1_CONTATO |
CONTATO |
A1_PFISICA |
A1_PFISICA |
A1_INSCR |
A1_INSCR |
A1_INSCRM |
INSC_MUNICIPAL |
A1_DTNASC |
DATA_NASC |
A1_EMAIL |
EMAIL |
A1_PAIS |
COD_PAIS_SISCOMEX |
A1_CODPAIS |
COD_PAIS_BC |
A1_CONTA |
A1_CONTA |
A1_CONTRIB |
A1_CONTRIB |
A1_TPESSOA |
A1_TPESSOA |
A1_SUFRAMA |
A1_SUFRAMA |
A1_CALCSUF |
A1_CALCSUF |
A1_CODMUN |
A1_CODMUN |
A1_MSBLQL |
STATUS |
Exemplo de payload enviado (JSON):
{
"A1_COD": "<A1_COD>",
"A1_LOJA": "<A1_LOJA>",
"A1_CGC": "<CGC_CPF>",
"A1_NOME": "<NOME>",
"A1_PESSOA": "<PESSOA>",
"A1_NREDUZ": "<NOME_REDUZ>",
"A1_END": "<ENDERECO>",
"A1_BAIRRO": "<BAIRRO>",
"A1_COMPLEM": "<COMPLEMENTO>",
"A1_TIPO": "<TIPO>",
"A1_EST": "<UF>",
"A1_COD_MUN": "<COD_MUNICIPIO_IBGE>",
"A1_CEP": "<CEP>",
"A1_DDI": "<DDI>",
"A1_DDD": "<DDD>",
"A1_TEL": "<TELEFONE>",
"A1_CONTATO": "<CONTATO>",
"A1_PFISICA": "<A1_PFISICA>",
"A1_INSCR": "<A1_INSCR>",
"A1_INSCRM": "<INSC_MUNICIPAL>",
"A1_DTNASC": "<DATA_NASC>",
"A1_EMAIL": "<EMAIL>",
"A1_PAIS": "<COD_PAIS_SISCOMEX>",
"A1_CODPAIS": "<COD_PAIS_BC>",
"A1_CONTA": "<A1_CONTA>",
"A1_CONTRIB": "<A1_CONTRIB>",
"A1_TPESSOA": "<A1_TPESSOA>",
"A1_SUFRAMA": "<A1_SUFRAMA>",
"A1_CALCSUF": "<A1_CALCSUF>",
"A1_CODMUN": "<A1_CODMUN>",
"A1_MSBLQL": "<STATUS>"
}
Tratamento de Dados
Transformações aplicadas no payload antes do envio ao Protheus (campos e regra):
- A1_NOME, A1_NREDUZ: remove o caractere | e remove acentuação.
- A1_END, A1_BAIRRO, A1_CONTATO: remove acentuação.
- A1_CODPAIS: converte para numérico e preenche à esquerda com 0 até 5 dígitos.
Integração com o Protheus
Chamada de integração com o Protheus
- Chamada: Requisição HTTP
- Recurso: cliente
- Método HTTP: POST
- Cabeçalhos:
- tenantId: 01,01SD0001
Exemplo de payload enviado: ver seção Estruturação de Dados (JSON completo conforme $field).
Tratamento de retorno
Classificação do retorno do Protheus (impacta diretamente a situação do item na tabela wosk_queue):
- Ausência de resposta: finaliza como erro (situacao = 4) e registra a mensagem.
- Resposta inválida/inesperada: se não for um array ou não trouxer Mensagem, finaliza como erro (situacao = 4).
- Indicadores de erro: se existir code no retorno ou se Mensagem for ERRO, finaliza como erro (situacao = 4).
- Condição de sucesso: quando não houver indicador de erro, finaliza como sucesso (situacao = 2) e marca o cliente como integrado.
Rotinas Inteligentes
setProtheusClienteIntegrado: após confirmação de sucesso da integração. Marca o cliente (A1_LOJA-A1_COD) como integrado no controle de integração.
link: https://kb.illimitar.pro/books/integracao-linx-protheus/page/setprotheusclienteintegrado
Encaminhamento em cenário de erro
Em erro no retorno do Protheus (situacao = 4), o fluxo aciona uma captura alternativa do cliente pelo serviço ProtheusClientePadrao para a chave A1_LOJA-A1_COD e valida a existência do item alternativo na tabela wosk_queue; quando existir, o item do fluxo original pode ser removido para evitar duplicidade.
Notificação
wosk_queue (serviço ProtheusCliente e situação de erro), ordenando pelo horário de processamento para priorizar ocorrências mais antigas e enviar comunicação aos destinatários configurados.No conteúdo, a chave é decomposta para apresentar
A1_LOJA, A1_COD e CGC_CPF; a mensagem de erro é higienizada removendo prefixos padrão (incluindo trechos associados a SQL Server) e normalizando quebras de linha; e os campos de data/hora são exibidos no formato dd/mm/YYYY HH:ii:ss.Fluxo do Processo
Critérios de Aceitação
| Processo | Subprocesso | Descrição | Situação esperada |
| Capturador | Captura e enfileiramento | Ao recuperar clientes em WOSK_SERVICO_ENVIA_PROTHEUS_CLIENTES e gerar a chave A1_LOJA-A1_COD-CGC_CPF, deve registrar um item por cliente na tabela wosk_queue para o serviço ProtheusCliente. |
Itens pendentes persistidos na wosk_queue com chave consistente e prontos para processamento. |
| Fila de Processamento | Integração com Protheus | Ao processar um item pendente, deve estruturar o payload conforme o schema $field, aplicar as transformações definidas (A1_NOME/A1_NREDUZ, A1_END/A1_BAIRRO/A1_CONTATO, A1_CODPAIS) e chamar o recurso cliente no Protheus via POST com o cabeçalho tenantId. |
Em sucesso, item finaliza com situacao = 2 e o cliente é marcado como integrado; em erro, item finaliza com situacao = 4 com mensagem registrada. |
| Notificação | Aviso de falhas | Ao existirem itens com erro na wosk_queue para o serviço ProtheusCliente (situacao = 4), deve enviar comunicação aos destinatários configurados com identificação do cliente e mensagem higienizada. |
Destinatários informados com dados legíveis e rastreáveis para atuação e reprocessamento. |

Nenhum comentário