ProtheusClienteFull (STATUS: PARCIAL)
Documentação Técnica
| Nome do cliente | |
| 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 | 24/02/2026 |
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 |
| 24/02/2026 | 1.0 |
Descrição Geral dos Processos
ElaEste separaprocesso realiza a integração trabalho em duas etapas: uma etapacompleta de captura (Monitor) e outracadastros de processamentoclientes, assíncronogarantindo (Queue).
Na prática, o Monitor localizaque os dados estejam consistentes antes do clienteenvio eme que o acompanhamento do processamento seja rastreável.
A captura de registros é feita de forma periódica (cron), a partir de uma visão de serviçodados disponível no ambiente de origem, e criaos (ouitens atualiza)capturados umsão itemencaminhados napara processamento assíncrono por fila.
Em seguida, a fila paraprocessa integração. Depois, a Queue consome essecada item, preparaaplica ajustes de padronização de texto, envia ao destino e atualiza o payloadstatus finaldo eprocessamento, realizapermitindo o envio para o Protheus, registrando o resultado parareprocessamento, auditoria e acompanhamento.
O objetivo do fluxo é garantir que o envio ocorra de forma controlada, com rastreabilidade de erros e possibilidade de reprocessamento, sem depender de uma execuçnotificação únicaquando ehouver sincrona.falhas.
Monitor
Conceito:Descrição MonitorConceitual
A entrada é realizada via query sobre a visão WOSK_SERVICO_ENVIA_PROTHEUS_CLIENTES_FULL. O WHERE é construído dinamicamente de acordo com a chave recebida.Processo:Descrição
Classe:do WOSK\ProtheusClienteFull\fluxo
Entrada: chaveé noacionado formatopor cron A1_LOJA-A1_COD(ex.:e 01SD0001-000123)busca ouos listadados de chaves.Origem dos dados: consulta na view WOSK_SERVICO_ENVIA_PROTHEUS_CLIENTES_FULL com WHERE construído dinamicamenteclientes a partir da chave.Queryvisão de origem.Entrada de dados (
semquery)filtro):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_FULLWHERE dinâmico aplicado por chave:
WHERE
A1_LOJA = '{A1_LOJA}<A1_LOJA>'
AND A1_COD = '{A1_COD}<A1_COD>';Reestruturaç
õesão e transformações (pré-insert na fila):- Todos os campos do registro retornado sofrem trim() (não tratado como alteração relevante).-de Odados
campo
DATA_PARA_TRANSFERENCIAA1_LOJA-A1_CODépara convertido/normalizadoidentificação única no processamento assíncrono.Y-m-d H:i:s e usadoutilizada como datareferência de capturaagendamento/ordenação na fila (ver Conceito Cronológico).Operações com dados (Banco de Dados)
na fila.- Destaque (conceito cronológico): ao normalizar e usar DATA_PARA_TRANSFERENCIA para ordenar/capturar, o fluxo passa a depender de data/hora como controle de processamento. Referência: Cronológico.Persistência:- O Monitor insere/atualiza o itemprocessamento na filatabela pela Queuewosk_queue (tabelabanco wosk_queue)do usando:
acao:integrador).ProtheusClienteFullchaveControle do Monitor:{A1_LOJA}-{A1_COD}conteudo: o registro bruto retornado pela view (incluiCGC_CPF,NOME,ENDERECO, etc.)data_adicionado:DATA_PARA_TRANSFERENCIAnormalizadasituacao:0(Aguardando integração)
- A tabela wosk_monitor é a persistência padrão de posição/controlecontinuidade na tabela wosk_monitor (banco do Monitor (via Monitor::set())integrador), quandopermitindo utilizadaretomada pelodo agendamento/execuçprocessamento.
Resultado do processamento
Ao final, o registro fica disponível na fila para processamento assíncrono, iniciado com status de aguardando integração doe monitor.
de referência para ordem de processamento.
Queue
Conceito:Descrição QueueConceitual
Processo: Classe: WOSK\ProtheusClienteFull\QueueEntrada (obrigatória): token do item na fila (Queue::run(string $token)).0) PreparaçDescrição do
processamentofluxo(
cron/worker):Antescron e consome itens pendentes da fila.
run(token)Queue::prepare()_prepare("ProtheusClienteFull")situacao = 0SELECT /*+ SQL_BIG_RESULT */ /*+ SQL_NO_CACHE */ `token`
FROM `{$this->bancoIntegrador}`.`wosk_queue`
WHERE `acao` = 'ProtheusClienteFull'
AND `situacao` = 0
{AND `data` <= '{agora - delay em minutos}'}
ORDER BY `data_adicionado` ASCDestaque (conceito cronológico): quandopadrão, o registro delayestádo ativo,fluxo a seleção filtra por data/hora (data), controlando quando um itemFull pode ser processado.descartado Referência:para Cronológico.1)evitar Seleçduplicidade.
Reestruturação do item e marcaçalteração de estado (pré-envio):
- Lê o item em wosk_queue pelo token.
- Atualiza o mesmo item para “Enviando” com situacao = 1 (início do processamento).
2) Reestruturação do conteúdo (mapeamento de campos):
O conteúdo capturado pelo Monitor vem com nomes como CGC_CPF, NOME, ENDERECO, etc. Antes do envio, a Queue converte isso para o layout esperado no Protheus, produzindo chaves A1_*. Exemplos de mapeamento:dados
CGC_CPF→A1_CGCNOME→A1_NOMENOME_REDUZ→A1_NREDUZENDERECO→A1_ENDCOD_PAIS_BC→A1_CODPAISSTATUS→A1_MSBLQL
3) TransformaçõesPadronização de dados (pré-envio ao Protheus):texto- A1_NOME e : remoção de acentos em campos de nome/endereço/bairro/contato e eliminação do caractere A1_NREDUZ|.- A1_END,em A1_BAIRRO,nomes, A1_CONTATO:para remoçãoevitar inconsistências no destino.
A1_CODPAISpaís: str_padsetProtheus("cliente",ambiente/tenant payload,junto "POST",à headers)tenantId: "01,01SD0001"- Resposta esperada: array
Operações com Mensagemdados e opcionalmente Mensagem Detalhada.
5) Decisão(Banco de situação (pós-envio):
- Sucesso: situacao = 2 (quando não há code e Mensagem != "ERRO").
- Erro: situacao = 4 (quando Mensagem == "ERRO" ou quando existe code na resposta, ou exceção no processamento).
6) Ações e persistências (por situação):Dados)
QuandoLeitura:sucesso (situacao = 2):chamasetProtheusClienteIntegrado(chave, true). Alémconsumo deatualizaritensodastatustabela wosk_queue (banco doitem, o fluxo padrão registra auditoria de integração emOSK_LOG_INTEGRACAO_PROTHEUS.Quando erro (situacao = 4):tenta capturar o mesmo cliente no processoProtheusClientePadrao(Monitor correspondente) e verifica se um item foi criado emwosk_queue. Se o item doProtheusClientePadraoexistir, esta fila pode marcar o item atual para remoção e chamarintegrador).setProtheusExcluir(["ProtheusClienteFull"], "chave", chave)- Atualização: gravação do retorno, mensagem e status final
donaitem:tabela wosk_queue. - Log de falhas: quando
nãoaplicável,for removido, atualizawosk_queuecom retorno, mensagem, dumpregistro derequisiçãodetalhesedetempoerrototal.de banco na tabela wosk_queue_log.
Resultado do processamento
RegraSucesso: o cliente é considerado integrado e o item é finalizado com status dededuplicaçsucesso.- Erro: o item é finalizado com status de erro e mensagem explicativa; o processo pode acionar notificação
(pré-inserte/ounaevitarfila):Ao inserir itens comsituacao = 0, o mecanismo padrão da Queue compara oduplicidade com oconteudoquefluxojá existe para a mesmaacaoechave. Se o conteúdo for igual, a inserção pode ser ignorada. O campoDATA_PARA_TRANSFERENCIAédesconsideradonessa comparação, evitando reprocessos apenas por variação de data/hora.Tabelas envolvidas (persistência e auditoria):wosk_queue: fila principal do processo (acao = ProtheusClienteFull)wosk_queue_log: log de falhas de SQL durante escrita de auditoriaOSK_LOG_INTEGRACAO_PROTHEUS: auditoria de integração para ações que casam compadrão./Protheus/
Notificação de erros (consolidação via query):A rotinaQueue::notificar()consulta os erros deste processo diretamente na tabelawosk_queuee envia e-mail para destinatários configurados.SELECT `token`, `acao`, `chave`, `data_adicionado`, `data`, `mensagem` AS 'ERRO' FROM `{$this->bancoIntegrador}`.`wosk_queue` WHERE `acao` = 'ProtheusClienteFull' AND `situacao` = 4 ORDER BY `data` ASCFluxo do Processo
Encadeamento obrigatório:Monitor → Queue.
Monitor (cron/on-demand): recebe a chaveA1_LOJA-A1_COD, consulta a viewWOSK_SERVICO_ENVIA_PROTHEUS_CLIENTES_FULLe grava/atualiza o item na tabelawosk_queuecomsituacao = 0.Queue (cron/worker): seleciona itens pendentes (situacao = 0), marca como em envio (situacao = 1), monta payloadA1_*, envia para o Protheus e grava o resultado (situacao = 2ou4).Notificação: erros (situacao = 4) podem ser consolidados e enviados por e-mail viaQueue::notificar().Fallback: em erro, pode acionar captura do mesmo cliente emProtheusClientePadraoe remover o item desta fila quando aplicável.
Critérios de Aceitação
Processo Subprocesso Descrição Situação esperada Monitor Captura Quando acionado por cron, deve obter o registro do cliente na visão de origem e gerar uma chave Aoúnicainformarno formatoA1_LOJA-A1_COD, o Monitor deve montar o WHERE dinamicamente e consultar a view de serviço..Registro encontradoidentificado→eitemprontocriado/atualizadopara encaminhamento.Monitor Enfileiramento O registro capturado deve ser enfileirado para processamento assíncrono, com status inicial e agendamento baseado em wosk_queueDATA_PARA_TRANSFERENCIAcom(conceitosituacaocronológico).=Item 0.persistido em wosk_queue e ordenado/agendado conforme a data.Queue Envio ao ProtheusProcessamentoOAoworkerconsumir o item, devemapear dados paraA1_*,aplicarnormalizações e executar POST no serviçpadronização decliente.texto e enviar ao destino; em seguida, deve atualizar o resultado na fila.RespostaFilaOKatualizada→comsucesso ou erro esituacaostatus=de2auditoriamensagemregistrada.correspondente, mantendo rastreabilidade. mesmoQueue TratamentoControle deerroduplicidadeQuando houver falha denointegraçãenvio e o mesmo cliente já existir no fluxo padrão, oitemregistro do fluxo Full devepermanecerserrastreável e elegíveldescartado paranotificação.evitar processamento duplicado. osituacaoSem= 4, mensagem registrada e opçãoduplicidade defallbackregistros na fila paraProtheusClientePadrao.NotificaçãoConsolidaçãoListar erros pendentes do processo e enviar e-mail aos destinatários configurados.Relatório enviado com chave, datas e mensagem de erro normalizada.cliente.