<?php
// 1. Limpieza de salida y configuración de errores
ob_start();
error_reporting(E_ALL); // Cambiamos temporalmente a E_ALL para ver errores si los hay
ini_set('display_errors', 1);

require('fpdf/fpdf.php');
require_once ("config/db.php");
require_once ("config/conexion.php");

/**
 * Clase parchada para compatibilidad con PHP 8.x
 */
class PDF_PHP8 extends FPDF {
    public $fonts = array();
    public $FontFiles = array();
    public $diffs = array();
    public $images = array();
    public $links = array();

    function __construct($orientation='P', $unit='mm', $size='A4') {
        parent::__construct($orientation, $unit, $size);
        $this->fonts = array();
        $this->FontFiles = array();
        $this->diffs = array();
        $this->images = array();
        $this->links = array();
    }

    function SetFont($family, $style='', $size=0) {
        if(strtolower($family)=='arial') $family='helvetica';
        parent::SetFont($family, $style, $size);
    }
}

// --- OBTENER TASA ACTUAL ---
$query_tasa = mysqli_query($con, "SELECT tasa FROM tasa WHERE id_tasa='1'");
$row_tasa = mysqli_fetch_array($query_tasa);
$tasa_actual = ($row_tasa) ? $row_tasa['tasa'] : 1;

// --- CAPTURAR FILTROS ---
$q = isset($_GET['q']) ? $_GET['q'] : '';
$est = isset($_GET['est']) ? $_GET['est'] : '';

// --- INICIALIZAR TOTALES ---
$costo_inventario = 0;
$venta_inventario = 0;
$num_articulos = 0;

// --- LÓGICA DE CONSULTA Y TÍTULO DINÁMICO ---
if(empty($est)) {
    $sql = "SELECT *, SUM(existencia) AS consolidado FROM products ";
    if(!empty($q)) {
        $q_safe = mysqli_real_escape_string($con, $q);
        $sql .= "WHERE (nombre_producto LIKE '%$q_safe%' OR codigo_producto LIKE '%$q_safe%') ";
    }
    $sql .= "GROUP BY nombre_producto ORDER BY tipo_producto ASC";
    $titulo_reporte = "INVENTARIO DE PRODUCTOS (CONSOLIDADO GENERAL)";
} else {
    $q_safe = mysqli_real_escape_string($con, $q);
    $est_safe = mysqli_real_escape_string($con, $est);
    
    // 1. Buscamos el nombre de la tienda con validación de error
    $res_tienda = mysqli_query($con, "SELECT nombre FROM tiendas WHERE id_tienda = '$est_safe'");
    
    // Si la consulta falló (por ejemplo, si la tabla 'tiendas' no existe o campos mal escritos)
    if ($res_tienda && mysqli_num_rows($res_tienda) > 0) {
        $reg_tienda = mysqli_fetch_array($res_tienda);
        $nombre_real_tienda = $reg_tienda['nombre'];
    } else {
        $nombre_real_tienda = "ID: " . $est;
    }

    // 2. Consulta para los productos
    $sql = "SELECT *, existencia AS consolidado FROM products WHERE almacen = '$est_safe' ";
    if(!empty($q)) {
        $sql .= "AND (nombre_producto LIKE '%$q_safe%' OR codigo_producto LIKE '%$q_safe%') ";
    }
    $sql .= "ORDER BY tipo_producto ASC";
    
    $titulo_reporte = "INVENTARIO DE PRODUCTOS - TIENDA: " . strtoupper($nombre_real_tienda);
}
// 3. Iniciar PDF
$pdf = new PDF_PHP8('L','mm','letter');
$pdf->AddPage();
$pdf->SetAutoPageBreak(true, 20);

// --- ENCABEZADO ---
if (file_exists('img/logotienda.jpeg')) {
    $pdf->Image('img/logotienda.jpeg', 5, 5, 270, 30, 'JPG');
}
$pdf->Ln(32);

// --- TÍTULOS ---
$pdf->SetFont('Arial', 'B', 14);
$pdf->Cell(0, 8, utf8_decode($titulo_reporte), 0, 1, 'C'); 
$pdf->SetFont('Arial', '', 10);
$pdf->Cell(0, 8, 'TASA: ' . number_format($tasa_actual, 2, ',', '.') . ' BsD | FECHA: '. date('d-m-Y'), 0, 1, 'C');
$pdf->Ln(5);

