<?php
/**
 * GET /api/inventario/alertas/vencimientos.php
 */
require_once '../../config/database.php';
require_once '../../includes/helpers.php';

$pdo = getConnection();

$meses = isset($_GET['meses']) ? (int)$_GET['meses'] : 6;

try {
    // Buscar en compras_detalle donde fecha_vencimiento esté dentro de X meses y el producto tenga stock
    // Para ser precisos, idealmente sería por lote, pero esto da una buena aproximación.
    $sql = "
        SELECT 
            p.CodigoInterno, p.NombreComercial, 
            cd.fecha_vencimiento, 
            DATEDIFF(cd.fecha_vencimiento, CURDATE()) as dias_restantes,
            cd.cantidad_unidades_base,
            c.fecha_compra,
            l.nombre as proveedor
        FROM compras_detalle cd
        JOIN compras c ON cd.compra_id = c.id
        JOIN productos p ON cd.producto_id = p.id
        JOIN lugarcompra l ON c.id_lugarCompra = l.id
        WHERE cd.fecha_vencimiento IS NOT NULL 
          AND cd.fecha_vencimiento <= DATE_ADD(CURDATE(), INTERVAL ? MONTH)
          AND cd.fecha_vencimiento >= CURDATE()
        ORDER BY cd.fecha_vencimiento ASC
    ";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$meses]);
    $vencimientos = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    // Vencidos ya
    $sqlVencidos = "
        SELECT 
            p.CodigoInterno, p.NombreComercial, 
            cd.fecha_vencimiento, 
            DATEDIFF(CURDATE(), cd.fecha_vencimiento) as dias_vencido,
            cd.cantidad_unidades_base
        FROM compras_detalle cd
        JOIN productos p ON cd.producto_id = p.id
        WHERE cd.fecha_vencimiento IS NOT NULL 
          AND cd.fecha_vencimiento < CURDATE()
        ORDER BY cd.fecha_vencimiento DESC
    ";
    $stmtV = $pdo->query($sqlVencidos);
    $vencidos = $stmtV->fetchAll(PDO::FETCH_ASSOC);

    json_success([
        'proximos' => $vencimientos,
        'vencidos' => $vencidos
    ]);

} catch (Exception $e) {
    json_error('Error: ' . $e->getMessage());
}
?>
