✓ Configurações salvas com sucesso!
ℹ️ Após alterar o IP ou a porta, reinstale o app no celular acessando a nova URL.
🔧 Manutenção do Banco
Para exibir todos os itens ao escanear um cupom fiscal (QR Code NF-e),
é necessário criar um índice de desempenho na tabela NOTAS_ITENS.
Feito uma única vez — em tabelas grandes pode levar alguns segundos.
Para a tela Últimos 10 Cupons abrir instantaneamente
(em vez de varrer a tabela inteira), crie o índice de data na NFCE_CABN.
Feito uma única vez por cliente.
📋 Histórico de Alterações
Nenhuma alteração registrada ainda.
Últimas = count($audit) ?> entradas • mais recentes primeiro
['Estoque', 'badge-estoque'],
'atualizar_preco_venda' => ['Preço Venda', 'badge-preco'],
'atualizar_preco_atacado' => ['Preço Atacado','badge-preco'],
'atualizar_campos' => ['Dados', 'badge-dados'],
'login' => ['Login', 'badge-login'],
'logout' => ['Logout', 'badge-login'],
];
foreach ($audit as $e):
[$labelAcao, $badgeCls] = $labelsAcao[$e['acao']] ?? [$e['acao'], 'badge-login'];
$dets = $e['detalhes'] ?? [];
$det = '';
if ($e['acao'] === 'ajuste_estoque') {
$tipoLabel = ['entrada'=>'Entrada','saida'=>'Saída','ajuste'=>'Ajuste direto'];
$det = ($tipoLabel[$dets['tipo']] ?? $dets['tipo'] ?? '') . ': ' . ($dets['qtd'] ?? '');
if (isset($dets['qtd_nova'])) $det .= ' → Novo: ' . $dets['qtd_nova'];
} elseif ($e['acao'] === 'atualizar_preco_venda') {
$det = 'Novo: R$ ' . number_format((float)($dets['preco_venda']??0),2,',','.');
} elseif ($e['acao'] === 'atualizar_preco_atacado') {
$det = 'Novo: R$ ' . number_format((float)($dets['preco_atacado']??0),2,',','.');
} elseif ($e['acao'] === 'atualizar_campos') {
$partes = [];
foreach ($dets as $k => $v) {
if ($v !== null) $partes[] = strtoupper($k) . ': ' . $v;
}
$det = implode(', ', $partes);
} elseif ($e['acao'] === 'login') {
$det = 'Via ' . ($dets['via'] ?? '?');
}
?>
= htmlspecialchars($labelAcao) ?>
= htmlspecialchars($e['cod_item']) ?>
= htmlspecialchars($det) ?>