<?php
error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING); // Esto oculta los avisos y deja pasar el Excel
require_once ("config/db.php");
require_once ("config/conexion.php");

// 1. CARGAR LA NUEVA LIBRERÍA
require_once __DIR__ . '/lib/phpspreadsheet_nueva/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\Border;

// --- CAPTURAR FILTROS (Igual a tu lógica original) ---
$q = isset($_GET['q']) ? $_GET['q'] : '';
$est = isset($_GET['est']) ? $_GET['est'] : '';
$rubro = isset($_GET['rubro']) ? $_GET['rubro'] : '';
$presentacion = isset($_GET['presentacion']) ? $_GET['presentacion'] : '';

$where = " WHERE 1=1 ";
if (!empty($q)) {
    $q_safe = mysqli_real_escape_string($con, $q);
    $where .= " AND (nombre_producto LIKE '%$q_safe%' OR codigo_producto LIKE '%$q_safe%') ";
}
if (!empty($rubro)) {
    $rubro_safe = mysqli_real_escape_string($con, $rubro);
    $where .= " AND tipo_producto = '$rubro_safe' ";
}
if (!empty($presentacion)) {
    $pres_safe = mysqli_real_escape_string($con, $presentacion);
    $where .= " AND status_producto = '$pres_safe' ";
}

if (empty($est)) {
    $sql = "SELECT *, SUM(existencia) AS consolidado FROM products $where GROUP BY nombre_producto ORDER BY tipo_producto ASC";
    $tituloReporte = "INVENTARIO DE PRODUCTOS (CONSOLIDADO GENERAL)";
} else {
    // POR TIENDA ESPECÍFICA
    $est_safe = mysqli_real_escape_string($con, $est);
    
    // Corregimos la columna a id_tienda
    $res_tienda = mysqli_query($con, "SELECT nombre FROM tiendas WHERE id_tienda = '$est_safe'");
    
    if ($res_tienda && mysqli_num_rows($res_tienda) > 0) {
        $reg_tienda = mysqli_fetch_array($res_tienda);
        $nombre_tienda = $reg_tienda['nombre'];
    } else {
        // Por si acaso el ID no existe, usamos el valor que viene por GET
        $nombre_tienda = "TIENDA " . $est_safe;
    }
    
    // Asegúrate de que en la tabla 'products' la columna sea 'almacen' o 'id_tienda'
    // Si en 'products' también se llama id_tienda, cambia almacen='$est_safe' por id_tienda='$est_safe'
    $sql = "SELECT *, existencia AS consolidado FROM products $where AND almacen='$est_safe' ORDER BY tipo_producto ASC";
    $tituloReporte = "INVENTARIO EN LA TIENDA: " . strtoupper($nombre_tienda);
}

$consulta = mysqli_query($con, $sql);

// --- CREAR EL EXCEL ---
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

// Propiedades del documento
$spreadsheet->getProperties()->setCreator("Invalteca")
                             ->setTitle("Reporte Inventario");

$titulosColumnas = array('ITEM', 'CÓDIGO', 'TIPO/RUBRO', 'PRODUCTO', 'PRESENTACIÓN', 'ACTUALIZADO', 'EXISTENCIA', 'PRECIO COSTO', 'PRECIO VENTA');

// Título principal
$sheet->mergeCells('A1:I1');
$sheet->setCellValue('A1', $tituloReporte);

// Encabezados de columna
$sheet->setCellValue('A3', $titulosColumnas[0])
      ->setCellValue('B3', $titulosColumnas[1])
      ->setCellValue('C3', $titulosColumnas[2])
      ->setCellValue('D3', $titulosColumnas[3])
      ->setCellValue('E3', $titulosColumnas[4])
      ->setCellValue('F3', $titulosColumnas[5])
      ->setCellValue('G3', $titulosColumnas[6])
      ->setCellValue('H3', $titulosColumnas[7])
      ->setCellValue('I3', $titulosColumnas[8]);

// --- LLENADO DE DATOS ---
$i = 4;
$item = 1;
while ($dato = mysqli_fetch_array($consulta)) {
    $sheet->setCellValue('A'.$i, $item)
          ->setCellValue('B'.$i, $dato['codigo_producto'])
          ->setCellValue('C'.$i, $dato['tipo_producto'])
          ->setCellValue('D'.$i, $dato['nombre_producto'])
          ->setCellValue('E'.$i, $dato['status_producto'])
          ->setCellValue('F'.$i, date('d/m/Y', strtotime($dato['date_added'])))
          ->setCellValue('G'.$i, $dato['consolidado'])
          ->setCellValue('H'.$i, $dato['precio_producto'])
          ->setCellValue('I'.$i, $dato['precio_venta']);
    
    // Formato numérico
    $sheet->getStyle('G'.$i)->getNumberFormat()->setFormatCode('#,##0');
    $sheet->getStyle('H'.$i.':I'.$i)->getNumberFormat()->setFormatCode('$#,##0.00');

    $i++;
    $item++;
}

// --- ESTILOS ---
$estiloTituloReporte = array(
    'font' => array('name' => 'Arial', 'bold' => true, 'size' => 14, 'color' => array('rgb' => 'FFFFFF')),
    'fill' => array('fillType' => Fill::FILL_SOLID, 'startColor' => array('rgb' => 'D32F2F')),
    'alignment' => array('horizontal' => Alignment::HORIZONTAL_CENTER)
);

$estiloTituloColumnas = array(
    'font' => array('name' => 'Arial', 'bold' => true, 'color' => array('rgb' => 'FFFFFF')),
    'fill' => array('fillType' => Fill::FILL_SOLID, 'startColor' => array('rgb' => '424242')),
    'alignment' => array('horizontal' => Alignment::HORIZONTAL_CENTER),
    'borders' => array('allBorders' => array('borderStyle' => Border::BORDER_THIN))
);

$sheet->getStyle('A1:I1')->applyFromArray($estiloTituloReporte);
$sheet->getStyle('A3:I3')->applyFromArray($estiloTituloColumnas);

// Auto-ajustar columnas
foreach (range('A', 'I') as $columnID) {
    $sheet->getColumnDimension($columnID)->setAutoSize(true);
}

$sheet->setTitle('Inventario');

// --- SALIDA AL NAVEGADOR ---
// Limpiamos el buffer de salida para evitar que basura o espacios en blanco dañen el archivo
if (ob_get_contents()) ob_end_clean();

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Inventario_'.date('d_m_Y').'.xlsx"');
header('Cache-Control: max-age=0');
header('Expires: Fri, 11 Nov 2011 11:11:11 GMT'); // Fecha pasada para evitar cache
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Pragma: public');

$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
exit;