Ir para o conteúdo principal

ProtheusClienteFull (STATUS: PARCIAL)

Documentação Técnica

Nome do cliente OSKLEN
Nome do projeto INTEGRAÇÃOIntegração LINX → PROTHEUSProtheus
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 24/25/02/2026

Sumário


    Histórico de Versões

    Data Versão Modificado por Descrição da Mudança
    24/25/02/2026 1.0 Maykon/Gustavo Criação da documentação técnica do processo de integração de cliente (Full).ProtheusClienteFull.

    Descrição Geral dos Processos

    EsteEsta processobiblioteca realizaorganiza a integração completa de cadastros de clientes,clientes do LINX para o Protheus, garantindo que oscada dadoscliente estejamseja consistentesidentificado, antes do enviopreparado e queencaminhado opara acompanhamentoenvio.

    O doprocesso processamentosepara sejaduas rastreável.

    responsabilidades:

    Aum capturacomponente de captura, que localiza os registros é feita de forma periódica (cron), a partir de uma visão de dados disponível no ambiente de origem,elegíveis e os itenscoloca capturadosem sãouma encaminhadosfila, parae processamentoum assíncronocomponente porde fila.

    processamento,

    Emque seguida,consome a fila processae executa a integração com o Protheus.

    Ao longo do fluxo, o sistema registra o andamento e o resultado de cada item, aplica ajustes de padronização de texto, envia ao destino e atualiza o status do processamento, permitindo reprocessamento,rastreabilidade, auditoriareprocessamento e notificação de falhas quando houvernecessário.

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

    MonitorCapturador Manual / Automático

    Descrição Conceitual

    Descrição do fluxo
    • OPermite Monitorcaptura manual de um cliente específico (informando a chave) e também integração com o agendador de tarefas para captura automática do fluxo.
    • Quando a captura é acionadomanual, porvalida crono eformato buscada oschave dadosno padrão A1_LOJA-A1_COD. Se o padrão estiver incorreto, o processo interrompe com erro de clienteschave inválida.
    • Monta a consulta a partir dade visãouma view de origem.origem e complementa o WHERE dinamicamente com os valores de A1_LOJA e A1_COD.
    • Para cada registro encontrado,retornado, égera montada umaa chave únicade dofila clienteno mesmo padrão A1_LOJA-A1_COD e registra o item é enfileirado para processamento assíncronoem (Queue), com status inicial.
    • A data de transferência do registro é utilizada como base para agendamento/ordenação do processamento, caracterizando uso do Conceito Cronológico.fila.
    Entrada de dados (query)consulta completa)

    A entradaorigem dos dados é realizada via query sobre a visãoview WOSK_SERVICO_ENVIA_PROTHEUS_CLIENTES_FULL., O WHERE é construído dinamicamente de acordoconsultada com a chaveprojeção recebida.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>';
    Reestruturação e alteração de dados
    • ChaveDATA_PARA_TRANSFERENCIA: ao preparar o item para fila, a data do cliente:registro composta no formato A1_LOJA-A1_COD para identificação única no processamento assíncrono.
    • Data de transferência:é convertida para o formato Y-m-d H:i:s epara utilizadagarantir comoconsistência referênciano controle de agendamento/ordenação na fila (ver Conceito Cronológico).processamento.
    Operações com dados (Banco de Dados)
    • Leitura: visãoconsulta da view WOSK_SERVICO_ENVIA_PROTHEUS_CLIENTES_FULL.
    • Persistência dana fila: inserçãograva doitens item para processamentopendentes na tabela wosk_queue (banco do integrador), com chave A1_LOJA-A1_COD.
    • Controle dode Monitorcontinuidade: persistênciao deestado do processo (offset/filtro/posição/continuidadeo) é persistido na tabela wosk_monitor (banco do integrador), permitindoquando retomadautilizado dono processamento.modo automático.
    Resultado do processamento

    Ao final, oos registroclientes ficaelegíveis disponívelficam registrados na fila para processamentointegração, assíncrono,e iniciadoo com statuscontrole de aguardandocontinuidade integraçãpermite que o eprocesso dataretome desem perder a referência para ordem de processamento.posição quando aplicável.

    Queue

    Descrição Conceitual

    Descrição do fluxo
    • A Queue é acionada por cron e consomeConsome itens pendentes dade fila.integração registrados na fila do integrador, respeitando limites de concorrência e um atraso configurável antes de processar itens recém-atualizados.
    • OAo iteminiciar o processamento de um item, ele é marcado como em processamento, eenvio, o conteúdo é preparadoreorganizado para envioo aoformato destino.do Protheus, e então é enviada a integração do cliente.
    • ApósAo final, o envio,registro ada fila é atualizadaatualizado com o resultado:retorno sucessoe oua erro,mensagem, incluindopermitindo 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 detalhes de retorno.

  • Quando há erro edatas), o mesmo cliente já foi capturado no fluxo padrão,consulta a mesma tabela filtrando por ação registroe, doquando fluxoaplicável, Fullpor podetoken serou descartadochave.

    para
    SELECT
        evitar/*+ duplicidade.
  • 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 origemObservação
    A1_CODA1_CODIdentificador do cliente
    A1_LOJAA1_LOJALoja do cliente
    A1_CGCCGC_CPFDocumento principal
    A1_NOMENOMENome/Razão
    A1_PESSOAPESSOATipo de pessoa
    A1_NREDUZNOME_REDUZNome reduzido
    A1_ENDENDERECOEndereço
    A1_BAIRROBAIRROBairro
    A1_COMPLEMCOMPLEMENTOComplemento
    A1_TIPOTIPOTipo de cadastro
    A1_ESTUFEstado
    A1_COD_MUNCOD_MUNICIPIO_IBGECódigo do município (IBGE)
    A1_CEPCEPCEP
    A1_DDIDDIDDI
    A1_DDDDDDDDD
    A1_TELTELEFONETelefone
    A1_CONTATOCONTATOContato
    A1_PFISICAA1_PFISICAIndicador de pessoa física
    A1_INSCRA1_INSCRInscrição estadual
    A1_INSCRMINSC_MUNICIPALInscrição municipal
    A1_DTNASCDATA_NASCData de nascimento
    A1_EMAILEMAILE-mail
    A1_PAISCOD_PAIS_SISCOMEXCódigo do país (Siscomex)
    A1_CODPAISCOD_PAIS_BCCódigo do país (Bacen)
    A1_CONTAA1_CONTAConta
    A1_CONTRIBA1_CONTRIBContribuinte
    A1_TPESSOAA1_TPESSOATipo de pessoa (detalhe)
    A1_SUFRAMAA1_SUFRAMASuframa
    A1_CALCSUFA1_CALCSUFCálculo Suframa
    A1_CODMUNA1_CODMUNCódigo do município (alternativo)
    A1_MSBLQLSTATUSStatus/bloqueio

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

    • Padronização de textoA1_NOME: remoçãremove o de acentos em campos de nome/endereço/bairro/contato e eliminação do caractere | eme nomes,remove paraacentuação evitarantes inconsistênciasdo no destino.envio.
    • Código de paísA1_NREDUZ: normalizadoremove 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 semprenúmero possuire 5preenche dígitos (com zeros à esquerda até 5 dígitos (ex.: 1 → 00001).
    Chamada de integração com o Protheus
    • Recurso: cliente
    • Método HTTP: POST
    • Cabeçalhos: tenantId: ****

    Exemplo de payload enviado (valores ilustrativos):

    {
      "A1_LOJA": "01",
      "A1_COD": "000123",
      "A1_CGC": "99999999999",
      "A1_NOME": "CLIENTE SEM ACENTO",
      "A1_NREDUZ": "CLIENTE",
      "A1_END": "RUA EXEMPLO",
      "A1_BAIRRO": "CENTRO",
      "A1_EST": "RJ",
      "A1_CEP": "00000000",
      "A1_EMAIL": "cliente@exemplo.com",
      "A1_CODPAIS": "00055"
    }
    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 necessário)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 Identificaçwosk_queue (ação ProtheusClientePadrao com token registrado), o item atual pode ser removido do tenant:processo envioFull para evitar duplicidade de cabeçalho de identificação do ambiente/tenant junto à requisiçintegração.
    Operações com dados (Banco de Dados)
    • Leitura: consumo de itens dana tabela wosk_queue (banco do integrador)., filtrando por ação ProtheusClienteFull e situação pendente.
    • Atualização: gravação do retorno, mensagemmensagem, tempo e status finalsituaçã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, registro de detalhes de erro de bancopersistência napodem tabelaser 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 é consideradomarcado como integrado e a fila registra a conclusão item é finalizado com statusretorno dee sucesso.mensagem.
    • Erro: a fila registra o item é finalizado com status de erro e mensagem explicativa; o processodetalhe podedo acionarretorno, permitindo acompanhamento e notificação e/ou evitar duplicidade com o fluxo padrão.

    Fluxo do Processo

    Diagrama sem nome.jpg


    Critérios de Aceitação

    em
    Processo Subprocesso Descrição Situação esperada
    MonitorCapturador Manual / Automático Captura e enfileiramento QuandoAo acionado por cron, deve obter o registro do cliente na visão de origem e gerarinformar uma chave únicaválida no formatopadrão A1_LOJA-A1_COD, deve consultar a view WOSK_SERVICO_ENVIA_PROTHEUS_CLIENTES_FULL e registrar o item correspondente na fila wosk_queue. RegistroItem identificadopendente eregistrado na fila, pronto para encaminhamento.processamento, com chave consistente.
    MonitorCapturador Manual / Automático EnfileiramentoControle de continuidade OQuando registroutilizado capturadopelo agendador de tarefas no modo automático, deve sermanter enfileiradoa parareferência processamentode assíncrono,progresso comdo statusprocesso inicial(posição/offset e agendamentofiltros) baseadopersistida em DATA_PARA_TRANSFERENCIA (conceito cronológico)wosk_monitor. ItemContinuidade persistidopreservada ementre wosk_queueciclos, esem ordenado/agendadoperda conformede areferência data.de posição.
    Queue ProcessamentoIntegração com Protheus Ao consumirprocessar um item pendente em wosk_queue, deve mapear os campos para o item,formato deveA1_*, aplicar padronizaçãoas detransformações textodefinidas e enviar ao destino; em seguida, deve atualizarregistrar o resultado (sucesso ou erro) na fila.própria fila, mantendo retorno e mensagem. Fila atualizada com statussituação de sucesso ou errofinal e mensagemdetalhes correspondente,para mantendoauditoria; rastreabilidade.
    QueueControle de duplicidadeQuando houver falha no envio e o mesmosucesso, cliente marcado existircomo no fluxo padrão, o registro do fluxo Full deve ser descartado para evitar processamento duplicado.Sem duplicidade de registros na fila para o mesmo cliente.integrado.