<?php
// ? Errores (quitar en produccion)
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// ? CORS y Headers
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Content-Type");
header("Access-Control-Allow-Methods: POST, OPTIONS");
header("Content-Type: application/json; charset=utf-8");

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(200); exit; }

// ? Conexion
require_once(__DIR__ . '/../config.php');
 $mysqli->set_charset("utf8mb4");

// ? JSON
 $input = json_decode(file_get_contents('php://input'), true);
if (!$input) { 
    echo json_encode(['success'=>false,'message'=>'JSON invalido']); 
    exit; 
}

// --- VALIDACION DE PARAMETROS ---
 $slug_tienda = isset($input['slug_tienda']) ? trim($input['slug_tienda']) : '';
if ($slug_tienda === '') {
    echo json_encode(['success'=>false,'message'=>'El slug de la tienda es requerido.']);
    exit;
}

// --- CONSTRUCCIÓN DINÁMICA DE LA CONSULTA ---
 $busqueda = isset($input['busqueda']) ? trim($input['busqueda']) : '';
 $fecha_inicio = isset($input['fechaInicio']) ? trim($input['fechaInicio']) : null;
 $fecha_fin = isset($input['fechaFin']) ? trim($input['fechaFin']) : null;

 $sql = "
    SELECT 
        nc.id, nc.numero_nota_credito, nc.fecha, nc.motivo, nc.total, nc.estado,
        f.numero_factura, f.cliente_nombre
    FROM notas_credito nc
    JOIN facturas f ON nc.factura_id_relacionada = f.id
    WHERE nc.slug_tienda = ?
";

 $params = [$slug_tienda];
 $types = 's';

if (!empty($busqueda)) {
    $sql .= " AND (f.numero_factura LIKE ? OR f.cliente_nombre LIKE ?)";
    $searchTerm = '%' . $busqueda . '%';
    $params[] = $searchTerm;
    $params[] = $searchTerm;
    $types .= 'ss';
}

if (!empty($fecha_inicio)) {
    $sql .= " AND DATE(nc.fecha) >= ?";
    $params[] = $fecha_inicio;
    $types .= 's';
}

if (!empty($fecha_fin)) {
    $sql .= " AND DATE(nc.fecha) <= ?";
    $params[] = $fecha_fin;
    $types .= 's';
}

 $sql .= " ORDER BY nc.fecha DESC";

try {
    $stmt = $mysqli->prepare($sql);
    if (!$stmt) throw new Exception("Error al preparar la consulta: " . $mysqli->error);
    if (!empty($params)) {
        $stmt->bind_param($types, ...$params);
    }
    if (!$stmt->execute()) throw new Exception("Error al ejecutar la consulta: " . $stmt->error);
    
    $result = $stmt->get_result();
    $notas = $result->fetch_all(MYSQLI_ASSOC);
    $stmt->close();
    
    echo json_encode(['success' => true, 'notas' => $notas]);
    
} catch (Exception $e) {
    http_response_code(500);
    echo json_encode(['success'=>false,'message'=>$e->getMessage()]);
} finally {
    if (isset($mysqli) && $mysqli) { $mysqli->close(); }
}
?>