<?php
require_once __DIR__ . '/../config/database.php';
require_once __DIR__ . '/../includes/helpers.php';

$pdo = getConnection();

try {
    $where = []; $params = [];

    if (!empty($_GET['producto_id'])) { $where[] = "vr.producto_id = ?"; $params[] = (int)$_GET['producto_id']; }
    if (!empty($_GET['fecha_desde'])) { $where[] = "DATE(vr.created_at) >= ?"; $params[] = $_GET['fecha_desde']; }
    if (!empty($_GET['fecha_hasta'])) { $where[] = "DATE(vr.created_at) <= ?"; $params[] = $_GET['fecha_hasta']; }
    if (!empty($_GET['sucursal_id'])) {
        $where[] = "v.sucursal_id = ?";
        $params[] = (int)$_GET['sucursal_id'];
    }
    if (!empty($_GET['search'])) {
        $s = '%' . $_GET['search'] . '%';
        $where[] = "(vr.nombre_paciente LIKE ? OR vr.nombre_medico LIKE ? OR p.NombreComercial LIKE ?)";
        $params[] = $s; $params[] = $s; $params[] = $s;
    }
    $wc = count($where) ? 'WHERE ' . implode(' AND ', $where) : '';

    $sql = "SELECT vr.id, vr.venta_id, vr.producto_id, p.NombreComercial as producto, p.CodigoInterno as codigo,
                   vr.nombre_medico, vr.colegiado, vr.nombre_paciente, vr.dpi_paciente,
                   vr.fue_omitida, vr.usuario_id, vr.created_at
            FROM ventas_recetas vr
            JOIN productos p ON p.id = vr.producto_id
            JOIN ventas v ON v.id = vr.venta_id
            $wc
            ORDER BY vr.created_at DESC LIMIT 500";
    $st = $pdo->prepare($sql); $st->execute($params);
    $dispensaciones = $st->fetchAll(PDO::FETCH_ASSOC);

    // Totals
    $sumSql = "SELECT COUNT(*) as total, COALESCE(SUM(vr.fue_omitida),0) as omitidas FROM ventas_recetas vr JOIN productos p ON p.id = vr.producto_id JOIN ventas v ON v.id = vr.venta_id $wc";
    $st2 = $pdo->prepare($sumSql); $st2->execute($params);
    $totales = $st2->fetch(PDO::FETCH_ASSOC);

    json_success([
        'dispensaciones' => $dispensaciones,
        'total' => (int)$totales['total'],
        'omitidas' => (int)$totales['omitidas']
    ]);
} catch (Exception $e) {
    json_error("Error: " . $e->getMessage());
}
