getConnection(); $stmt = $pdo->prepare("SELECT id, name FROM schools WHERE owner_id = ?"); $stmt->execute([$iduserlogin]); $school = $stmt->fetch(); if (!$school) die("Scuola non trovata."); $school_id = $school['id']; // === FILTRI === $year = $_GET['year'] ?? date('Y'); $month = $_GET['month'] ?? null; $start_date = $month ? "$year-$month-01" : "$year-01-01"; $end_date = $month ? date('Y-m-t', strtotime($start_date)) : "$year-12-31"; $where_date = "AND o.created_at BETWEEN ? AND ?"; $params = [$school_id, $start_date . ' 00:00:00', $end_date . ' 23:59:59']; // === STATISTICHE FILTRATE === $stmt = $pdo->prepare(" SELECT COUNT(*) as total_orders, SUM(price) as total_revenue, SUM(CASE WHEN payment_method = 'stripe' THEN price ELSE 0 END) as stripe_revenue, SUM(CASE WHEN payment_method = 'paypal' THEN price ELSE 0 END) as paypal_revenue, SUM(CASE WHEN payment_method = 'manual' THEN price ELSE 0 END) as manual_revenue FROM orders o WHERE o.school_id = ? AND o.status = 'completed' $where_date "); $stmt->execute($params); $stats = $stmt->fetch(); // === RICAVI MENSILI (per grafico) === $monthly = []; $start = new DateTime($month ? $start_date : "$year-01-01"); $end = new DateTime($end_date); $interval = new DateInterval('P1M'); $period = new DatePeriod($start, $interval, $end->modify('+1 month')); foreach ($period as $dt) { $m = $dt->format('Y-m'); $label = $dt->format('M Y'); $stmt = $pdo->prepare(" SELECT COALESCE(SUM(price), 0) as revenue FROM orders WHERE school_id = ? AND status = 'completed' AND DATE_FORMAT(created_at, '%Y-%m') = ? "); $stmt->execute([$school_id, $m]); $monthly[] = ['label' => $label, 'revenue' => (float)$stmt->fetchColumn()]; } // === DISTRIBUZIONE METODI PAGAMENTO (per torta) === $payment_data = [ 'Stripe' => $stats['stripe_revenue'] ?? 0, 'PayPal' => $stats['paypal_revenue'] ?? 0, 'Manuale' => $stats['manual_revenue'] ?? 0 ]; // === TOP 5 PRODOTTI === $stmt = $pdo->prepare(" SELECT p.name, pv.name as variation, COUNT(*) as vendite, SUM(o.price) as incasso FROM orders o JOIN products p ON o.product_id = p.id LEFT JOIN product_variations pv ON o.variation_id = pv.id WHERE o.school_id = ? AND o.status = 'completed' $where_date GROUP BY o.product_id, o.variation_id ORDER BY incasso DESC LIMIT 5 "); $stmt->execute($params); $top_products = $stmt->fetchAll(); // === ULTIMI ORDINI === $stmt = $pdo->prepare(" SELECT o.*, u.first_name, u.last_name, u.email, p.name as product_name, pv.name as variation_name FROM orders o JOIN auth_users u ON o.user_id = u.id JOIN products p ON o.product_id = p.id LEFT JOIN product_variations pv ON o.variation_id = pv.id WHERE o.school_id = ? $where_date ORDER BY o.created_at DESC "); $stmt->execute($params); $recent_orders = $stmt->fetchAll(); ?> Finanze - <?php echo htmlspecialchars($school['name']); ?>

Finanze

Ordini

Distribuzione Pagamenti
Andamento Ricavi
Top 5 Prodotti

Nessun dato
Tutti gli ordini del periodo
Data Ordine Cliente Prodotto Importo Metodo
#