Arquitetura do sistema

O módulo é uma biblioteca ISNAPP (padrão de extensão do ERP) composta por três arquivos e integrada a múltiplos bancos MySQL.

Arquitetura em camadas: apresentação, lógica PHP e múltiplos bancos MySQL.

Figura 6 — Arquitetura em camadas: apresentação, lógica PHP e múltiplos bancos MySQL.

Bancos de dados envolvidos

Variável PHP Nome do banco Uso
$banco Dinâmico (tenant) Pedidos, itens, entidades, recebimentos
$bancoRelatorio {banco}_relatorio Tabela log com ponteiro de última execução
$bancoIntegrador {banco}_integrador Stage de integração LX (stage_pedido_lx)
$bancoMasterRelatorio franquia_osklen_relatorio Tabela de destino franquia_1beat (compartilhada)
Para entender sem jargão: o sistema lê informações de três "pastas" diferentes no banco de dados e grava o resultado organizado em uma "pasta central" que o OneBeat consulta.

Tabelas de origem (leitura)

Tabela Banco Papel
movimentacao {banco} Cabeçalho dos pedidos e recebimentos
movimentacao_detalhe {banco} Itens (produtos) de cada movimentação
movimentacao_movimentacao {banco} Vínculo pai-filho (pedido → recebimento)
entidade {banco} Dados da filial (loja)
juridica {banco} CNPJ da filial
stage_pedido_lx {banco}_integrador Integração com sistema LX (LEFT JOIN)
log {banco}_relatorio Controle de ponteiro (procedure = 'franquia_1beat')

Classe principal

Classe: onebeat_pedidos_faturados extends util

Token: 6b5b2af8-ab25-4135-9551-b3cb3e055f1a

CoreVersion: 3

Métodos públicos principais:

  • index() — exibe visual.html
  • run() — execução principal (sincronização)
  • verificaGetLock() — controle de concorrência
  • getPonteiroExecucao() — última data processada
  • getPedidoUltimaVerificacao() — data do pedido mais recente
  • getPedidosRecebidos() — INSERT/UPDATE na tabela destino
  • removePedidosStatus() — limpeza de registros desativados
  • atualizaPonteiroExecucao() — grava novo ponteiro

Mecanismo de lock (concorrência)

Para evitar que duas execuções rodem ao mesmo tempo, o módulo usa um arquivo de lock no diretório temporário do sistema operacional:

/tmp/{banco}.onebeat_pedidos_faturados_run.lock

Usa flock(LOCK_EX | LOCK_NB) — lock exclusivo não-bloqueante. Se outro processo já estiver rodando, lança exceção: "Ja tem outro processo em execucao, aguarde o termino". O lock é liberado no bloco finally via __releaseLock().

Revision #3
Created 2026-06-24 19:51:26 UTC by Gustavo Filgueiras
Updated 2026-06-25 12:34:06 UTC by Gustavo Filgueiras