<?php
$host = 'localhost';
$database = 'C:\Program Files (x86)\Common Files\Aspel\Sistemas Aspel\SAE7.00\Ejemplos\Ejemplos.fdb';
$username = 'SYSDBA';
$password = 'masterkey';

$filtro = isset($_GET['filtro']) ? $_GET['filtro'] : '';
$almacen = isset($_GET['almacen']) ? $_GET['almacen'] : '';
$existencia = isset($_GET['existencia']) ? $_GET['existencia'] : '';

try {
    $dbh = new PDO("firebird:host=$host;dbname=$database;charset=UTF8", $username, $password);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "SELECT 
                I.CVE_ART, 
                I.DESCR, 
                I.UNI_MED, 
                I.STOCK_MIN, 
                I.STOCK_MAX, 
                M.EXIST, 
                I.LIN_PROD, 
                MAX(P.PRECIO) AS PRECIO,
                A.DESCR AS ALMACEN_DESC
            FROM INVE01 I
            LEFT JOIN PRECIO_X_PROD01 P ON I.CVE_ART = P.CVE_ART
            LEFT JOIN MULT01 M ON I.CVE_ART = M.CVE_ART
            LEFT JOIN ALMACENES01 A ON M.CVE_ALM = A.CVE_ALM
            WHERE I.CVE_ART IS NOT NULL";

    // Aplica filtro de tipo (producto/servicio/etc)
    if (!empty($filtro)) {
        $sql .= " AND I.TIPO_ELE = :filtro";
    }

    // Aplica filtro de almacén si se selecciona
    if (!empty($almacen)) {
        $sql .= " AND M.CVE_ALM = :almacen";
    }

    switch ($existencia) {
        case 'con_existencias':
            $sql .= " AND M.EXIST > 0 AND M.EXIST >= I.STOCK_MIN AND M.EXIST <= I.STOCK_MAX";
            break;
        case 'sin_existencias':
            $sql .= " AND M.EXIST = 0";
            break;
        case 'pocas_existencias':
            $sql .= " AND M.EXIST > 0 AND M.EXIST < I.STOCK_MIN";
            break;
        case 'demasiadas_existencias':
            $sql .= " AND M.EXIST > I.STOCK_MAX";
            break;
    }


    $sql .= " GROUP BY I.CVE_ART, I.DESCR, I.UNI_MED, I.STOCK_MIN, I.STOCK_MAX, M.EXIST, I.LIN_PROD, A.DESCR";

    $stmt = $dbh->prepare($sql);

    if (!empty($filtro)) {
        $stmt->bindParam(':filtro', $filtro, PDO::PARAM_STR);
    }
    if (!empty($almacen)) {
        $stmt->bindParam(':almacen', $almacen, PDO::PARAM_STR);
    }

    $stmt->execute();

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $exist = $row['EXIST'];
        $stockMin = $row['STOCK_MIN'];
        $stockMax = $row['STOCK_MAX'];

        if ($exist == 0) {
            $estadoHTML = "<span class='badge bg-label-warning'>Sin Existencias</span>";
        } elseif ($exist < $stockMin) {
            $estadoHTML = "<span class='badge bg-label-danger'>Pocas Existencias</span>";
        } elseif ($exist > $stockMax) {
            $estadoHTML = "<span class='badge bg-label-secondary'>Demasiadas Existencias</span>";
        } else {
            $estadoHTML = "<span class='badge bg-label-success'>Con Existencias</span>";
        }


        $precio = isset($row['PRECIO']) ? number_format($row['PRECIO'], 2) : 'No disponible';

        echo "<tr>
            <td>
                <a href='#'
                    data-toggle='modal'
                    data-image='/imagenes-productos/" . htmlspecialchars($row['CVE_ART']) . ".jpg'
                    data-cve_art='" . htmlspecialchars($row['CVE_ART']) . "'
                    data-descripcion='" . htmlspecialchars($row['DESCR']) . "'
                    data-linea='" . htmlspecialchars($row['LIN_PROD']) . "'
                    data-existencias='" . htmlspecialchars($exist) . "'
                    data-stock-min='" . htmlspecialchars($stockMin) . "'
                    data-stock-max='" . htmlspecialchars($stockMax) . "'>
                    <img src='/imagenes-productos/" . htmlspecialchars($row['CVE_ART']) . ".jpg' alt='Imagen' style='width: 50px; height: 50px; cursor: pointer;'>
                </a>
            </td>
            <td>
                <strong>" . htmlspecialchars($row['CVE_ART']) .  "</strong> <br>
                <small><strong>Unidad:</strong></small> " . htmlspecialchars($row['UNI_MED']) . " 
                <small><strong>| Linea:</strong></small> " . htmlspecialchars($row['LIN_PROD']) . "
            </td>
            <td>" . htmlspecialchars($row['DESCR']) . "</td>
            <td>$" . $precio . "</td>
            <td>" . htmlspecialchars($row['ALMACEN_DESC']) . "</td>
            <td class='num'>" . htmlspecialchars($exist) . "</td>
<td>{$estadoHTML}</td>

        </tr>";
    }
} catch (PDOException $e) {
    echo "<tr><td colspan='11'>Error: " . htmlspecialchars($e->getMessage()) . "</td></tr>";
}
