<?php
session_start();
require_once ("../conexion.php");
require_once('../include/sesiones.php'); 

$action = (isset($_REQUEST['action'])&& $_REQUEST['action'] !=NULL)?$_REQUEST['action']:'';

if($action == 'ajax')
{
    // 1. Sanitización de datos de entrada
    $ubicacion = mysqli_real_escape_string($con,(strip_tags($_REQUEST['ubicacion'], ENT_QUOTES)));
    $proveedor = mysqli_real_escape_string($con,(strip_tags($_REQUEST['proveedor'], ENT_QUOTES)));
    $familia = mysqli_real_escape_string($con,(strip_tags($_REQUEST['familia'], ENT_QUOTES)));
    $q = mysqli_real_escape_string($con,(strip_tags($_REQUEST['q'], ENT_QUOTES)));
    $estado = mysqli_real_escape_string($con,(strip_tags($_REQUEST['estado'], ENT_QUOTES)));
    $buscar = mb_strtoupper($q);
    
    include '../include/pagination.php';
    $page = (isset($_REQUEST['page']) && !empty($_REQUEST['page']))?$_REQUEST['page']:1;
    $per_page = $conf_pagi_articulos; 
    $adjacents  = 4; 
    $offset = ($page - 1) * $per_page;

    // 2. Ordenamiento
    $ordenes = [
    'art_cantidad'   => 'b.art_cantidad desc',
    'art_referencia' => 'a.art_referencia asc',
    'art_nombre'     => 'a.art_nombre asc',
    ];

    $ordenar = $ordenes[$organizar_articulos] ?? 'b.art_cantidad desc'; 

    // 3. Filtros Base
    $where = "a.empresa='$empresa' AND a.art_tipo='articulo' AND a.art_estado LIKE '$estado'";

    if (!empty($ubicacion)) {
        $where .= " AND a.ubicacion_ubi_id='$ubicacion'";
    }
    if (!empty($proveedor)) {
        $where .= " AND a.proveedor_pro_id='$proveedor'";
    }
    if (!empty($familia)) {
        $where .= " AND a.familias_fam_id='$familia'";
    }

    // 4. OPTIMIZACIÓN DE BÚSQUEDA INTELIGENT
    // Si busca solo números, asumimos código de barras/referencia y quitamos el % inicial para usar índices
    if (ctype_digit($q) && !empty($q)) {
        $where .= " AND (a.art_barras LIKE '$q%' OR a.art_referencia LIKE '$q%')";
    } else {
        // Si es texto, mantenemos búsqueda amplia en nombre, pero optimizamos referencia
        $where .= " AND (a.art_referencia LIKE '$q%' OR a.art_nombre LIKE '%$q%' OR a.art_barras LIKE '%$q%' OR a.art_referencia2 LIKE '%$q%')";
    }

    // 5. Query de Conteo (Paginación)
    $count_query = mysqli_query($con, "SELECT COUNT(*) AS numrows FROM articulos a WHERE $where");
    $row = mysqli_fetch_array($count_query);
    $numrows = $row['numrows'];
    $total_pages = ceil($numrows / $per_page);
    $reload = '../I_articulos.php';

    // 6. OPTIMIZACIÓN DE PERMISOS (Consultar 1 vez, no 100 veces)
    $permiso_modificar = false;
    $permiso_eliminar = false;

    // Permiso Modificar
    $per_mod = mysqli_query($con,"SELECT estado FROM modulo_permiso WHERE usuario='$usu_id' AND mod_id='5' AND modp_nombre='Modificar Articulo'");
    if($r_mod = mysqli_fetch_array($per_mod)){ if($r_mod['estado']=='Activo') $permiso_modificar = true; }

    // Permiso Eliminar
    $per_eli = mysqli_query($con,"SELECT estado FROM modulo_permiso WHERE usuario='$usu_id' AND mod_id='5' AND modp_nombre='Eliminar Articulo'");
    if($r_eli = mysqli_fetch_array($per_eli)){ if($r_eli['estado']=='Activo') $permiso_eliminar = true; }


    // 7. Query Principal con LEFT JOIN para traer Ubicación (Evita consultar ubicación en cada fila)
    $sql = mysqli_query($con, "SELECT a.*, b.art_id AS art_idd, SUM(b.art_cantidad) AS art_cantidad, u.ubi_nombre 
        FROM articulos a 
        JOIN articulos_has_bodegas b ON a.art_id = b.articulos_art_id 
        LEFT JOIN ubicacion u ON a.ubicacion_ubi_id = u.ubi_id 
        WHERE $where AND b.sucursal='$sucursal'
        GROUP BY a.art_id 
        ORDER BY $ordenar, a.art_nombre ASC 
        LIMIT $offset, $per_page");

}

if ($numrows>0) { ?>
    <div class="table-responsive">
        <table class="table table-bordered table-hover table-striped" style="font-size: 9pt;">
            <tr>
                <th width="8%">CODIGO</th>
                <th width="8%">REFERENCIA</th>
                <th>NOMBRE</th>
                <?php if($tienda_online=='si') { ?>
                <th width="4%">ONLINE</th>
                <?php } ?>
                <th width="10%">STOCK</th>
                <th width="8%">PRECIO</th>
                <?php if ($negocio_neg_id==3) { ?>
                <th width="10%">UBICACIÓN</th>
                <?php } ?>
                <th width="15%"></th>
            </tr>
        <?php
        while ($reg=mysqli_fetch_array($sql)){
                $art_id=$reg['art_id'];
                $id=$reg['art_id'];
                $art_idd=$reg['art_idd'];
                $art_referencia=$reg['art_referencia'];
                $art_nombre=$reg['art_nombre'];
                $art_escaso=$reg['art_escaso'];
                $art_cantidad=$reg['art_cantidad'];
                // La ubicación ya viene en la consulta principal
                $ubi_nombre_row = $reg['ubi_nombre']; 

                // Pre-formateo de textos para resaltar búsqueda
                $txt_codigo = ($reg['art_referencia'] <> null) ? $reg['art_referencia'] : $reg['art_barras'];
                $display_codigo = mb_strtoupper(str_replace($buscar, "<strong><span style='color: ".$resaltador."'>".$buscar."</span></strong>", $txt_codigo));
                $display_ref2 = mb_strtoupper(str_replace($buscar, "<strong><span style='color:".$resaltador."'>".$buscar."</span></strong>", $reg['art_referencia2']));
                $display_nombre = mb_strtoupper(str_replace($buscar, "<strong><span style='color:".$resaltador."'>".$buscar."</span></strong>", $reg['art_nombre']));
        ?>
            <tr>
            <td><?php echo $display_codigo; ?></td>
            <td><?php echo $display_ref2; ?></td>
            <td>
                <div class="contenedor">
                    <?php
                        // 8. OPTIMIZACIÓN DE IMAGENES (file_exists es mas rapido que glob)
                        $ruta_img = "../img/articulos/$art_id.jpg";
                        if(file_exists($ruta_img)) 
                        { 
                            $nu=rand(1,1000); 
                        ?>
                            <a href="img/articulos/<?php echo $art_id.'.jpg?' .$nu; ?>" class="ui-lightbox">
                              <img style="height: 40px; width: 40px" class="categorias" src="img/articulos/<?php echo $art_id.'.jpg?' .$nu; ?>" alt=""/>
                            </a>
                    <?php } else { ?>
                            <a href="img/articulos/sin_imagen.jpg" class="ui-lightbox">
                            <img style="height: 40px; width: 40px" class="categorias" src="img/articulos/sin_imagen.jpg" alt=""/>
                            </a>
                    <?php } 
                        echo $display_nombre;
                    ?> 
                </div>  
            </td>
            
            <?php if($tienda_online=='si') { ?>
            <td>
            <?php
                if($reg['art_online']=="Activo") {
                     echo '<a href="#" onclick="online('.$reg['art_id'].')"> <span class="badgeazul" title="Inactivo"> <i class="btn-icon-only icon-off"></i></span></a>';
                } else {
                     echo '<a href="#" onclick="online('.$reg['art_id'].')"> <span class="badgerojo" title="Activo"> <i class="btn-icon-only icon-off"></i></span></a>';
                }
            ?>
            </td>
            <?php } ?>

            <td>
                <span class="" style="color:black;"><?php echo $suc_nombre; ?> : <?php echo number_format($art_cantidad,0); ?> </span>
                </br>
                <?php
                    // Consulta de otras sucursales (Se mantiene igual por lógica de negocio compleja)
                    $sucursales = mysqli_query($con, "
                    SELECT s.suc_id, s.empresa, s.suc_nombre, a.art_id
                    FROM sucursal s
                    INNER JOIN articulos a ON a.art_referencia = '$art_referencia' AND a.empresa = s.empresa
                    WHERE s.empresa <> '$empresa' 
                      AND s.suc_id <> '$sucursal' 
                      AND s.suc_estado = 'activo' 
                      AND s.suc_nombre NOT IN ('vicpos', 'sg')
                    ");
                
                    while ($row88 = mysqli_fetch_array($sucursales)) {
                        $suc_id = $row88['suc_id'];
                        $suc_empresa = $row88['empresa'];
                        $sucursal_nombre = $row88['suc_nombre'];
                        $art_id_e = $row88['art_id'];
                    
                        $res_bodega = mysqli_query($con, "SELECT art_cantidad FROM articulos_has_bodegas WHERE articulos_art_id = '$art_id_e' 
                              AND empresa = '$suc_empresa' AND sucursal = '$suc_id'");
                        
                        if ($bodega = mysqli_fetch_array($res_bodega)) {
                            $cantidad = $bodega['art_cantidad'] + 0;
                            echo "<span style='color:#a2a0a2;'>$sucursal_nombre : " . number_format($cantidad, 0) . "</span><br>";
                        }
                    }
                ?>
            </td>

            <td><p class="pull-right"><?php echo number_format($reg['art_pvp'],0);?></p></td>
            
            <?php if ($negocio_neg_id==3){?>
            <td ><p class="pull-center">
                <?php 
                    // Usamos dato del JOIN, sin consulta extra
                    if($ubi_nombre_row <> null && $ubi_nombre_row <> 'SIN UBICACION') {
                        echo $ubi_nombre_row;
                    }   
                ?>
            </p></td>
            <?php } ?>

            <td>
                <a data-id="<?php echo $art_id;?>" class="btn btn-edit btn-xs btn-warning"  title="Tarifas de Precio"> <i class="btn-icon-only icon-usd"></i></a>

                 <?php 
                // Usamos variable booleana pre-calculada
                if ($permiso_modificar) { ?>
                    <a data-id="<?php echo $id;?>" title="Editar Articulo" class="btn-art btn btn-xs btn-info"> <i class="btn-icon-only icon-edit"></i></a>
                <?php } ?> 

                <?php  
                // Usamos variable booleana pre-calculada
                if ($permiso_eliminar) { ?>
                    <a onclick="eliminar('<?php echo $art_id;?>')" title="Eliminar" class="btn btn-xs btn-danger"><i class="btn-icon-only icon-remove"></i></a>
                <?php } ?>

                <?php if ($negocio_neg_id==1){?>
                <a data-id="<?php echo $id;?>" class="btn btn-ser btn-xs btn-default" title="Serial"> <i class="btn-icon-only icon-barcode"></i></a>
                <?php  } ?>
            
            </td>
        </tr>
        <?php } ?>
        <tr>
        <?php if ($negocio_neg_id==3 ){ $col=8; } else { $col=7; } if($tienda_online=='si'){$onl=1;}else{$onl=0;} ?>
            <td colspan="<?php echo $col+$onl+1;?>">
                <span class="pull-right">
                    <?php echo paginate($reload, $page, $total_pages, $adjacents); ?>
                </span>
                <input type="hidden" name="pagina" id="pagina" value="<?php echo $page; ?>">
            </td>
        </tr>
    </table>
</div>
    <?php
    }
?>
<script>
$(".btn-art").click(function(){
    id = $(this).data("id");
    var pagina=$("#pagina").val();
    $.get("php_articulo/form_modificar_articulo.php","id="+id+"&pagina="+pagina,function(data){
        $("#form-art").html(data);
    });
    $('#modificar_articulo').modal('show');
});

$(".btn-edit").click(function(){
      id = $(this).data("id");
      $.get("./php_articulo/form_tarifas_precio.php","id="+id,function(data){
        $("#form-edit").html(data);
      });
      $('#editModal').modal('show');
    });

    $(".btn-det").click(function(){
      id = $(this).data("id");
      $.get("./php_articulo/form_detallar.php","id="+id,function(data){
        $("#form-det").html(data);
      });
      $('#detallar').modal('show');
    }); 

    $(".btn-ser").click(function(){
      id = $(this).data("id");
      $.get("./php_articulo/form_seriales.php","id="+id,function(data){
        $("#form-ser").html(data);
      });
      $('#serModal').modal('show');
    });
</script>


<div class="modal fade" id="detallar" tabindex="-1" role="dialog" >
    <div class="modal-dialog">
        <div class="modal-content">
            <div id="form-det"></div>
        </div>
    </div>
</div>

<div class="modal fade" id="serModal" tabindex="-1" role="dialog" aria-labelledby="editModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title">Eliminar Seriales</h4>
            </div>
            <div class="modal-body">
                <div id="form-ser"></div>
            </div>
        </div>
    </div>
</div>

<div class="modal fade" id="modal_serial_nuevo" tabindex="-1" role="dialog" aria-labelledby="editModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title">AGREGAR SERIALES</h4>
            </div>
            <div class="modal-body">
                <div id="form-serial_nuevo"></div>
            </div>
        </div>
    </div>
</div>