--- name: Financeiro PJ/PF - Controle de Contas description: Sistema financeiro com modo PJ (empresa com banco/boletos) e PF (pessoal simples), edição via modal, análise falta pagar type: project --- ## Financeiro - Módulo Contas (ATUALIZADO 2026-03-13) ### Modo PJ/PF - Toggle PJ/PF via POST (`contas/trocarModo`) salvando em session (`financeiro_modo`) - Filtro periodo via POST (`contas/filtrar`) salvando em session (`financeiro_mes`, `financeiro_ano`) - URL sempre limpa: `/contas` (sem parametros expostos) - PJ: dashboard completo com banco Sicoob, boletos, conciliação, investimentos - PF: dashboard simples com receitas/despesas pessoais (filtro `origem='PF'` + `user_id`) ### Cards PJ (stats-row, 6 cards) - Entradas no Banco (`extratoCreditos`) - verde - Saidas do Banco (`extratoDebitos`) - vermelho - Boletos Recebidos (`totalRecebidoBoletos`) - azul - **Receitas** (`balanco['receitasMes'] + balanco['receitasPendentes']`) - verde, ícone bx-wallet - Sub: pendentes vs recebidas separadas - `receitasPendentes` adicionado ao `getBalancoMensal()` em 2026-03-13 - Despesas (`balanco['despesasPagas'] + balanco['despesasPendentes']`) - amarelo - Saldo Sicoob (`saldoBanco`) - azul, só aparece se disponível ### RECEITA badge (CORRIGIDO 2026-03-13) - Tipo RECEITA sempre mostra badge verde (sem verificação de conciliação bancária) - Antes: conciliação marcava RECEITA como "Recebido (?)" vermelho quando não encontrada no extrato Sicoob - Lógica: `if ($t['tipo'] === 'RECEITA')` → verde ANTES de verificar `$concilStatus` ### Edição via Modal (NÃO página separada) - `edit($id)` retorna JSON (não view) - Modal `#modalEditarTransacao` em ambas views (PJ e PF) - `editarTransacao(id)` fetch JSON → preenche modal → abre - `editarRecorrente(id, desc)` SweetAlert pergunta "somente esta" ou "todas" → abre modal - Recorrentes: `updateRecorrente($id)` atualiza todas com mesma descricao+tipo+categoria+recorrencia+user_id - `excluirRecorrente()` mesma lógica com SweetAlert - `converterInvestimento(id)` SweetAlert para escolher receita OU despesa - Páginas separadas edit.php e create.php podem ser eliminadas (usuario pediu) ### Análise "Falta Pagar" - Seção com gráfico de barras horizontais por categoria + tabela de pendentes - Dados: `pendentesPorCategoria` (array cat=>valor) e `pendentesList` (array transações) - Só aparece quando há despesas pendentes - Implementado em ambas views PJ e PF ### Boletos - Cálculo Corrigido - `getBoletosPagosMes` e `getBoletosResumoMes` ambos usam `data_vencimento` (consistente) - Antes `getBoletosPagosMes` usava `data_pagamento` causando divergência ### DataTables Bootstrap5 - CSS: `dataTables.bootstrap5.min.css` + JS: `dataTables.bootstrap5.min.js` (igual demandas) - BoxIcons fix: `.bx{font-family:'boxicons'!important}` ### Demandas Automáticas - `solicitante_id` = 5 (Crismária Telles, NÃO Jesiel) - Arquivo: `CronDemandaAutomatica.php` linha ~186