<?php

include 'is_logged.php'; //Archivo verifica que el usario que intenta acceder a la URL esta logueado

/* Connect To Database*/
require_once "../db.php";
require_once "../php_conexion.php";
//Archivo de funciones PHP
require_once "../funciones.php";

$session_id = session_id();
$sucursal_users = $_SESSION['sucursal_users'];
$id_factura = $_SESSION['id_factura'];

// Verificar si la cotización ya está facturada (SOLO para controlar botones)
$print_img = 0;
if (isset($id_factura) && !empty($id_factura)) {
    $sql_check = mysqli_query($conexion, "SELECT print_img FROM facturas_cot WHERE id_factura = '$id_factura'");
    if ($row_check = mysqli_fetch_array($sql_check)) {
        $print_img = $row_check['print_img'];
    }
}

$puede_modificar = ($print_img == 0);

// Obtener id_comp ANTES de cualquier acción para que siempre esté disponible
$id_comp = 0; // Valor por defecto
$sql_comp = mysqli_query($conexion, "SELECT id_comp_factura FROM facturas_ventas WHERE id_factura = '$id_factura' LIMIT 1");
if ($row_comp = mysqli_fetch_array($sql_comp)) {
    $id_comp = $row_comp['id_comp_factura'];
}

// LOS PRODUCTOS SIEMPRE SE PUEDEN AGREGAR/ELIMINAR SI LA COTIZACIÓN ESTÁ PENDIENTE
// Solo condicionamos las acciones de modificación, no la visualización
$id = isset($_POST['id']) ? $_POST['id'] : '';
$cantidad = isset($_POST['cantidad']) ? $_POST['cantidad'] : '';

// SIEMPRE procesamos la adición de productos si hay datos (independiente de print_img)
if (!empty($id) and !empty($cantidad)) {
    // Pero verificamos si realmente se puede modificar
    if ($puede_modificar) {
        $id_producto    = get_row('productos', 'id_producto', 'codigo_producto', $id);
        $numero_factura = get_row('facturas_cot', 'numero_factura', 'id_factura', $id_factura);
        $precio_venta   = get_row('productos', 'valor1_producto', 'id_producto', $id_producto);

        // consulta para comparar el stock con la cantidad resibida
        $query = mysqli_query($conexion, "select stock_producto, inv_producto from productos where id_producto = '$id_producto' and sucursal_id='" . $sucursal_users . "'");
        $rw    = mysqli_fetch_array($query);
        $stock = $rw['stock_producto'];
        $inv   = $rw['inv_producto'];

        //Comprobamos si ya agregamos un producto a la tabla tmp_compra
        $comprobar = mysqli_query($conexion, "select * from detalle_fact_cot where id_producto='" . $id_producto . "' and id_factura='" . $id_factura . "' and sucursal_id='" . $sucursal_users . "'");

        if ($row = mysqli_fetch_array($comprobar)) {
            $cant = $row['cantidad'] + $cantidad;
            // condicion si el stock e menor que la cantidad requerida
            if ($cant > $stock and $inv == 0) {
                echo "<script>
                        Swal.fire({
                            icon: 'error',
                            title: '¡Stock Insuficiente!',
                            text: 'La cantidad supera el stock disponible',
                            confirmButtonColor: '#d33',
                            confirmButtonText: 'Entendido'
                        });
                        $('#resultados').load('../ajax/editar_tmp_cot.php');
                      </script>";
            } else {

                $sql          = "UPDATE detalle_fact_cot SET cantidad='" . $cant . "' WHERE id_producto='" . $id_producto . "' and id_factura='" . $id_factura . "' and sucursal_id='" . $sucursal_users . "'";
                $query_update = mysqli_query($conexion, $sql);
                echo "<script>
                        $.Notification.notify('success','bottom center','🎯 PRODUCTO AGREGADO', 'Cantidad actualizada correctamente');
                        toastr.success('Cantidad actualizada', '¡Éxito!', {timeOut: 2000});
                      </script>";
                if ($id_comp == 3) {
                    echo '<script>$("#carga_totales").load("../ajax/carga_total_tmp7.php");</script>';
                } else {
                    echo '<script>$("#carga_totales").load("../ajax/carga_total_tmp8.php");</script>';
                }
            }
            // fin codicion cantaidad

        } else {
            // condicion si el stock e menor que la cantidad requerida
            if ($cantidad > $stock and $inv == 0) {
                echo "<script>
                        Swal.fire({
                            icon: 'error',
                            title: '¡Stock Insuficiente!',
                            text: 'La cantidad supera el stock disponible',
                            confirmButtonColor: '#d33',
                            confirmButtonText: 'Entendido'
                        });
                        $('#resultados').load('../ajax/editar_tmp_cot.php');
                      </script>";
            } else {

                $insert_tmp = mysqli_query($conexion, "INSERT INTO detalle_fact_cot (id_factura,numero_factura, id_producto,cantidad,precio_venta,sucursal_id) VALUES ('$id_factura','$numero_factura','$id_producto','$cantidad','$precio_venta','$sucursal_users')");
                echo "<script>
                        $.Notification.notify('success','bottom center','✨ NUEVO PRODUCTO', 'Producto agregado correctamente');
                        toastr.success('Producto agregado', '¡Éxito!', {timeOut: 2000});
                      </script>";
                if ($id_comp == 3) {
                    echo '<script>$("#carga_totales").load("../ajax/carga_total_tmp7.php");</script>';
                } else {
                    echo '<script>$("#carga_totales").load("../ajax/carga_total_tmp8.php");</script>';
                }
            }
            // fin codicion cantaidad
        }
    } else {
        // Si la cotización ya está facturada, mostrar mensaje pero CARGAR LOS PRODUCTOS
        echo "<script>
                toastr.warning('Esta cotización ya está facturada y no puede ser modificada', 'Información', {timeOut: 3000});
              </script>";
    }
}

