prepare($sql); $stmt->execute([ 'client_id' => $client_id, 'user_id' => $user_id, 'description' => $description, 'amount' => $amount, 'category' => $category, 'expense_date' => $expense_date ]); $_SESSION['success_message'] = 'Despesa registrada com sucesso!'; header('Location: expenses.php'); // Redirecionar para limpar o POST exit; } catch (PDOException $e) { $error_message = 'Erro ao registrar a despesa: ' . $e->getMessage(); } } } // Lógica para FILTRAR e BUSCAR despesas (GET) $filter_start_date = $_GET['start_date'] ?? ''; $filter_end_date = $_GET['end_date'] ?? ''; $filter_category = $_GET['category'] ?? ''; $sql = "SELECT * FROM expenses WHERE client_id = :client_id"; $params = ['client_id' => $client_id]; if ($filter_start_date) { $sql .= " AND expense_date >= :start_date"; $params['start_date'] = $filter_start_date; } if ($filter_end_date) { $sql .= " AND expense_date <= :end_date"; $params['end_date'] = $filter_end_date; } if ($filter_category) { $sql .= " AND category = :category"; $params['category'] = $filter_category; } $sql .= " ORDER BY expense_date DESC"; $expenses = []; $total_filtered_amount = 0; try { $stmt = $pdo->prepare($sql); $stmt->execute($params); $expenses = $stmt->fetchAll(PDO::FETCH_ASSOC); // Calcular total dos itens filtrados foreach ($expenses as $expense) { $total_filtered_amount += $expense['amount']; } } catch (PDOException $e) { $error_message = 'Erro ao buscar despesas: ' . $e->getMessage(); } // Obter todas as categorias (macro áreas ativas) para os dropdowns $stmt_categories = $pdo->prepare("SELECT nome, slug FROM macro_areas WHERE client_id = :client_id AND ativo = 1 ORDER BY nome ASC"); $stmt_categories->execute(['client_id' => $client_id]); $categories = $stmt_categories->fetchAll(PDO::FETCH_ASSOC); include __DIR__ . '/includes/header.php'; ?>