Arquitetura do sistema
Componentes
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.
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.htmlrun()— execução principal (sincronização)verificaGetLock()— controle de concorrênciagetPonteiroExecucao()— última data processadagetPedidoUltimaVerificacao()— data do pedido mais recentegetPedidosRecebidos()— INSERT/UPDATE na tabela destinoremovePedidosStatus()— limpeza de registros desativadosatualizaPonteiroExecucao()— 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().