CLIENTE (LojaCliente) (STATUS: PARCIAL)
Documentação Técnica
| Nome do cliente | |
| Nome do projeto | |
| Biblioteca | wosk_loja_cliente |
| Token da Biblioteca | 1be199d8-98e8-4de7-a92c-e59c2f08edd6 |
|
URL de Produção
|
https://isnapp.illimitar.pro/bibliotecas/1be199d8-98e8-4de7-a92c-e59c2f08edd6/wosk_loja_cliente |
| URL de Homologação | https://hmg-isnapp.illimitar.pro/bibliotecas/1be199d8-98e8-4de7-a92c-e59c2f08edd6/wosk_loja_cliente |
| 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 |
Descrição Geral dos Processos
OEste processo decentraliza integraço cadastro e a atualização de Clienteclientes, Varejo é composto por três componentes principais: WebService, Monitor e Queue,garantindo que atuam de forma encadeada e assíncrona para garantir consistência, escalabilidade e rastreabilidade das informações.
O WebService é acionado por meio de um Endpoint e representa o ponto de entrada da integração. Ele recebe os dados cadastrais do cliente, executa validações estruturais e regras de negócio, aplica reestruturações necessárias (normalizações, definições automáticas e ajustes de campos) e persiste as informações narecebidas basesejam CLIENTES_VAREJO.validadas Apóse armazenadas de forma consistente.
Quando um cliente é incluído ou alterado, os registros ficam disponíveis para captura periódica (cron), que organiza a confirmaçfila de processamento para integração daassíncrona.
Por fim, a fila monta os dados tornam-seno elegíveisformato paraesperado pelo destino, realiza validações essenciais e registra o fluxoresultado, permitindo acompanhamento e tratamento de captura incremental.falhas.
Monitor
Descrição do fluxo
- O Monitor é acionado
periodicamentepor cron, carrega a posição de processamento anterior e define um limite de captura porumciclo. - A
(cron)buscae tem como responsabilidade identificarconsidera registrosnovos ou alteradosa partirdadeDATA_PARA_TRANSFERENCIA.uma data de referência e pagina os resultados para manter o processamento controlado. - Cada registro encontrado é encaminhado para processamento assíncrono em fila, mantendo ordem/agenda baseada na data de transferência (Conceito Cronológico).
- Ao longo do ciclo, o Monitor atualiza sua posição de continuidade, permitindo retomada segura em execuções seguintes.
Entrada de dados (query)
A entrada é realizada via query sobre a base de clientes e tabelas auxiliares. O componentefiltro mantémpor controledata é aplicado na coluna DATA_PARA_TRANSFERENCIA, caracterizando um filtro cronológico (Conceito Cronológico).
SELECT
CLI.CODIGO_CLIENTE,
CLI.CLIENTE_VAREJO,
CLI.CPF_CGC,
CLI.RG_IE,
CLI.ANIVERSARIO,
CLI.TIPO_LOGRADOURO,
CLI.ENDERECO,
CLI.NUMERO,
CLI.COMPLEMENTO,
CLI.BAIRRO,
CLI.CIDADE,
CLI.UF,
CLI.CEP,
CLI.PAIS,
LLM.COD_MUNICIPIO_IBGE AS IBGE,
LLP.COD_PAIS_BC AS PAIS_BC,
CLI.DDD,
CLI.TELEFONE,
CLI.DDD_CELULAR,
CLI.CELULAR,
CLI.EMAIL,
CLI.CODIGO_CONTATO,
CLI.FILIAL,
CLI.ESTRANGEIRO,
CLI.TIPO_VAREJO,
CLI.TIPO_BLOQUEIO,
CLI.CADASTRAMENTO,
CLI.OBS,
CLI.SEXO,
CLI.STATUS,
CLI.DATA_PARA_TRANSFERENCIA
FROM
CLIENTES_VAREJO CLI (NOLOCK)
LEFT JOIN W_LCF_LX_MUNICIPIO LLM (NOLOCK)
ON (DBO.FX_REPLACE_CARACTER_ESPECIAL_NFE(DEFAULT, LTRIM(RTRIM(CLI.CIDADE))) = LLM.DESC_MUNICIPIO
AND CLI.UF = LLM.UF)
LEFT JOIN LCF_LX_PAIS LLP (NOLOCK)
ON (CLI.PAIS = LLP.DESC_PAIS)
WHERE
CLI.DATA_PARA_TRANSFERENCIA >= '<DATA_REFERENCIA>'
ORDER BY
CLI.DATA_PARA_TRANSFERENCIA ASC
OFFSET <OFFSET> ROWS
FETCH NEXT <LIMITE> ROWS ONLY;
Observação: o WHERE é montado dinamicamente com base na data de estadoreferência (offset,persistida chavepelo Monitor.
Reestruturação e alteração de posição,dados
- Filtro de continuidade: a data de referência é armazenada e
situação),atualizadapermitindo continuidade segura entre execuções. Durante o processamento,conforme os registros sãoconsultadoscapturados, garantindo que o processo continue do ponto correto. - Chave do registro: o código do cliente é utilizado como identificador único para encadear captura, fila e processamento.
Operações com dados (Banco de formaDados)
- Leitura: tabelas CLIENTES_VAREJO, W_LCF_LX_MUNICIPIO e
enviadosLCF_LX_PAIS. - Persistência do controle do Monitor: tabela wosk_monitor (banco do integrador), registrando posição, data de referência e filtros usados.
- Persistência da fila: tabela wosk_queue (banco do integrador), criando item para
a Queue, onde aguardamprocessamento assíncrono.
Resultado sobrecarga,do duplicidadeprocessamento
Ao capturafinal do ciclo, os registros elegíveis ficam organizados para processamento assíncrono, e perda dea posição.o do Monitor é salva para continuidade no próximo acionamento.
Queue
Descrição do fluxo
- A Queue
tambémé acionada por cron eexecutaconsomeoitensprocessamento assíncrono das mensagens pendentes. Para cada item da fila, o sistema atualiza o statuspendentes para"Enviando", realiza as transformações finais (normalização de telefones, composição de endereço, validações obrigatórias e definição do tipo de pessoa), monta o payload deintegraçãoo. - O
efetua a chamada ao endpoint externo. Conforme o retorno recebido, o registroitem é marcado comoprocessadoemcom sucesso ou erro, sendo armazenadas informações de auditoria, tempo de execuçãoprocessamento, emensagens de diagnóstico.De forma resumida, o fluxo operacional ocorre da seguinte maneira:1) Endpoint → aciona WebService → valida e persiste CLIENTES_VAREJO2) Cron → aciona Monitor → captura incremental → envia para Queue3) Cron → aciona Queue → transforma → integra com sistema externoEssa arquitetura separa claramente as responsabilidades de entrada, captura e envio, proporcionando maior robustez, controle transacional e tolerância a falhas.Monitor1. DESCRIÇÃO DO FLUXOO processo Monitor é responsável por habilitar e executar a captura incremental de registros de CLIENTES_VAREJO, preparando-os para integração assíncrona via Queue.Ao ser acionado, o método run() recupera o estado anterior do monitor (offset, chave de posição, datas e filtros). Com base na situação armazenada:- Se CONCLUÍDO (2) → o estado é redefinido para PARADO (0).- Se PARADO (0) ou EM EXECUÇÃO (1) → o processamento é iniciado ou continuado.Quando iniciado do estado PARADO:- A data de posição e a data de início são redefinidas.- O offset retorna a 0.- A chave de posição é limpa.Em seguida:- Os filtros são normalizados.- Define-se a DATA_PARA_TRANSFERENCIA mínima caso não informada.O processo entra em loop de paginação utilizando OFFSET/FETCH:1) Atualiza o monitor para situação EXECUTANDO (1).2) Executa a consulta paginada ordenada por DATA_PARA_TRANSFERENCIA.3) Para cada registro retornado:- Os valores são tratados (trim).- Atualiza-se o novo filtro de posição.- O registro é enviado para a Queue.- Offset e posição são persistidos.O loop encerra quando não há mais registros.Ao final:- O monitor é marcado como CONCLUÍDO (2).Em caso de erro:- O monitor é marcado como PROBLEMA (4).- A mensagem de erro é armazenada no filtro.2. DADOS NECESSÁRIOS PARA O ENDPOINTOs dados capturados são provenientes da viewQuery aplicada sobre CLIENTES_VAREJO.Campos utilizados:- CODIGO_CLIENTE- CLIENTE_VAREJO- CPF_CGC- RG_IE- ANIVERSARIO- TIPO_LOGRADOURO- ENDERECO- NUMERO- COMPLEMENTO- BAIRRO- CIDADE- UF- CEP- PAIS- IBGE- PAIS_BC- DDD- TELEFONE- DDD_CELULAR- CELULAR- EMAIL- CODIGO_CONTATO- FILIAL- ESTRANGEIRO- TIPO_VAREJO- TIPO_BLOQUEIO- CADASTRAMENTO- OBS- SEXO- STATUS- DATA_PARA_TRANSFERENCIAObservação:IBGE e PAIS_BC dependem de joins auxiliares (município e país).3. REESTRUTURAÇÃO DOS DADOS3.1 Recuperação do estado do monitorMomento: Início do run()- offset ← valor persistido- chavePosicao ← valor persistido- dataPosicao ← valor persistido- filtro ← valor persistido- situacao ← valor persistidoRegra:- Se situacao = 2 → redefinir para 03.2 Reset ao iniciar execuçãoMomento: Quando situacao ≠ 1- dataPosicao ← Data/hora atual- dataIniciado ← Data/hora atual- offset ← 0- chavePosicao ← ''3.3 Normalização dos filtrosMomento: Antes da query- CODIGO_CLIENTE ← '' se vazio- DATA_PARA_TRANSFERENCIA ←• valor informado → convertido para datetime• vazio → '2023-06-01 00:00:00'3.4 Atualização do estado para EXECUTANDOMomento: Antes da consulta- situacao ← 13.5 Paginação dos registrosMomento: Execução da queryRegra:- ORDER BY DATA_PARA_TRANSFERENCIA ASC- OFFSET offset- FETCH NEXT limiteConfigurado3.6 Sanitização dos dadosMomento: Ao ler cada registroTransformação:- trim() em todos os campos3.7 Atualização do filtro de posiçãoMomento: Após fetch()- novoFiltro['CODIGO_CLIENTE'] ← registro atual- novoFiltro['DATA_PARA_TRANSFERENCIA'] ← data do registro3.8 EnfileiramentoMomento: Dentro do loopOperação:- Queue::set()Parâmetros:- chave ← CODIGO_CLIENTE- payload ← registro completo- status ← 'Aguardando Integração'- situacao ← 03.9 Atualização incremental da posiçãoMomento: Após inserir na fila- offset ← offset + 1- chavePosicao ← CODIGO_CLIENTE- dataPosicao ← DATA_PARA_TRANSFERENCIA3.10 FinalizaçãoMomento: Fim do loop- situacao ← 2 (Concluído)3.11 Tratamento de erroMomento: catch(Exception)- situacao ← 4 (Problema)- filtro['ERRORS'][] ← mensagem + timestamp4. PERSISTÊNCIA DOS DADOS (BANCO DE DADOS)4.1 Controle do monitorMétodo: _set("LojaCliente")Dados persistidos:- offset- chavePosicao- dataPosicao- filtro- situacao- dataIniciado- tokenSituações:- 0 → Parado- 1 → Executando- 2 → Concluído- 4 → Problema4.2 Fila de integraçãoClasse: QueueOperação:- INSERT / UPDATE em wosk_queueDados gravados:- chave- conteudo (payload)- status- situacao- data_referencia- token (quando reaproveitado)5. RESULTADO DO PROCESSAMENTOExecução normal:- Monitor atualizado como CONCLUÍDO (2)- Registros enviados para QueueExecução com erro:- Monitor marcado como PROBLEMA (4)- Mensagem registrada no filtro6. OPERAÇÃO MANUAL – capturar()Permite capturar clientes específicos.Fluxo:- Recebe chave(s) (CODIGO_CLIENTE)- Executa consulta direta- Sanitiza os dados- Reenvia para QueueRegra adicional:- Se já existir na fila → reaproveita token existenteQueue1. DESCRIÇÃO DO FLUXOO componente Queue é responsável pelo processamento assíncrono das mensagens de integração relacionadas ao contexto "LojaCliente". O método run() é acionado com um token identificador da mensagem a ser processada.Inicialmente, o sistema recupera um item da fila utilizando o token informado. Caso exista conteúdo pendente, o registro é imediatamente atualizado para o status "Enviando", garantindo rastreabilidade e evitando reprocessamentos simultâneos.Em seguida, o sistema inicia o processamento do payload (conteudo), realizando:- Montagem dos dados de contato (telefone, celular, e-mail)- Normalização dos números telefônicos- Composição do logradouro completo- Validação de códigos obrigatórios (IBGE / BACEN)- Construção da estrutura final de integração- Identificação do tipo de pessoa (Física / Jurídica)Após a montagem do objeto final, é realizada a chamada ao endpoint externo de integração (setIlli).Dependendo do retorno:- Sucesso → registro atualizado com situacao = 2- Erro → registro atualizado com situacao = 4Ao final, o tempo de execução é calculado e persistido junto ao resultado do processamento.2. DADOS NECESSÁRIOS PARA O ENDPOINTO processamento da fila pressupõe que o conteúdo já tenha sido previamente estruturado. Os seguintes campos são esperados:Campos relevantes:- CODIGO_CLIENTE- CLIENTE_VAREJO- CPF_CGC- RG_IE- ENDERECO- TIPO_LOGRADOURO- NUMERO- COMPLEMENTO- BAIRRO- CIDADE- UF- CEP- PAIS- PAIS_BC- IBGE- TELEFONE- DDD- CELULAR- DDD_CELULAR- EMAIL- SEXO- STATUS- ANIVERSARIO- CADASTRAMENTO- DATA_PARA_TRANSFERENCIA- FILIAL- TIPO_VAREJO- ESTRANGEIROObservação:Campos como IBGE e PAIS_BC devem estar previamente resolvidos. A ausência desses dados pode interromper o processamento.3. REESTRUTURAÇÃO DOS DADOS3.1 Atualização de status inicial da filaMomento: Imediatamente após recuperar o itemRegra:- situacao ← 1 (Enviando)3.2 Montagem dos contatosMomento: Início do processamento do payloadTransformações:- Remove caracteres não numéricos de:• DDD• TELEFONE• DDD_CELULAR• CELULAR- Concatenação:• TELEFONE → DDD + TELEFONE• CELULAR → DDD_CELULAR + CELULAR- Inclusão condicional:• Apenas se houver valor informado3.3 Composição do logradouroMomento: Antes da montagem do endereçoRegra:- logradouro ← TIPO_LOGRADOURO + ENDERECO3.4 Normalização do CEPMomento: Montagem da estrutura finalRegra:- CEP → somente números- CEP → preenchido à esquerda até 8 dígitos3.5 Normalização de campos numéricosMomento: Montagem do endereçoTransformações:- NUMERO → somente números- RG_IE → somente números3.6 Validação de código IBGEMomento: Pré-integraçãoRegra:- Obrigatório para clientes nacionais- Se ausente → exceção3.7 Validação de código BACENMomento: Pré-integraçãoRegra:- PAIS_BC obrigatório- Se ausente → exceção3.8 Normalização da UFMomento: Montagem do endereçoRegra:- Se UF inválida ou vazia:• Estrangeiro → "EX"• Nacional → vazio3.9 Definição do código IBGEMomento: Montagem do endereçoRegra:- Nacional → usa IBGE informado- Estrangeiro → "9999999"3.10 Conversão do STATUSMomento: Montagem do objeto finalRegra:- STATUS ≠ '1' → situacao ← '0'- STATUS = '1' → situacao ← '1'3.11 Identificação do tipo de pessoaMomento: Montagem finalRegra:- CPF_CGC > 11 dígitos →tipo ← JURIDICAcnpj ← normalizado (14 dígitos)ie ← RG_IE normalizado- CPF_CGC ≤ 11 dígitos →tipo ← FISICAcpf ← normalizado (11 dígitos)identidade ← RG_IE normalizado3.12 Controle de truncamentoMomento: Montagem do endereçoRegra:- logradouro → máx. 250 caracteres- COMPLEMENTO → máx. 250 caracteres4. PERSISTÊNCIA DOS DADOS (BANCO DE DADOS)Tabela de controle da fila:→ wosk_queueOperações realizadas:- Atualização ao iniciar processamentoMétodo: set(..., 'Enviando', situacao = 1)- Atualização ao finalizar processamentoMétodo: set(..., retorno, mensagem, tempo, situacao)Situações possíveis:- 2 → Processado com sucesso- 4 → Erro no processamentoDados registrados:- Conteúdo original- Retorno do endpoint externo- Mensagem de erro/sucesso- Dump da requisição (CURL)- Tempo de execução5. RESULTADO DO PROCESSAMENTOSucesso:- situacao = 2- Mensagem retornada pelo serviço externoErro:- situacao = 4- Mensagem detalhada do erro- Retorno estruturado indicando falha6. ROTINAS AUXILIARESprepare():- Prepara o contexto da fila "LojaCliente"notificar():- Consulta registros com erro (situacao = 4)- Envia notificação por e-mailget():- Recupera itens pendentes ou específicosset():- Persiste atualizações da filagetConteudo():- Extrai conteúdo normalizado do payloadWebService1. DESCRIÇÃO DO FLUXOO WebService recebe uma requisição contendo os dados cadastrais de um cliente varejo. Ao ser acionado, o método run() executa inicialmente o processo de validação dos parâmetros recebidos. Caso exista qualquer inconsistência (campo obrigatório ausente, tipo inválido ou tamanho excedido), a execução é interrompida e uma exceção é retornada.Após validação bem-sucedida,os dados sãoencaminhadosconvertidosao método setClientesVarejo(), ondepara oprocessamentoformatoprincipalesperadoocorrepelodentrodestino. - Ao
umafinaltransaçdo envio, o resultado (sucesso ou erro) é registrado na fila, mantendo mensagem e retorno para auditoria.
Reestruturação e alteração de bancodados
- Contatos: telefone, celular e e-mail são reorganizados em uma lista padronizada; telefone/celular são convertidos para apenas números e concatenados com o DDD.
- Endereço: o tipo de
dados.logradouroNesseéestágio,concatenado ao logradouro, e osistema:CEP é normalizado para 8 dígitos com zeros à esquerda quando necessário. - Validações: para registros nacionais, exige código IBGE do município; exige também código BACEN do país para consistência cadastral.
- Documento: identifica se o cadastro é de pessoa física ou jurídica e formata CPF/CNPJ com preenchimento de zeros à esquerda; também envia documento complementar (identidade/inscrição).
Operações com dados (Banco de Dados)
- Leitura: consumo de itens na tabela wosk_queue (banco do integrador).
- Atualização: gravação do retorno e da mensagem de processamento na tabela wosk_queue.
- Log de falhas: quando aplicável, detalhes de erro de banco podem ser registrados em wosk_queue_log.
Resultado do processamento
- Sucesso: o cadastro é integrado e a fila registra a conclusão com a mensagem retornada.
- Erro: a fila registra o erro e o detalhe, permitindo acompanhamento e notificação.
WebService
-
Descrição Definedo automaticamentefluxo
- O endpoint recebe dados cadastrais do cliente e valida os campos obrigatórios.
- Em seguida, define datas de cadastro e de transferência e garante consistência de campos sensíveis (como filial, tipo de cliente e indicadores de estrangeiro).
- Por fim, grava o registro na tabela de clientes, criando um novo cadastro ou atualizando um existente conforme a identificação do cliente.
Reestruturação e alteração de dados
- Identificação do cliente: quando o código do cliente não é informado, ele é derivado do documento principal (CPF/CNPJ) e, no caso de estrangeiro, do documento de identificação.
- Filial: quando informada como código, é convertida para o nome padrão cadastrado.
- Datas: as datas de
CADASTRAMENTOcadastro eDATA_PARA_TRANSFERENCIA.-deAjustatransferência são definidas no momento do recebimento para manter rastreabilidade do evento. - Observação: o
TIPO_VAREJOtextocasode observações recebe um prefixo que identifica a origem do cadastramento.
Operações com dados (Banco de Dados)
- Leitura de referência: tabelas CLIENTE_VAR_TIPOS e FILIAIS (listas de apoio).
- Leitura para decisão
valordeinformadoinsert/update:nãtabela CLIENTES_VAREJO (verifica existência e consistência de cadastro). - Persistência: inserção
existaou atualização na tabeladeCLIENTES_VAREJO,tipos válidos.- Determina o statusdentro deESTRANGEIRO com base na UF.- Remove o campo SEXO se estiver vazio.- Normaliza o CEP quando necessário.- Determina o CODIGO_CLIENTE conforme regras de prioridade.Em seguida, o sistema verifica se já existe um cliente cadastrado:- Se NÃO existir: realiza INSERT na tabela CLIENTES_VAREJO.- Se EXISTIR: realiza UPDATE conforme regras de atualização.Ao final, atransaçãoéparaconfirmadagarantir(commit).atomicidade.
Resultado do processamento
Quando não há erros de erro,validação ocorreou rollback.de persistência, o endpoint retorna confirmação de registro do cliente e disponibiliza a data de transferência para rastreabilidade.
O retorno do WebService inclui o CODIGO_CLIENTE definido e mensagens de status ("OK" / "Registrado com sucesso.").
2. DADOS PARA O ENDPOINT
| CAMPO | TIPO | TAMANHO | CONTEÚDO | OBRIGATÓRIO |
| Chave da autenticação |
sim | |||
|
Nome |
sim | ||
| Nome ou |
sim | |||
| Identificação do documento não |
sim | |||
Observação importante:Mesmo não sendo informado diretamente, o campo CODIGO_CLIENTE torna-se obrigatório após a fase de reestruturação.
3. REESTRUTURAÇÃO DOS DADOS
3.1 Datas automáticasMomento: Início do processamento em setClientesVarejo()
- CADASTRAMENTO = Data/hora atual- DATA_PARA_TRANSFERENCIA = Data/hora atual
3.2 Validação e ajuste do TIPO_VAREJOMomento: Antes de persistir os dados
Regra:- Se TIPO_VAREJO não existir em CLIENTE_VAR_TIPOS: TIPO_VAREJO = "CLIENTE VAREJO"
3.3 Determinação de ESTRANGEIROMomento: Antes da validação final
Regra:- Se ESTRANGEIRO vazio: ESTRANGEIRO = '0'- Se UF = 'EX': ESTRANGEIRO = '1'
3.4 Remoção do campo SEXOMomento: Pré-validação
Regra:- Se SEXO vazio: Campo removido do payload
3.5 Normalização do CEPMomento: Pré-validação
Regra:- Se CEP informado e valor numérico = 0: CEP = 'NULL()'
3.6 Definição do CODIGO_CLIENTEMomento: Pré-validação obrigatória
Regra de prioridade:
1) CODIGO_CLIENTE informado: utilizado após trim()2) Se vazio: CODIGO_CLIENTE = CPF_CGC3) Se ESTRANGEIRO = 1: CODIGO_CLIENTE = RG_IE
3.7 Validação obrigatória do CODIGO_CLIENTEMomento: Após reestruturação
Regra:- Deve existir- Tipo string- Máx. 14 caracteres
3.8 Filtro de busca (identificação do registro)Momento: Antes de INSERT/UPDATE
Regra:- Nacional: filtro = CPF_CGC- Estrangeiro: filtro = CODIGO_CLIENTE
3.9 Verificação de existência e controle de duplicidade
Momento: Após definição do filtro e antes e durante o processo que decide entre INSERT ou UPDATE
Durante o processamento em setClientesVarejo(), após a definição e normalização dos campos obrigatórios, o sistema executa uma consulta na tabela CLIENTES_VAREJO com o objetivo de identificar se o cliente já possui cadastro.
A busca é realizada utilizando um filtro dinâmico:
- Cliente nacional: filtro por CPF_CGC- Cliente estrangeiro: filtro por CODIGO_CLIENTE
O registro mais recente é recuperado com ordenação decrescente por CADASTRAMENTO e limite de 1 resultado.
Caso NÃO seja encontrado um CODIGO_CLIENTE válido:
1) Validação de duplicidade (somente para clientes nacionais)
O sistema realiza uma segunda consulta verificando se já existe algum registro com o mesmo CODIGO_CLIENTE informado. Essa validação evita inconsistências onde um CODIGO_CLIENTE esteja associado a um CPF_CGC diferente.
Se encontrado: A execução é interrompida com exceção indicando conflito de identidade.
2) Normalização do campo FILIAL
Se o valor de FILIAL for numérico: O sistema converte o código para o nome correspondente na tabela FILIAIS.
3) Complemento automático do campo OBS
O sistema prefixa o texto: "Cadastrado Pelo PDV ILLIMITAR."
4) Persistência dos dadosÉ executado um INSERT na tabela CLIENTES_VAREJO utilizando sqlPrepareInsert().
Caso SEJA encontrado um registro existente: O fluxo segue para a lógica de atualização (UPDATE), preservando dados críticos conforme regras definidas.
3.10 Conversão de FILIAL numéricaMomento: Apenas em INSERT
Regra:- Se FILIAL numérica: FILIAL = Nome correspondente na tabela FILIAIS3.11 Complemento automático de OBSMomento: INSERT
Regra:- OBS = "Cadastrado Pelo PDV ILLIMITAR. {OBS}"
4. PERSISTÊNCIA DOS DADOS (BANCO DE DADOS)
Tabela principal: CLIENTES_VAREJO
Operações possíveis:
- INSERT Quando: Cliente não localizado Método: sqlPrepareInsert()
- UPDATE Quando: Cliente já existente Método: sqlPrepareUpdate()
Campos controlados automaticamente:- CODIGO_CLIENTE- CADASTRAMENTO- DATA_PARA_TRANSFERENCIA- FILIAL (em update preserva valor original)- TIPO_VAREJO (em update preserva valor original)
5. RESULTADO DO PROCESSAMENTO
Retorno padrão (sucesso):
- Mensagem: OK- Mensagem Detalhada: Registrado com sucesso.- CODIGO_CLIENTE- CADASTRAMENTO- DATA_PARA_TRANSFERENCIA
Em caso de erro:
- Transação revertida (rollback)- Exceção com prefixo: "CLIENTES_VAREJO: {detalhes do erro}"
Exemplos de Request:
{
"UF"key": "MG",
"CEP": "06845330",
"DDD": "21",
"OBS": "<API_KEY>",
"OMS"CLIENTE_VAREJO": "0",CLIENTE "key": "609d9139-3439-45ae-ad00-a3e5a9f835f1",
"PAIS": "BRASIL",
"SEXO": "M",
"EMAIL": "T.TESTE@GMAIL.COM",
"PF_PJ": "1",
"RG_IE": "94987713999",
"BAIRRO": "PADRE EUSTÁQUIO",
"CIDADE": "BELO HORIZONTE"TESTE",
"FILIAL": "ESTOQUE CENTRAL",
"NUMERO"PF_PJ": "370",true,
"STATUS"ESTRANGEIRO": "1",
"CELULAR": "",false,
"CPF_CGC": "99999999999",
"eventId"RG_IE": "d061d60d-d2bc-4181-a224-881ebf4ded07"94987713999",
"ENDERECO"EMAIL": "CESÁRIOt.teste@gmail.com",
ALVIM""DDD": "21",
"TELEFONE": "999999999",
"DDD_CELULAR": "21",
"CELULAR": "999999999",
"UF": "RJ",
"CIDADE": "RIO DE JANEIRO",
"BAIRRO": "CENTRO",
"CEP": "20000000",
"TIPO_LOGRADOURO": "RUA",
"ENDERECO": "EXEMPLO",
"NUMERO": "100",
"COMPLEMENTO": "SALA 10",
"PAIS": "BRASIL",
"ANIVERSARIO": "1993-07-04 00:00:00",
"COMPLEMENTO"OBS": "",Cadastro "DDD_CELULAR":via "",
"ESTRANGEIRO": "0",
"TIPO_VAREJO": "VENDEDOR (C)",
"CLIENTE_VAREJO": "LOREM IPSUM",
"CODIGO_CLIENTE": "94987713999",
"TIPO_LOGRADOURO": "RUA"integração"
}Exemplos de Response:
{
"UF": "MG",
"CEP": "06845330",
"DDD": "21",
"OBS": "",
"OMS": "0",
"key": "609d9139-3439-45ae-ad00-a3e5a9f835f1",
"PAIS": "BRASIL",
"SEXO": "M",
"EMAIL": "T.TESTE@GMAIL.COM",
"PF_PJ": "1",
"RG_IE": "94987713999",
"BAIRRO": "PADRE EUSTÁQUIO",
"CIDADE": "BELO HORIZONTE",
"FILIAL": "ESTOQUE CENTRAL",
"NUMERO": "999",
"STATUS": "1",
"CELULAR": "",
"CPF_CGC": "99999999999",
"eventId": "d061d60d-d2bc-4181-a224-881ebf4ded07",
"ENDERECO": "CESÁRIO ALVIM",
"Mensagem": "OK",
"TELEFONE": "999999999",
"ANIVERSARIO": "1993-07-04 00:00:00",
"COMPLEMENTO": "",
"DDD_CELULAR": "",
"ESTRANGEIRO": "0",
"TIPO_VAREJO": "VENDEDOR (C)",
"CADASTRAMENTO": "2025-09-25 15:58:07.000",
"CLIENTE_VAREJO": "LOREM IPSUM",
"CODIGO_CLIENTE": "94987713999",
"TIPO_LOGRADOURO": "RUA",
"Mensagem Detalhada": "Registrado com sucesso.",
"CODIGO_CLIENTE": "99999999999",
"CADASTRAMENTO": "2026-02-24 12:00:00",
"DATA_PARA_TRANSFERENCIA": "2026-02-0324 11:41:39"12:00:00"
}
Fluxo do Processo
Critérios de Aceitação
| Processo | Subprocesso | Descrição | Situação esperada |
WebService |
Validação e persistência |
Ao receber requisição com os campos obrigatórios, deve validar e gravar o cliente em CLIENTES_VAREJO (criando ou atualizando conforme existência). |
Registro persistido e retorno de confirmação ao chamador. |
| Monitor | Captura cronológica | Quando acionado por cron, deve buscar clientes a partir de DATA_PARA_TRANSFERENCIA, paginando resultados e mantendo a continuidade pela data/offset. |
Itens selecionados por data e organizados para processamento assíncrono; posição salva em wosk_monitor. |
| Queue | Integração assíncrona | Deve converter o item para o formato do destino (contatos, endereço e documentos), realizar validações essenciais e registrar o resultado na fila. | Fila atualizada com sucesso ou erro, mantendo mensagem e retorno para rastreabilidade. |