// --- CABECERA DE TABLA ---
$pdf->SetFillColor(230, 230, 230);
$pdf->SetFont('Arial', 'B', 8);
$pdf->Cell(25, 8, 'Tipo/Rubro', 1, 0, 'C', true);
$pdf->Cell(100, 8, 'Producto', 1, 0, 'C', true);
$pdf->Cell(20, 8, 'Existencia', 1, 0, 'C', true);
$pdf->Cell(45, 8, 'Costo ($ / BsD)', 1, 0, 'C', true);
$pdf->Cell(45, 8, 'Venta ($ / BsD)', 1, 0, 'C', true);
$pdf->Cell(25, 8, 'Actualizado', 1, 1, 'C', true);

// Ejecutar consulta
$query = mysqli_query($con, $sql);

// --- CUERPO DEL REPORTE ---
$pdf->SetFont('Arial', '', 8);
while($row = mysqli_fetch_array($query)){
    $consolidado = $row['consolidado'];
    $precio_costo = $row['precio_producto'];
    $precio_venta = $row['precio_venta'];
    
    $costo_inventario += ($precio_costo * $consolidado);
    $venta_inventario += ($precio_venta * $consolidado);
    $num_articulos += $consolidado;
    
    $costo_bs = number_format($precio_costo * $tasa_actual, 2, ',', '.');
    $venta_bs = number_format($precio_venta * $tasa_actual, 2, ',', '.');
    
    $pdf->Cell(25, 7, utf8_decode($row['tipo_producto']), 1, 0, 'L');
    $pdf->Cell(100, 7, utf8_decode(substr($row['nombre_producto'], 0, 55)), 1, 0, 'L');
    $pdf->Cell(20, 7, $consolidado, 1, 0, 'C');
    $pdf->Cell(45, 7, '$'.number_format($precio_costo,2).' / '.$costo_bs.'Bs', 1, 0, 'R');
    $pdf->Cell(45, 7, '$'.number_format($precio_venta,2).' / '.$venta_bs.'Bs', 1, 0, 'R');
    $pdf->Cell(25, 7, date('d/m/Y', strtotime($row['date_added'])), 1, 1, 'C');
}

// --- TOTALES ---
$pdf->Ln(5);
$pdf->SetFont('Arial', 'B', 9);
$utilidad = $venta_inventario - $costo_inventario;

$pdf->Cell(180, 6, 'COSTO TOTAL DEL INVENTARIO:', 0, 0, 'R');
$pdf->Cell(60, 6, '$' . number_format($costo_inventario, 2, ',', '.') . ' / ' . number_format($costo_inventario * $tasa_actual, 2, ',', '.') . ' BsD', 1, 1, 'R');

$pdf->Cell(180, 6, 'RECAUDACION ESTIMADA:', 0, 0, 'R');
$pdf->Cell(60, 6, '$' . number_format($venta_inventario, 2, ',', '.') . ' / ' . number_format($venta_inventario * $tasa_actual, 2, ',', '.') . ' BsD', 1, 1, 'R');

$pdf->Cell(180, 6, 'UTILIDAD ESTIMADA:', 0, 0, 'R');
$pdf->Cell(60, 6, '$' . number_format($utilidad, 2, ',', '.') . ' / ' . number_format($utilidad * $tasa_actual, 2, ',', '.') . ' BsD', 1, 1, 'R');

$pdf->Cell(180, 6, 'TOTAL ARTICULOS:', 0, 0, 'R');
$pdf->Cell(60, 6, $num_articulos, 1, 1, 'R');

// --- FIRMA ---
$pdf->Ln(15);
$pdf->SetFont('Arial', 'B', 9);
$pdf->Cell(0, 5, '__________________________________', 0, 1, 'C');
$pdf->Cell(0, 5, 'Gerencia', 0, 1, 'C');
$pdf->Cell(0, 5, utf8_decode('NIÑO BURGUER'), 0, 1, 'C');

// --- SALIDA FINAL CORREGIDA ---
ob_end_clean();
$pdf->Output('I', 'reporte_inventario.pdf'); // Eliminada la variable del nombre para evitar errores
exit;
?>