<?php
session_start();
error_reporting(0);
header('Content-Type: application/json');

require_once '../includes/config.php';
require_once '../includes/db.php';

try {
    if (!isset($_SESSION['usuario_id'])) {
        throw new Exception('No autorizado');
    }

    $cliente_id = isset($_GET['cliente_id']) ? (int)$_GET['cliente_id'] : 0;
    if ($cliente_id <= 0) {
        throw new Exception('ID de cliente no válido');
    }

    $db = new Database();
    
    // Obtener las ventas pendientes
    $stmt = $db->prepare("
        SELECT DISTINCT venta_id 
        FROM cuotas 
        WHERE cliente_id = ? AND estado = 'PENDIENTE'
        ORDER BY venta_id ASC
    ");
    $stmt->execute([$cliente_id]);
    $ventas = $stmt->fetchAll(PDO::FETCH_COLUMN);

    $cuotas_organizadas = [];

    foreach ($ventas as $venta_id) {
        // Obtener productos de la venta (incluyendo unificados)
        $stmt = $db->prepare("
            SELECT DISTINCT 
                CASE 
                    WHEN c.producto_id = 0 THEN 'unificada'
                    ELSE 'normal'
                END as tipo_cuota,
                CASE 
                    WHEN c.producto_id = 0 THEN c.observaciones
                    ELSE CAST(c.producto_id AS CHAR)
                END as productos_ids,
                c.producto_id,
                p.codigo as producto_codigo,
                p.titulo as producto_nombre,
                c.id,
                c.numero_cuota,
                c.monto,
                c.fecha_vencimiento,
                c.venta_id
            FROM cuotas c 
            LEFT JOIN productos p ON c.producto_id = p.id 
            WHERE c.venta_id = ? AND c.cliente_id = ? AND c.estado = 'PENDIENTE'
            ORDER BY c.fecha_vencimiento ASC, c.numero_cuota ASC
        ");
        $stmt->execute([$venta_id, $cliente_id]);
        $productos = $stmt->fetchAll(PDO::FETCH_ASSOC);

        foreach ($productos as $producto) {
            if ($producto['tipo_cuota'] === 'unificada') {
                // Procesar productos unificados
                $productos_info = array_map(function($item) {
                    return explode('/', trim($item));
                }, explode(',', $producto['productos_ids']));
                
                $ids_productos = array_column($productos_info, 0);
                $cantidades = array_combine(
                    $ids_productos,
                    array_column($productos_info, 1)
                );
                
                // Consultar nombres de productos
                $placeholders = str_repeat('?,', count($ids_productos) - 1) . '?';
                $stmt = $db->prepare("
                    SELECT id, titulo, codigo
                    FROM productos 
                    WHERE id IN ($placeholders)
                ");
                $stmt->execute($ids_productos);
                $productos_detalles = $stmt->fetchAll(PDO::FETCH_ASSOC);
                
                $nombres_con_cantidades = [];
                $codigos = [];
                
                foreach ($productos_detalles as $prod) {
                    $cantidad = $cantidades[$prod['id']];
                    $nombres_con_cantidades[] = $prod['titulo'] . ' (x' . $cantidad . ')';
                    $codigos[] = $prod['codigo'];
                }
                
                $producto['producto_nombre'] = implode(' + ', $nombres_con_cantidades);
                $producto['producto_codigo'] = implode(', ', $codigos);
            }

            $cuotas_organizadas[] = [
                'id' => $producto['id'],
                'venta_id' => $producto['venta_id'],
                'producto_id' => $producto['producto_id'],
                'producto_codigo' => $producto['producto_codigo'],
                'producto_nombre' => $producto['producto_nombre'],
                'numero_cuota' => $producto['numero_cuota'],
                'monto' => $producto['monto'],
                'fecha_vencimiento' => $producto['fecha_vencimiento']
            ];
        }
    }

    echo json_encode([
        'success' => true,
        'data' => $cuotas_organizadas
    ]);

} catch (Exception $e) {
    echo json_encode([
        'success' => false,
        'message' => $e->getMessage()
    ]);
}