12) { $month = 1; $year++; } elseif ($month < 1) { $month = 12; $year--; } $liquidacion_id = (int)($year . str_pad($month, 2, '0', STR_PAD_LEFT)); // Get city and sales data $db = db(); $cities_stmt = $db->query("SELECT id, nombre FROM ciudades ORDER BY orden ASC"); $cities = $cities_stmt->fetchAll(PDO::FETCH_ASSOC); // Get payment statuses for each city and day $estados_stmt = $db->prepare("SELECT ciudad_id, fecha, estado FROM liquidaciones_ciudades_estados WHERE liquidacion_id = :liquidacion_id"); $estados_stmt->execute(['liquidacion_id' => $liquidacion_id]); $estados_raw = $estados_stmt->fetchAll(PDO::FETCH_ASSOC); $estados = []; foreach ($estados_raw as $row) { $estados[$row['ciudad_id']][$row['fecha']] = $row['estado']; } $sales_stmt = $db->prepare(" SELECT DAY(m.fecha) as dia, m.ciudad_origen_id, SUM(m.precio_liquidacion) as monto_total FROM movimientos m WHERE m.tipo = 'Salida' AND MONTH(m.fecha) = :month AND YEAR(m.fecha) = :year GROUP BY DAY(m.fecha), m.ciudad_origen_id "); $sales_stmt->execute(['month' => $month, 'year' => $year]); $sales_data = $sales_stmt->fetchAll(PDO::FETCH_ASSOC); // Organize sales data in a structured way: [day][city_id] => amount $sales_by_day_city = []; foreach ($sales_data as $sale) { $sales_by_day_city[$sale['dia']][$sale['ciudad_origen_id']] = $sale['monto_total']; } $days_in_month = cal_days_in_month(CAL_GREGORIAN, $month, $year); $month_name = DateTime::createFromFormat('!m', $month)->format('F'); ?>

Validaciones De Pagos

Resumen de Ventas por Ciudad
Día Total Diario
Recaudo Estado
0 ? number_format($amount, 2) : '-'; ?>
Total por Ciudad