LojaCliente (STATUS: DOCUMENTADO)
Documentação Técnica
| Nome do cliente | OSKLEN |
| Nome do projeto | Integração LINX → ILLI (Cliente Loja) |
| Biblioteca | wosk_loja_cliente |
| Data | 25/03/2026 |
Histórico de Versões
| Data | Versão | Modificado por | Descrição da Mudança |
| 25/03/2026 | 1.0 | Maykon/Gustavo | Criação da documentação técnica do processo Loja Cliente (LINX → ILLI). |
Descrição
Este serviço de clientes no LINX a partir do PDV integra com o ILLI via fila quando necessário.
Coordena captura automática ou por código, valida endereço e documento e registra o resultado de cada envio para acompanhamento.
Capturador
A captura automática consulta CLIENTES_VAREJO quando o estado do serviço LojaCliente está apto, com filtro por DATA_PARA_TRANSFERENCIA, ordenação por data e código e paginação conforme o limite configurado para o serviço LojaCliente, alinhada ao processamento cronológico. Para cada linha, atualiza posição, grava na fila de integração com serviço LojaCliente e chave CODIGO_CLIENTE; ao final do lote ou em erro, atualiza o estado do capturador.
A origem dos dados é a tabela CLIENTES_VAREJO com enriquecimento por município e país via view W_LCF_LX_MUNICIPIO e tabela LCF_LX_PAIS. A captura por código aceita um ou mais CODIGO_CLIENTE, reutiliza a mesma projeção com filtro em lista e enfileira cada registro, preservando o token quando já existir para a mesma chave.
Fonte
Consulta principal:
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)
Operações com Dados
Leitura: Consulta da tabela CLIENTES_VAREJO com LEFT JOIN em W_LCF_LX_MUNICIPIO e LCF_LX_PAIS, conforme SQL da seção Fonte.
Consulta dinâmica (captura automática): reutiliza a projeção com filtro em DATA_PARA_TRANSFERENCIA, ordenação e paginação (OFFSET/FETCH) conforme o limite configurado para o serviço LojaCliente e o estado do capturador.
Consulta dinâmica (captura por código): mesma projeção com CODIGO_CLIENTE IN (...).
Persistência: grava itens pendentes na Fila de Processamento, com serviço LojaCliente e chave CODIGO_CLIENTE (preservando token quando já existir para a mesma chave); o estado do capturador mantém offset, posição e situação da captura.
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 ILLI.
O fluxo marca o registro como em envio, monta o corpo JSON para o endpoint ILLI de pessoa/cliente, valida IBGE e código BACEN quando aplicável, interpreta o retorno JSON (success, message) e grava situação final, mensagem, tempo e auditoria de requisição na tabela da fila de integração.
Estruturação de Dados
| Campo no payload ILLI | Campo de origem |
codigo |
CODIGO_CLIENTE |
nome |
CLIENTE_VAREJO |
tipo_cliente |
Constante CLIENTE |
filialCadastro |
FILIAL |
genero |
SEXO |
grupo |
TIPO_VAREJO |
complemento |
OBS |
contatos |
Array montado a partir de DDD, TELEFONE, DDD_CELULAR, CELULAR, EMAIL (ver tabela do array contatos) |
situacao |
STATUS (ativo 1 ou inativo conforme regra) |
data_nascimento |
ANIVERSARIO |
data_cadastro |
CADASTRAMENTO |
data |
DATA_PARA_TRANSFERENCIA |
tipo, cnpj, ie |
Pessoa jurídica quando CPF_CGC com mais de 11 caracteres; RG_IE como inscrição |
tipo, cpf, identidade |
Pessoa física quando CPF_CGC com até 11 caracteres; RG_IE como identidade |
| Campo no payload ILLI | Campo de origem |
endereco.cep |
CEP (somente dígitos, completado à esquerda até 8 posições) |
endereco.logradouro |
TIPO_LOGRADOURO concatenado a ENDERECO (limitado a 250 caracteres) |
endereco.numero |
NUMERO (somente dígitos) |
endereco.complemento |
COMPLEMENTO (limitado a 250 caracteres) |
endereco.bairro |
BAIRRO |
endereco.cidade |
CIDADE |
endereco.uf |
UF (regra especial quando vazio ou com mais de 2 caracteres; estrangeiro usa EX) |
endereco.pais |
PAIS |
endereco.codigo_ibge |
IBGE ou valor fixo para estrangeiro quando aplicável |
endereco.codigo_bacen |
PAIS_BC |
| Campo | Tipo | Obrigatório | Descrição |
tipo |
string | sim | TELEFONE, CELULAR ou EMAIL. |
contato |
string | sim | Para telefone/celular: DDD e número concatenados somente com dígitos; para e-mail: texto do e-mail. |
Exemplo ilustrativo de trecho do corpo enviado ao ILLI (estrutura resumida):
{
"codigo": "...",
"nome": "...",
"endereco": {
"cep": "00000000",
"referencia": "",
"logradouro": "...",
"numero": "...",
"complemento": "...",
"bairro": "...",
"cidade": "...",
"uf": "...",
"pais": "...",
"codigo_ibge": "...",
"codigo_bacen": "..."
},
"tipo_cliente": ["CLIENTE"],
"filialCadastro": "...",
"contatos": [
{ "tipo": "TELEFONE", "contato": "11999999999" }
],
"situacao": "1",
"tipo": "FISICA",
"cpf": "00000000000"
}
Tratamento de Dados
Sobre o registro atual lido do conteudo na fila:
DDD,TELEFONE,DDD_CELULAR,CELULAR: normalizados com remoção de não dígitos e montagem de entradas emcontatoscom tiposTELEFONE,CELULAReEMAILquando informados.TIPO_LOGRADOURO,ENDERECO: concatenados para formar o logradouro completo; se o resultado exceder 250 caracteres, aplicadosubstraté 250.COMPLEMENTO: se o comprimento exceder 250 caracteres, aplicadosubstraté 250.CEP: somente dígitos e preenchimento à esquerda com zeros até tamanho 8.NUMERO: somente dígitos no payload de endereço.UF: se vazio ou com mais de 2 caracteres, usa regra condicionada aESTRANGEIRO(incluindo uso deEXpara estrangeiro).CPF_CGC,RG_IE: documentos numéricos padronizados com zeros à esquerda conforme tipo físico ou jurídico; tipo derivado pelo tamanho numérico deCPF_CGCapós normalização.- Validação pré-envio: para não estrangeiro com
UFdiferente deEX, exigeIBGEpreenchido; para qualquer registro, exigePAIS_BCpreenchido (mensagens de erro específicas se ausentes).
Integração com o ILLI
Chamada de integração com o ILLI (via rotina de integração):
- Chamada:
Requisição HTTP(encapsulada pela rotina de envio ao ILLI). - Recurso:
/bibliotecas/48df1d4a-2a73-4afc-be75-a8104533cda0/ilx_pessoa/setCliente - Método HTTP:
POST - Corpo: objeto JSON com os campos mapeados a partir do
conteudodo registro da fila, incluindoendereco,contatos, documentos e metadados de cadastro.
Exemplo de corpo enviado (estrutura alinhada ao objeto montado no código; valores ilustrativos):
{
"id": false,
"codigo": "00000000000123",
"nome": "Cliente Exemplo",
"endereco": {
"cep": "01310100",
"referencia": "",
"logradouro": "RUA EXEMPLO 100",
"numero": "100",
"complemento": "SALA 1",
"bairro": "CENTRO",
"cidade": "SAO PAULO",
"uf": "SP",
"pais": "BRASIL",
"codigo_ibge": "3550308",
"codigo_bacen": "1058"
},
"tipo_cliente": ["CLIENTE"],
"filialCadastro": "FILIAL01",
"genero": "M",
"grupo": "CLIENTE VAREJO",
"complemento": "OBS",
"contatos": [
{ "tipo": "TELEFONE", "contato": "11999999999" }
],
"situacao": "1",
"data_nascimento": "1990-01-01 00:00:00",
"data_cadastro": "2024-01-01 10:00:00",
"data": "2024-01-02 08:00:00",
"tipo": "FISICA",
"cpf": "12345678901",
"identidade": "1234567"
}
Tratamento de retorno
Ausência de resposta: lança exceção indicando que não houve resposta JSON; situação final 4 na tabela da fila de integração.
Resposta vazia de success e message: tratada como retorno não reconhecido (exceção), situação erro.
Sucesso: quando success não está vazio, situação sucesso; caso contrário situação erro com mensagem em message quando existir.
Em exceção genérica, a mensagem é persistida; se a mensagem indicar JSON não reconhecido, o retorno estruturado pode incluir error e data com o trecho analisado.
Notificação
A notificação de erros consulta registros com falha na tabela da fila de integração para o serviço LojaCliente e situação de erro, ordenando pelo horário de processamento para priorizar ocorrências mais antigas.
Endpoint (API)
O endpoint processa o cadastro de clientes a partir do corpo da requisição: o fluxo de entrada é o array de parâmetros no processamento principal, validado contra tipo e obrigatoriedade conforme o schema do serviço, com persistência em CLIENTES_VAREJO e regras de inclusão, atualização, filial e documento. O payload de entrada é um objeto JSON (ou equivalente) cujas chaves correspondem aos campos da tabela na subseção Estruturação de Dados.
- Chamada:
Requisição HTTP - Recurso:
/bibliotecas/1be199d8-98e8-4de7-a92c-e59c2f08edd6/wosk_loja_cliente(caminho declarado no arquivo PHP da biblioteca) - Método HTTP:
POST
Campos adicionais tratados no fluxo interno de gravação (validação complementar e insert/update em CLIENTES_VAREJO): CODIGO_CLIENTE, TIPO_VAREJO, CADASTRAMENTO, DATA_PARA_TRANSFERENCIA, OMS, entre outros previstos no processamento de persistência.
Estruturação de Dados
| Campo | Tipo | Obrigatório | Descrição |
key |
string | não | Identificador ou chave de API conforme exigência da plataforma de publicação do serviço. |
CLIENTE_VAREJO |
string (40) | sim | Nome do cliente. |
FILIAL |
string (25) | sim | Nome ou código da filial. |
ENDERECO |
string (90) | não | Endereço sem o tipo de logradouro. |
UF |
string (2) | não | Estado (UF). |
PF_PJ |
bool (1) | sim | 1 pessoa física, 2 pessoa jurídica. |
RG_IE |
string (19) | não | RG (PF) ou IE (PJ). |
CPF_CGC |
string (19) | não | CPF ou CNPJ conforme o caso. |
CIDADE |
string (35) | não | Município. |
COMPLEMENTO |
string (20) | não | Complemento do endereço. |
CEP |
string (9) | não | CEP. |
TELEFONE |
string (10) | não | Telefone sem DDD. |
ANIVERSARIO |
datetime (19) | não | Data de aniversário ou nascimento. |
DDD |
string (4) | não | DDD do telefone. |
SEXO |
string (1) | não | Gênero. |
OBS |
string (200) | não | Observações. |
EMAIL |
string (100) | não | E-mail. |
BAIRRO |
string (35) | não | Bairro. |
STATUS |
number (1) | não | 1 ativo, 2 cancelado. |
PAIS |
string (40) | não | Nome do país. |
TIPO_LOGRADOURO |
string (10) | não | Tipo de logradouro. |
NUMERO |
string (10) | não | Número. |
ESTRANGEIRO |
bool (1) | sim | 1 estrangeiro, 0 nacional. |
DDD_CELULAR |
string (4) | não | DDD do celular. |
CELULAR |
string (10) | não | Celular sem DDD. |
Exemplo de payload enviado para o endpoint (JSON):
{
"key": "<API_KEY_OU_VAZIO>",
"CLIENTE_VAREJO": "Nome do Cliente",
"FILIAL": "01",
"PF_PJ": true,
"ESTRANGEIRO": false,
"CPF_CGC": "12345678901",
"ENDERECO": "Rua Exemplo",
"UF": "SP",
"CEP": "01310100"
}
Tratamento de Dados
No método de gravação do cadastro (pré-insert/update e persistência):
CADASTRAMENTO,DATA_PARA_TRANSFERENCIA: definidos com data/hora atual no início do processamento da requisição.TIPO_VAREJO: se não existir na lista carregada deCLIENTE_VAR_TIPOS, forçado paraCLIENTE VAREJO.ESTRANGEIRO: se vazio, definido como0; seUFforEX, definido como1.SEXO: se vazio, removido do conjunto de parâmetros antes da gravação.CEP: se informado e numericamente zero após avaliação, substituído por sentinelaNULL()para o insert.CODIGO_CLIENTE: se vazio após normalização, preenchido comCPF_CGCou, para estrangeiro, comRG_IE; validação específica de obrigatoriedade e tamanho aplicada em seguida.- Inclusão: verifica duplicidade de documento versus código para não estrangeiro; converte
FILIALnumérica para nome viaFILIAIS; prefixaOBScom texto fixo de origem PDV; executa insert parametrizado emCLIENTES_VAREJOconforme colunas previstas para o cadastro. - Alteração: reaproveita
CODIGO_CLIENTE,FILIAL,CADASTRAMENTOeTIPO_VAREJOdo registro localizado; seOMSfor diferente de1, recalculaDATA_PARA_TRANSFERENCIAe aplica estratégia de mesclagem campo a campo conformeCADASTRAMENTOanterior antes doUPDATE; seOMSfor1, o bloco de atualização é ignorado.
Persistência no LINX
Chamada de persistência no banco LINX:
- Chamada:
Operação em banco(insert ou update parametrizado). - Tabelas:
CLIENTES_VAREJO(principal); consultas auxiliares aCLIENTE_VAR_TIPOSeFILIAISpara listas e resolução de filial. - Processamento: transação com commit ao sucesso ou rollback em falha; erros encapsulados com prefixo
CLIENTES_VAREJO:na mensagem.
Tratamento de retorno
Sucesso: retorno com Mensagem igual a OK e Mensagem Detalhada indicando registro com sucesso, além dos campos CODIGO_CLIENTE, CADASTRAMENTO e DATA_PARA_TRANSFERENCIA atualizados no array de resposta.
Falha de validação inicial: exceção com mensagens concatenadas dos erros de campo.
Falha na gravação: exceção com mensagem originada do banco ou regra de negócio (incluindo conflito de documento/código).
O endpoint não implementa envio de notificação de erros; o acompanhamento de falhas da integração em fila é tratado na Fila de Processamento.
Fluxo do Processo
Critérios de Aceitação
| Processo | Subprocesso | Descrição | Situação esperada |
| Capturador | Captura e enfileiramento | Com estado apto e filtro de data válido, deve ler CLIENTES_VAREJO com joins de município e país, paginar pelo limite configurado e gravar cada registro na fila de integração com serviço LojaCliente e chave CODIGO_CLIENTE. |
Registro pendente na fila com conteúdo alinhado à consulta e posição de captura atualizada. |
| Capturador | Captura por código | Para cada CODIGO_CLIENTE informado, deve consultar a mesma projeção e gravar na fila preservando token existente quando houver. |
Registros reenfileirados com chave consistente e token reutilizado quando aplicável. |
| Fila de Processamento | Integração ILLI | Ao processar registro pendente, deve montar o JSON, chamar o recurso /bibliotecas/48df1d4a-2a73-4afc-be75-a8104533cda0/ilx_pessoa/setCliente, interpretar o retorno quanto à situação de sucesso ou erro com mensagem (success, message) e persistir na tabela da fila de integração a situação final (códigos 2 ou 4 conforme o caso), a mensagem retornada e o tempo de processamento. |
Fila atualizada com situação final e auditoria coerentes com o retorno do ILLI. |
| Endpoint (API) | Cadastro PDV | Ao receber payload válido, deve inserir ou atualizar CLIENTES_VAREJO conforme regras de documento, filial e OMS, retornando Mensagem OK em sucesso. |
Registro gravado no LINX e resposta com código e datas coerentes com a operação. |

Nenhum comentário