// SIEMPRE procesamos la eliminación si hay ID (pero verificamos si se puede modificar)
if (isset($_GET['id'])) {
    $id_detalle = intval($_GET['id']);
    
    if ($puede_modificar) {
        $delete = mysqli_query($conexion, "DELETE FROM detalle_fact_cot WHERE id_detalle='" . $id_detalle . "'");
        echo "<script>
                $.Notification.notify('warning','bottom center','🗑️ PRODUCTO ELIMINADO', 'Producto eliminado correctamente');
                toastr.warning('Producto eliminado', 'Eliminado', {timeOut: 2000});
              </script>";
        if ($id_comp == 3) {
            echo '<script>$("#carga_totales").load("../ajax/carga_total_tmp7.php");</script>';
        } else {
            echo '<script>$("#carga_totales").load("../ajax/carga_total_tmp8.php");</script>';
        }
    } else {
        // Si la cotización ya está facturada, mostrar mensaje pero CARGAR LOS PRODUCTOS
        echo "<script>
                toastr.warning('No se puede eliminar productos de una cotización ya facturada', 'Información', {timeOut: 3000});
              </script>";
    }
}

$simbolo_moneda = get_row('perfil', 'moneda', 'id_perfil', 1);
$pv             = get_row('perfil', 'precio_venta', 'id_perfil', 1);
if ($pv == 0) {
    $ok = 'disabled';
} else {
    $ok = '';
}
?>
<style>
    .btn-disabled-small {
        opacity: 0.5;
        cursor: not-allowed !important;
        background: linear-gradient(45deg, #6c757d, #495057) !important;
        border-color: #6c757d !important;
    }
    
    .btn-disabled-small:hover {
        opacity: 0.5;
        transform: none !important;
        box-shadow: none !important;
    }
    
    .field-disabled-small {
        background-color: #f8f9fa !important;
        border-color: #dee2e6 !important;
        color: #6c757d !important;
        cursor: not-allowed;
    }
    
    .readonly-badge {
        background: linear-gradient(45deg, #28a745, #20c997);
        color: white;
        padding: 3px 8px;
        border-radius: 10px;
        font-size: 12px;
    }
    
    .product-badge {
        font-size: 14px;
        padding: 8px 12px;
        border-radius: 20px;
        display: inline-block;
        min-width: 70px;
        text-align: center;
    }
</style>

<div class="table-responsive">
    <?php if (!$puede_modificar): ?>
        <div class="alert alert-info alert-dismissible fade show mb-3" role="alert">
            <div class="d-flex align-items-center">
                <i class="fa fa-info-circle fa-2x mr-3 text-info"></i>
                <div>
                    <h5 class="alert-heading mb-1">📋 Visualización de Productos</h5>
                    <p class="mb-0">Esta cotización ya está facturada. Los productos se muestran en modo <strong>solo lectura</strong>.</p>
                </div>
            </div>
        </div>
    <?php endif; ?>
    
    <table class="table table-sm table-hover">
        <thead class="thead-dark">
            <tr>
                <th class='text-center'>Cod</th>
                <th class='text-center'>Cant.</th>
                <th class='text-center'>Producto</th>
                <th class='text-center'>Precio <?php echo $simbolo_moneda; ?></th>
                <th class='text-center'>Desc %</th>
                <th class='text-right'>Total</th>
                <?php if ($puede_modificar): ?>
                    <th class='text-center'>Acciones</th>
                <?php endif; ?>
            </tr>
        </thead>
        <tbody>
            <?php
            // SIEMPRE CARGAMOS LOS PRODUCTOS INDEPENDIENTEMENTE DEL ESTADO
            $impuesto       = get_row('perfil', 'impuesto', 'id_perfil', 1);
            $nom_impuesto   = get_row('perfil', 'nom_impuesto', 'id_perfil', 1);
            $sumador_total  = 0;
            $total_iva      = 0;
            $subtotal       = 0;
            $total_impuesto = 0;
            $tot            = 0;
            
            // CONSULTA CORREGIDA - Solo necesitamos productos y detalle_fact_cot
            $sql = mysqli_query($conexion, "SELECT 
                p.id_producto,
                p.codigo_producto,
                p.nombre_producto,
                p.iva_producto,
                d.id_detalle,
                d.cantidad,
                d.desc_venta,
                d.precio_venta,
                d.id_factura
            FROM productos p 
            INNER JOIN detalle_fact_cot d ON p.id_producto = d.id_producto 
            WHERE d.id_factura = '$id_factura' 
            AND d.sucursal_id = '$sucursal_users'
            ORDER BY d.id_detalle ASC");
            
            // DEBUG: Verificar si hay resultados
            $num_rows = mysqli_num_rows($sql);
            
            $tiene_productos = false;
            $contador_productos = 0;
            
            if ($num_rows > 0) {
                $tiene_productos = true;
                
                while ($row = mysqli_fetch_array($sql)) {
                    $contador_productos++;
                    $id_detalle      = $row["id_detalle"];
                    $id_producto     = $row["id_producto"];
                    $codigo_producto = $row['codigo_producto'];
                    $cantidad        = $row['cantidad'];
                    $desc_tmp        = $row['desc_venta'];
                    $nombre_producto = $row['nombre_producto'];
                    $precio_venta    = $row['precio_venta'];
                    $iva_producto    = $row['iva_producto'];
                    
                    $precio_venta_f  = formato($precio_venta);
                    $precio_venta_r  = str_replace(",", "", $precio_venta_f);
                    $precio_total    = $precio_venta_r * $cantidad;
                    $final_items     = rebajas($precio_total, $desc_tmp);
                    $precio_total_f  = formato($final_items);
                    $precio_total_r  = str_replace(",", "", $precio_total_f);
                    $sumador_total  += $precio_total_r;
                    $subtotal        = formato($sumador_total);
                    
                    if ($iva_producto == 1) {
                        $total_iva = iva($precio_venta);
                    } else {
                        $total_iva = 0;
                    }
                    
                    $total_impuesto += rebajas($total_iva, $desc_tmp) * $cantidad;
                    $importe        = $sumador_total / 1.13;
                    $tot           += $importe;
                    $iva            = $importe * 0.13;
                    $subtot         = $sumador_total + $total_impuesto;
                    $total          = $subtot;
            ?>
            <tr>
                <td class='text-center align-middle'>
                    <span class="badge badge-primary product-badge">
                        <?php echo $codigo_producto; ?>
                    </span>
                </td>
                <td class='text-center align-middle' width="15%">
                    <?php if ($puede_modificar): ?>
                        <input style=" background-color:#A9DFBF; border-radius: 5px; border: 1px solid #39c; text-align: center" 
                               type="text" 
                               class="form-control txt_cant" 
                               value="<?php echo $cantidad; ?>" 
                               id="<?php echo $id_detalle; ?>" 
                               onClick="this.select()">
                    <?php else: ?>
                        <span class="badge badge-pill badge-primary product-badge">
                            <i class="fa fa-cube mr-1"></i> <?php echo $cantidad; ?>
                        </span>
                    <?php endif; ?>
                </td>
                <td class='align-middle'>
                    <div class="d-flex align-items-center">
                        <i class="fa fa-tag text-muted mr-2"></i>
                        <span><?php echo $nombre_producto; ?></span>
                    </div>
                </td>
                <td class='text-center align-middle'>
                    <?php if ($puede_modificar): ?>
                        <div class="input-group">
                            <select id="<?php echo $id_detalle; ?>" class="form-control employee_id" <?php echo $ok; ?>>
                                <?php
                                $sql1 = mysqli_query($conexion, "select * from productos where id_producto='" . $id_producto . "'");
                                while ($rw1 = mysqli_fetch_array($sql1)) {
                                    ?>
                                    <option selected disabled value="<?php echo $precio_venta ?>"><?php echo number_format($precio_venta, 2); ?></option>
                                    <option value="<?php echo $rw1['valor1_producto'] ?>">PV <?php echo number_format($rw1['valor1_producto'], 2); ?></option>
                                    <option value="<?php echo $rw1['valor2_producto'] ?>">PM <?php echo number_format($rw1['valor2_producto'], 2); ?></option>
                                    <option value="<?php echo $rw1['valor3_producto'] ?>">PE <?php echo number_format($rw1['valor3_producto'], 2); ?></option>
                                    <?php
                                }
                                ?>
                            </select>
                        </div>
                    <?php else: ?>
                        <span class="badge badge-pill badge-success product-badge">
                            <i class="fa fa-money mr-1"></i> <?php echo number_format($precio_venta, 2); ?>
                        </span>
                    <?php endif; ?>
                </td>
                <td align="right" width="15%" class='align-middle'>
                    <?php if ($puede_modificar): ?>
                        <input type="text" 
                               class="form-control txt_desc"  
                               style=" background-color:#F7DC6F; border-radius: 5px; border: 1px solid #39c; text-align: center;" 
                               value="<?php echo $desc_tmp; ?>" 
                               id="<?php echo $id_detalle; ?>">
                    <?php else: ?>
                        <span class="badge badge-pill badge-warning product-badge">
                            <i class="fa fa-percent mr-1"></i> <?php echo number_format($desc_tmp, 2); ?>%
                        </span>
                    <?php endif; ?>
                </td>
                <td class='text-right align-middle'>
                    <span class="badge badge-pill badge-info product-badge">
                        <i class="fa fa-calculator mr-1"></i> <?php echo $simbolo_moneda . ' ' . number_format($final_items, 2); ?>
                    </span>
                </td>
                <?php if ($puede_modificar): ?>
                    <td class='text-center align-middle'>
                        <a href="#" 
                           class='btn btn-danger btn-sm waves-effect waves-light' 
                           onclick="eliminar('<?php echo $id_detalle ?>')"
                           data-toggle="tooltip" 
                           data-placement="top" 
                           title="Eliminar producto">
                            <i class="fa fa-trash"></i>
                        </a>
                    </td>
                <?php endif; ?>
            </tr>
            <?php
                } // fin del while
            } // fin del if $num_rows > 0
            
            // SIEMPRE mostramos algo, aunque no haya productos
            if (!$tiene_productos) {
                $colspan = $puede_modificar ? 7 : 6;
                echo '<tr class="table-warning">';
                echo '<td colspan="' . $colspan . '" class="text-center py-5">';
                echo '<div class="py-4">';
                echo '<i class="fa fa-shopping-cart fa-3x text-muted mb-3"></i>';
                echo '<h5 class="text-muted">No hay productos en esta cotización</h5>';
                echo '<p class="text-muted small mt-2">';
                if ($puede_modificar) {
                    echo 'Puedes agregar productos usando el código de barras o el botón de búsqueda.';
                } else {
                    echo 'Esta cotización fue facturada sin productos.';
                }
                echo '</p>';
                echo '</div>';
                echo '</td>';
                echo '</tr>';
            } else {
                // Mostramos contador de productos
                echo '<tr class="table-light">';
                echo '<td colspan="' . ($puede_modificar ? '6' : '5') . '" class="text-right text-muted">';
                echo '<small><i class="fa fa-cubes mr-1"></i> Total productos: ' . $contador_productos . '</small>';
                echo '</td>';
                if ($puede_modificar) {
                    echo '<td></td>';
                }
                echo '</tr>';
            }
            
            $total_factura = $subtotal + $total_impuesto;
            // SIEMPRE actualizamos el monto en la base de datos
            $update_fact = mysqli_query($conexion, "update facturas_cot set monto_factura='$total_factura' where id_factura='$id_factura'");
            
            // SIEMPRE mostramos los totales, aunque sean cero
            ?>
            <tr class="table-active">
                <td class='text-right' colspan="<?php echo $puede_modificar ? '5' : ''; ?>">
                    <strong><i class="fa fa-calculator mr-2"></i> SUBTOTAL</strong>
                </td>
                <td class='text-right'>
                    <strong class="text-primary"><?php echo $simbolo_moneda . ' ' . number_format($subtotal, 2); ?></strong>
                </td>
                <?php if ($puede_modificar): ?>
                    <td></td>
                <?php endif; ?>
            </tr>
            <tr class="table-active">
                <td class='text-right' colspan="<?php echo $puede_modificar ? '5' : '4'; ?>">
                    <strong><i class="fa fa-percent mr-2"></i> <?php echo $nom_impuesto; ?> (<?php echo $impuesto; ?>)%</strong>
                </td>
                <td class='text-right'>
                    <strong class="text-warning"><?php echo $simbolo_moneda . ' ' . number_format($total_impuesto, 2); ?></strong>
                </td>
                <?php if ($puede_modificar): ?>
                    <td></td>
                <?php endif; ?>
            </tr>
            <tr class="table-success" style="font-size: 1.1em;">
                <td class='text-right' colspan="<?php echo $puede_modificar ? '5' : '4'; ?>">
                    <strong><i class="fa fa-file-invoice-dollar mr-2"></i> TOTAL <?php echo $simbolo_moneda; ?></strong>
                </td>
                <td class='text-right'>
                    <strong class="text-success"><?php echo number_format($total_factura, 2); ?></strong>
                </td>
                <?php if ($puede_modificar): ?>
                    <td></td>
                <?php endif; ?>
            </tr>
        </tbody>
    </table>
    
    <?php if ($tiene_productos): ?>
        <div class="alert alert-light mt-3">
            <div class="row">
                <div class="col-md-6">
                    <small class="text-muted">
                        <i class="fa fa-database mr-1"></i> Registros encontrados: <strong><?php echo $num_rows; ?></strong>
                    </small>
                </div>
                <div class="col-md-6 text-right">
                    <small class="text-muted">
                        <i class="fa fa-calendar mr-1"></i> Última actualización: <?php echo date('H:i:s'); ?>
                    </small>
                </div>
            </div>
        </div>
    <?php endif; ?>
</div>

<script>
    $(document).ready(function () {
        // Activar tooltips
        $('[data-toggle="tooltip"]').tooltip();
        
        <?php if ($puede_modificar): ?>
            // Solo activar las funciones de modificación si se puede modificar
            $('.txt_desc').off('blur');
            $('.txt_desc').on('blur',function(event){
                id_detalle = $(this).attr("id");
                desc = $(this).val();
                if (isNaN(desc)) {
                    toastr.error('Digitar un descuento válido', 'Error', {timeOut: 3000});
                    $(this).focus();
                    return false;
                }
                $.ajax({
                    type: "POST",
                    url: "../ajax/editar_desc_cot2.php",
                    data: "id_detalle=" + id_detalle + "&desc=" + desc,
                    success: function(datos) {
                        $("#resultados").load("../ajax/editar_tmp_cot.php");
                        toastr.success('Descuento actualizado', '¡Éxito!', {timeOut: 2000});
                    }
                });
            });

            $(".employee_id").on("change", function(event) {
                id_detalle = $(this).attr("id");
                precio = $(this).val();
                $.ajax({
                    type: "POST",
                    url: "../ajax/editar_precio_cot2.php",
                    data: "id_detalle=" + id_detalle + "&precio=" + precio,
                    success: function(datos) {
                        $("#resultados").load("../ajax/editar_tmp_cot.php");
                        toastr.success('Precio actualizado', '¡Éxito!', {timeOut: 2000});
                    }
                });
            });

            $(".txt_cant").on("blur", function(event) {
                id_detalle = $(this).attr("id");
                cant = $(this).val();
                if (isNaN(cant)) {
                    toastr.error('Digitar la cantidad', 'Error', {timeOut: 3000});
                    $(this).focus();
                    return false;
                }
                $.ajax({
                    type: "POST",
                    url: "../ajax/editar_cant_cot2.php",
                    data: "id_detalle=" + id_detalle + "&cant=" + cant,
                    success: function(datos) {
                        $("#resultados").load("../ajax/editar_tmp_cot.php");
                        toastr.success('Cantidad actualizada', '¡Éxito!', {timeOut: 2000});
                    }
                });
            });

            // Función para eliminar productos
            window.eliminar = function(id_detalle) {
                Swal.fire({
                    title: '¿Eliminar producto?',
                    text: "Esta acción no se puede deshacer",
                    icon: 'warning',
                    showCancelButton: true,
                    confirmButtonColor: '#d33',
                    cancelButtonColor: '#6c757d',
                    confirmButtonText: 'Sí, eliminar',
                    cancelButtonText: 'Cancelar',
                    reverseButtons: true
                }).then((result) => {
                    if (result.isConfirmed) {
                        $.ajax({
                            type: "GET",
                            url: "../ajax/editar_tmp_cot.php",
                            data: "id=" + id_detalle,
                            success: function(datos) {
                                $("#resultados").load("../ajax/editar_tmp_cot.php");
                                toastr.warning('Producto eliminado', 'Eliminado', {timeOut: 2000});
                            }
                        });
                    }
                });
            };
        <?php else: ?>
            // Si no se puede modificar, deshabilitar eventos pero LOS PRODUCTOS SE MUESTRAN
            $('.txt_desc, .txt_cant, .employee_id').on('click', function(e) {
                e.preventDefault();
                toastr.info('Esta cotización ya está facturada y no puede ser modificada', 'Información', {timeOut: 3000});
                return false;
            });
        <?php endif; ?>
        
        // SIEMPRE mostrar animación suave al cargar los productos
        $('tbody tr').hide().each(function(i) {
            $(this).delay(i * 100).fadeIn(300);
        });
    });
</script>