Ir para o conteúdo principal

ProtheusClienteFull (STATUS: PARCIAL)

Documentação Técnica

Nome do cliente OSKLEN
Nome do projeto Integração LINX → Protheus
Biblioteca wosk_protheus_cliente_full
Token da Biblioteca d1444b58-fc25-4211-845d-a12be3cc09b7
URL de Produção
https://isnapp.illimitar.pro/bibliotecas/d1444b58-fc25-4211-845d-a12be3cc09b7/wosk_protheus_cliente_full
URL de Homologação https://hmg-isnapp.illimitar.pro/bibliotecas/d1444b58-fc25-4211-845d-a12be3cc09b7/wosk_protheus_cliente_full
Data 25/02/2026

Sumário


    Histórico de Versões

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

    Descrição Geral dos Processos

    Esta biblioteca organiza a integração de cadastros de clientes do LINX para o Protheus, garantindo que cada cliente seja identificado, preparado e encaminhado para envio.

    O processo separa duas responsabilidades: um componente de captura, que localiza os registros elegíveis e os coloca em uma fila, e um componente de processamento, que consome a fila e executa a integração com o Protheus.

    Ao longo do fluxo, o sistema registra o andamento e o resultado de cada item, permitindo rastreabilidade, reprocessamento e notificação de falhas quando necessário.

    O objetivo é manter consistência no envio e transparência no acompanhamento, com dados preparados no formato esperado pelo destino.

    Capturador Manual / Automático

    Descrição Conceitual

    Descrição do fluxo
    • Permite captura manual de um clienteou mais clientes específicoficos (informando aas chave) e também integração com o agendador de tarefas para captura automática do fluxo.chaves).
    • Quando a captura é manual, valida o formato da chave no padrão A1_LOJA-A1_COD. Se o padrão estiver incorreto, o processo interrompe com erro de chave inválida.
    • Monta a consulta a partir de uma view de origem e complementa o WHERE dinamicamente com os valores de A1_LOJA e A1_COD.
    • Para cada registro retornado, gera a chave de fila no mesmo padrão A1_LOJA-A1_COD e registra o item para processamento em fila.
    Entrada de dados (consulta completa)

    A origem dos dados é a view WOSK_SERVICO_ENVIA_PROTHEUS_CLIENTES_FULL, consultada com a projeção abaixo. O filtro por loja e código do cliente é acrescentado dinamicamente durante o fluxo.

    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_FULL
    WHERE
        A1_LOJA = '<A1_LOJA>'
        AND A1_COD = '<A1_COD>'
    Operações com dados (Banco de Dados)
    • Leitura: consulta da view WOSK_SERVICO_ENVIA_PROTHEUS_CLIENTES_FULL.
    • Persistência na fila: grava itens pendentes na tabela wosk_queue (banco do integrador), com chave A1_LOJA-A1_COD.
    Resultado do processamento

    Ao final, os clientes elegíveis ficam registrados na fila para integração, e o controle de continuidade permite que o processo retome sem perder a referência de posição quando aplicável.

    Queue

    Descrição Conceitual

    Descrição do fluxo
    • Consome itens pendentes de integração registrados na fila do integrador, respeitando limites de concorrência e um atraso configurável antes de processar itens recém-atualizados.
    • Ao iniciar o processamento de um item, ele é marcado como em envio, o conteúdo é reorganizado para o formato do Protheus, e então é enviada a integração do cliente.
    • Ao final, o registro da fila é atualizado com o retorno e a mensagem, permitindo auditoria e notificação de falhas.
    Entrada de dados (consultas)

    A seleção de itens pendentes ocorre na tabela wosk_queue. O fluxo pode aplicar uma condição adicional de atraso (comparando a coluna data) para evitar processar itens recém-atualizados.

    SELECT
        /*+ SQL_BIG_RESULT */
        /*+ SQL_NO_CACHE */
        `token`
    FROM
        `<BANCO_INTEGRADOR>`.`wosk_queue`
    WHERE
        `acao` = '<PROCESSO>'
        AND `situacao` = 0
        -- opcional (atraso configurável):
        -- AND `data` <= '<DATA_LIMITE>'
    ORDER BY
        `data_adicionado` ASC

    Para obter os detalhes do item (conteúdo, retorno, mensagem e datas), o fluxo consulta a mesma tabela filtrando por ação e, quando aplicável, por token ou chave.

    SELECT
        /*+ SQL_BIG_RESULT */
        /*+ SQL_NO_CACHE */
        `token`,
        `acao`,
        `chave`,
        `conteudo`,
        `retorno`,
        `requisicao`,
        `mensagem`,
        `tempo`,
        `situacao`,
        `data_adicionado`,
        `data`
    FROM
        `<BANCO_INTEGRADOR>`.`wosk_queue`
    WHERE
        `acao` = '<PROCESSO>'
        -- filtros opcionais:
        -- AND `token` = '<TOKEN>'
        -- AND `chave` = '<A1_LOJA-A1_COD>'
    ORDER BY
        `data_adicionado` ASC,
        `data` ASC,
        `chave` ASC
    LIMIT 1
    Reestruturação e alteração de dados

    O conteúdo do item é convertido do padrão de origem (campos mais descritivos) para o padrão esperado pelo Protheus (campos A1_*). A seguir está o mapeamento de campos aplicado:

    Campo no payload (Protheus) Campo de origem Observação
    A1_COD A1_COD Identificador do cliente
    A1_LOJA A1_LOJA Loja do cliente
    A1_CGC CGC_CPF Documento principal
    A1_NOME NOME Nome/Razão
    A1_PESSOA PESSOA Tipo de pessoa
    A1_NREDUZ NOME_REDUZ Nome reduzido
    A1_END ENDERECO Endereço
    A1_BAIRRO BAIRRO Bairro
    A1_COMPLEM COMPLEMENTO Complemento
    A1_TIPO TIPO Tipo de cadastro
    A1_EST UF Estado
    A1_COD_MUN COD_MUNICIPIO_IBGE Código do município (IBGE)
    A1_CEP CEP CEP
    A1_DDI DDI DDI
    A1_DDD DDD DDD
    A1_TEL TELEFONE Telefone
    A1_CONTATO CONTATO Contato
    A1_PFISICA A1_PFISICA Indicador de pessoa física
    A1_INSCR A1_INSCR Inscrição estadual
    A1_INSCRM INSC_MUNICIPAL Inscrição municipal
    A1_DTNASC DATA_NASC Data de nascimento
    A1_EMAIL EMAIL E-mail
    A1_PAIS COD_PAIS_SISCOMEX Código do país (Siscomex)
    A1_CODPAIS COD_PAIS_BC Código do país (Bacen)
    A1_CONTA A1_CONTA Conta
    A1_CONTRIB A1_CONTRIB Contribuinte
    A1_TPESSOA A1_TPESSOA Tipo de pessoa (detalhe)
    A1_SUFRAMA A1_SUFRAMA Suframa
    A1_CALCSUF A1_CALCSUF Cálculo Suframa
    A1_CODMUN A1_CODMUN Código do município (alternativo)
    A1_MSBLQL STATUS Status/bloqueio

    Após o mapeamento, são aplicadas as seguintes alterações no payload:

    • A1_NOME:, remove o caractere | e remove acentuação antes do envio.
    • A1_NREDUZ: remove o caractere | e remove acentuação antes do envio.
    • A1_END:, remove acentuação antes do envio.
    • A1_BAIRRO:, remove acentuação antes do envio.
    • A1_CONTATO: remove acentuação antes do envio.
    • A1_CODPAIS: converte para número e preenche com zeros à esquerda até 5 dígitos (ex.: 100001).
    Chamada de integração com o Protheus
    • Recurso: cliente
    • Método HTTP: POST
    • Cabeçalhos: tenantId: ****

    Exemplo de payload enviado (valores ilustrativos):

    {
        "A1_COD": "157612267",
        "A1_LOJA": "01",
      "A1_COD": "000123"03",
        "A1_CGC": "99999999999"15763336703",
        "A1_NOME": "CLIENTETESTE",
        SEM"A1_PESSOA": ACENTO""F",
        "A1_NREDUZ": "CLIENTE"TESTE",
        "A1_END": "RUA EXEMPLO"SILVIA POZZANO, 2820",
        "A1_BAIRRO": "CENTRO"RECREIO DOS BANDEIRANTES",
        "A1_COMPLEM": "B1 AP 811,",
        "A1_TIPO": "F",
        "A1_EST": "RJ",
        "A1_COD_MUN": "02257",
        "A1_CEP": "00000000"22790622",
        "A1_DDI": "",
        "A1_DDD": "99",
        "A1_TEL": "993207988",
        "A1_CONTATO": "TESTE",
        "A1_PFISICA": "",
        "A1_INSCR": "ISENTO",
        "A1_INSCRM": "",
        "A1_DTNASC": "06/05/9999",
        "A1_EMAIL": "cliente@exemplo.com"TESTE",
        "A1_PAIS": "105",
        "A1_CODPAIS": "00055"01099",
        "A1_CONTA": "220301040199",
        "A1_CONTRIB": "2",
        "A1_TPESSOA": "",
        "A1_SUFRAMA": "",
        "A1_CALCSUF": "",
        "A1_CODMUN": "",
        "A1_MSBLQL": "2"
    }
    Tratamento de retorno
    • Ausência de resposta: se não houver retorno, o item é finalizado com erro e a mensagem indica falta de resposta.
    • Resposta inválida/inesperada: se o retorno não for um objeto com o campo Mensagem, o item é finalizado com erro e a mensagem indica falha na decodificação.
    • Indicadores de erro: quando o retorno traz Mensagem igual a ERRO ou quando existe o campo code, o item é marcado como erro.
    • Sucesso: quando não há indicador de erro, o processo registra o cliente como integrado e grava o retorno na fila.
    Encaminhamento em cenário de erro
    • Quando o Protheus retorna erro, o fluxo tenta encaminhar o mesmo cliente para o processo ProtheusClientePadrao, solicitando a captura do cliente pela mesma chave A1_LOJA-A1_COD.
    • Se a captura alternativa for confirmada na tabela wosk_queue (ação ProtheusClientePadrao com token registrado), o item atual pode ser removido do processo Full para evitar duplicidade de integração.
    Operações com dados (Banco de Dados)
    • Leitura: consumo de itens na tabela wosk_queue (banco do integrador), filtrando por ação ProtheusClienteFull e situação pendente.
    • Atualização: gravação do retorno, mensagem, tempo e situação na tabela wosk_queue.
    • Auditoria de integração: para processos Protheus, o fluxo registra o resumo de integração na tabela OSK_LOG_INTEGRACAO_PROTHEUS.
    • Log técnico de falhas: quando aplicável, detalhes de erro de persistência podem ser registrados em wosk_queue_log.
    Notificação de erros
    • Existe um mecanismo de notificação que seleciona itens com erro (situacao = 4) na tabela wosk_queue, ordenando por data de processamento e enviando um relatório a destinatários pré-definidos.
    • Antes do envio, a mensagem de erro é higienizada para remover prefixos técnicos recorrentes (ex.: trechos padronizados do SQL Server) e para padronizar quebras de linha, facilitando a leitura.
    Resultado do processamento
    • Sucesso: o cliente é marcado como integrado e a fila registra a conclusão com retorno e mensagem.
    • Erro: a fila registra o erro e o detalhe do retorno, permitindo acompanhamento e notificação.

    Fluxo do Processo

    Diagrama sem nome.jpg


    Critérios de Aceitação

    Processo Subprocesso Descrição Situação esperada
    Capturador Manual / Automático Captura e enfileiramento Ao informar uma chave válida no padrão A1_LOJA-A1_COD, deve consultar a view WOSK_SERVICO_ENVIA_PROTHEUS_CLIENTES_FULL e registrar o item correspondente na fila wosk_queue. Item pendente registrado na fila, pronto para processamento, com chave consistente.
    Capturador Manual / Automático Controle de continuidade Quando utilizado pelo agendador de tarefas no modo automático, deve manter a referência de progresso do processo (posição/offset e filtros) persistida em wosk_monitor. Continuidade preservada entre ciclos, sem perda de referência de posição.
    Queue Integração com Protheus Ao processar um item pendente em wosk_queue, deve mapear os campos para o formato A1_*, aplicar as transformações definidas e registrar o resultado (sucesso ou erro) na própria fila, mantendo retorno e mensagem. Fila atualizada com situação final e detalhes para auditoria; em sucesso, cliente marcado como integrado.