ProtheusClienteFull (STATUS: PARCIAL)
Documentação Técnica
| Nome do cliente | OSKLEN |
| Nome do projeto | |
| 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 |
Sumário
- Documentação Técnica
- Sumário
- Histórico de Versões
- Descrição Geral dos Processos
- Fluxo do Processo
- Critérios de Aceitação
Histórico de Versões
| Data | Versão | Modificado por | Descrição da Mudança |
| 1.0 | Maykon/Gustavo | Criação da documentação técnica do processo |
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.
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.
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 do fluxo
OPermiteMonitorcaptura 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,porvalidacronoeformatobuscadaoschavedadosno padrãoA1_LOJA-A1_COD. Se o padrão estiver incorreto, o processo interrompe com erro declienteschave inválida. - Monta a consulta a partir
dadevisãouma view deorigem.origem e complementa oWHEREdinamicamente com os valores deA1_LOJAeA1_COD. - Para cada registro
encontrado,retornado,égeramontada umaa chaveúnicadedofilaclienteno mesmo padrãoA1_LOJA-A1_CODe registra o itemé enfileiradopara processamentoassíncronoem(Queue), com status inicial. A data de transferência do registro é utilizada como base para agendamento/ordenação do processamento, caracterizando uso doConceito 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 docliente:registrocomposta no formatoA1_LOJA-A1_CODpara identificação única no processamento assíncrono.Data de transferência:é convertida para o formatoY-m-d H:i:separautilizadagarantircomoconsistênciareferênciano controle deagendamento/ordenação na fila (verConceito 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çãogravadoitensitem para processamentopendentes na tabela wosk_queue (banco do integrador), com chaveA1_LOJA-A1_COD. - Controle
dodeMonitorcontinuidade:persistênciaodeestado do processo (offset/filtro/posição/continuidadeo) é persistido na tabela wosk_monitor (banco do integrador),permitindoquandoretomadautilizadodonoprocessamento.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 do fluxo
A Queue é acionada por cron e consomeConsome itens pendentesdadefila.integração registrados na fila do integrador, respeitando limites de concorrência e um atraso configurável antes de processar itens recém-atualizados.OAoiteminiciar o processamento de um item, ele é marcado como emprocessamento, eenvio, o conteúdo épreparadoreorganizado paraenviooaoformatodestino.do Protheus, e então é enviada a integração do cliente.ApósAo final, oenvio,registroada fila éatualizadaatualizado com oresultado:retornosucessoeouaerro,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.
token chave.
SELECT
evitar/*+ duplicidade.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 |
|
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:
Padronização de textoA1_NOME:remoçãremove ode acentos em campos de nome/endereço/bairro/contato e eliminação docaractere|emenomes,removeparaacentuaçãoevitarantesinconsistênciasdono 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úmeropossuire5preenchedí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 trazMensagemigual aERROou quando existe o campocode, 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çãoProtheusClientePadraocom token registrado), o item atual pode ser removido dotenant:processoenvioFull para evitar duplicidade decabeç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çãoProtheusClienteFulle situação pendente. - Atualização: gravação do retorno,
mensagemmensagem, tempo estatus 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 dedetalhes de erro debancopersistêncianapodemtabelaser 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ãoitem é finalizadocomstatusretornodeesucesso.mensagem. - Erro: a fila registra o
item é finalizado com status deerro emensagem explicativa;oprocessodetalhepodedoacionarretorno, permitindo acompanhamento e notificação e/ou evitar duplicidade com o fluxo padrão.
Fluxo do Processo
Critérios de Aceitação
| Processo | Subprocesso | Descrição | Situação esperada |
| Captura e enfileiramento | A1_LOJA-A1_COD, deve consultar a view WOSK_SERVICO_ENVIA_PROTHEUS_CLIENTES_FULL e registrar o item correspondente na fila wosk_queue. |
||
|
|||
| Queue | Ao A1_*, aplicar |
Fila atualizada com | em |
