<?php
include 'is_logged.php';
if (empty($_POST['id_cliente'])) {
    $errors[] = "ID VACIO";
} else if (!empty($_POST['id_cliente'])) {
    require_once "../db.php";
    require_once "../php_conexion.php";
    require_once "../funciones.php";
    
    $session_id     = session_id();
    $sucursal_users = $_SESSION['sucursal_users'];
    $simbolo_moneda = get_row('perfil', 'moneda', 'id_perfil', 1);
    
    $sql_count = mysqli_query($conexion, "select session_id, sucursal_tmp from tmp_ventas where session_id='" . $session_id . "' and sucursal_tmp='" . $sucursal_users . "'");
    $count     = mysqli_num_rows($sql_count);
    
    if ($count == 0) {
        echo "<script>
        swal({
          title: 'No hay Productos agregados en la factura',
          text: 'Intentar nuevamente',
          type: 'error',
          confirmButtonText: 'ok'
      })</script>";
        exit;
    }
    
    $id_cliente     = intval($_POST['id_cliente']);
    $id_mecanico    = 0;
    $id_empleado    = intval($_POST['id_empleado']);
    $id_comp        = intval($_POST['id_comp']);
    $id_vendedor    = intval($_SESSION['id_users']);
    $users          = intval($_SESSION['id_users']);
    $comision       = 0;
    $condiciones    = mysqli_real_escape_string($conexion, (strip_tags($_REQUEST['tipoPago'], ENT_QUOTES)));
    $resibido       = floatval($_POST['resibido']);
    $total_ft       = floatval($_POST['total_ft']);
    $date_added     = date("Y-m-d H:i:s");
    $tipo_comp      = get_row('comprobantes', 'tipo_comp', 'id_comp', $id_comp);
    
    if ($condiciones == 98) {
        $estado = 2;
    } else {
        $estado = 1;
    }
    
    $caja = mysqli_query($conexion, "SELECT LAST_INSERT_ID(caja_id) as last_id, estado_caja FROM detalle_caja WHERE estado_caja = 0");
    $rw = mysqli_fetch_array($caja);
    $id_caja = $rw['last_id'];
    
    if ($resibido < $total_ft and $condiciones != 98) {
        echo "<script>
            swal({
              title: 'DINERO RESIBIDO ES MENOR AL MONTO TOTAL',
              text: 'Intentar Nuevamente',
              type: 'error',
              confirmButtonText: 'ok'
          })</script>";
        exit;
    }
    
    $sql         = mysqli_query($conexion, "select * from comprobantes where  id_comp ='$id_comp'");
    $rw          = mysqli_fetch_array($sql);
    $serie_comp  = $rw['serie_comp'];
    $desde_comp  = $rw['desde_comp'];
    $hasta_comp  = $rw['hasta_comp'];
    $actual_comp = $rw['actual_comp'];
    $long_comp   = $rw['long_comp'];
    
    $rs = mysqli_query($conexion, "SELECT MAX(num_fact) AS factura FROM correlativos WHERE tipo_fact='$id_comp'") or die('error ' . mysqli_error($conexion));
    $row          = mysqli_fetch_array($rs);
    $numfactura = $row['factura'];
    $test = $numfactura + 1;
    $formato = str_pad($test, $long_comp, "0", STR_PAD_LEFT);
    $factura = $serie_comp . '' . $formato;
    
    $insert_correlativo = mysqli_query($conexion, "INSERT INTO correlativos VALUES (NULL,'$test','$id_comp','$sucursal_users')");
    
    // =========== SOLUCIÓN: INSERTO PRIMERO LA FACTURA ===========
    $insert = "INSERT INTO facturas_ventas VALUES (NULL,'$factura','$date_added','$id_cliente','$id_vendedor','$condiciones','$total_ft','$estado','$users','$resibido','$sucursal_users','$id_comp','0','$id_mecanico', '$id_empleado', '$comision','$id_caja')";
    
    // Ejecutar el INSERT de la factura principal
    if ($conexion->query($insert) === true) {
        // Obtener el ID real que se generó (AUTO_INCREMENT)
        $id_factura = $conexion->insert_id;
        $factura_id = $id_factura; // Para usar en las funciones de impresión
        
        // =========== AHORA PROCESO LOS DETALLES CON EL ID CORRECTO ===========
        $nums           = 1;
        $impuesto       = get_row('perfil', 'impuesto', 'id_perfil', 1);
        $sumador_total  = 0;
        $sum_total      = 0;
        $total_impuesto = 0;
        $t_iva          = 0;
        
        $sql = mysqli_query($conexion, "select * from productos, tmp_ventas where productos.id_producto=tmp_ventas.id_producto and tmp_ventas.session_id='" . $session_id . "' and tmp_ventas.sucursal_tmp='" . $sucursal_users . "'");
        
        while ($row = mysqli_fetch_array($sql)) {
            $id_tmp          = $row["id_tmp"];
            $id_producto     = $row['id_producto'];
            $codigo_producto = $row['codigo_producto'];
            $cantidad        = $row['cantidad_tmp'];
            $desc_tmp        = $row['desc_tmp'];
            $nombre_producto = $row['nombre_producto'];
            $precio_venta    = $row['precio_tmp'];
            $costo_producto  = $row['costo_producto'];
            
            $precio_venta_f = number_format($precio_venta, 2);
            $precio_venta_r = str_replace(",", "", $precio_venta_f);
            $precio_total   = $precio_venta_r * $cantidad;
            $final_items    = rebajas($precio_total, $desc_tmp);
            
            $precio_total_f = number_format($final_items, 2);
            $precio_total_r = str_replace(",", "", $precio_total_f);
            $sumador_total += $precio_total_r;
            
            $subtotal = number_format($sumador_total, 2, '.', '');
            if ($row['iva_producto'] == 1) {
                $total_iva = iva($precio_venta);
            } else {
                $total_iva = 0;
            }
            $total_impuesto += rebajas($total_iva, $desc_tmp) * $cantidad;
            
            // =========== USAR EL ID_FACTURA CORRECTO (el que obtuve con insert_id) ===========
            $insert_detail = mysqli_query($conexion, "INSERT INTO detalle_fact_ventas VALUES (NULL,'$id_factura','$factura','$id_producto','$cantidad','$desc_tmp','$precio_venta_r','$precio_total','$sucursal_users')");
            
            $saldo_total = $cantidad * $costo_producto;
            $sql_kardex  = mysqli_query($conexion, "select * from kardex where producto_kardex='" . $id_producto . "' order by id_kardex DESC LIMIT 1");
            $rww         = mysqli_fetch_array($sql_kardex);
            $id_prod     = !empty($rww['producto_kardex']);
            $costo_saldo = !empty($rww['costo_saldo']);
            $cant_saldo  = !empty($rww['cant_saldo']) - $cantidad;
            $nuevo_saldo = $cant_saldo * $costo_producto;
            $tipo        = 2;
            
            guardar_salidas($date_added, $id_producto, $cantidad, $costo_producto, $saldo_total, $cant_saldo, $costo_saldo, $nuevo_saldo, $date_added, $users, $tipo);
            
            $sql2    = mysqli_query($conexion, "select * from productos where id_producto='" . $id_producto . "'");
            $rw      = mysqli_fetch_array($sql2);
            $old_qty = $rw['stock_producto'];
            $new_qty = $old_qty - $cantidad;
            $update  = mysqli_query($conexion, "UPDATE productos SET stock_producto='" . $new_qty . "' WHERE id_producto='" . $id_producto . "' and inv_producto=0");
            $nums++;
        }
        
        $total_factura    = $subtotal + $total_impuesto;
        $cambio           = $resibido - $total_ft;
        $saldo_credito    = $total_ft - $resibido;
        $camb             = number_format($cambio, 2);
        $resibido_formato = number_format($resibido, 2);
        
        if ($condiciones == 98) {
            $insert_prima = mysqli_query($conexion, "INSERT INTO creditos VALUES (NULL,'$factura','$date_added','$id_cliente','$id_vendedor','$total_ft','$saldo_credito','1','$users','$sucursal_users')");
            $insert_abono = mysqli_query($conexion, "INSERT INTO creditos_abonos VALUES (NULL,'$factura','$date_added','$id_cliente','$total_ft','$resibido','$saldo_credito','$users','$sucursal_users','CREDITO INICAL')");
        }
        
        $delete = mysqli_query($conexion, "DELETE FROM tmp_ventas WHERE session_id='" . $session_id . "' and sucursal_tmp='" . $sucursal_users . "'");
        
        if ($tipo_comp == 1) {
            $imprimir = "printOrder('$factura_id')";
            $titulo   = "Ticket";
        } elseif ($tipo_comp == 2) {
            $imprimir = "printFactura('$factura_id')";
            $titulo   = "Consumidor Final";
        } else {
            $imprimir = "printFactura2('$factura_id')";
            $titulo   = "Credito Fiscal";
        }
        
        if ($condiciones == 98) {
            echo "<script>
            swal({
              title: 'VENTA AL CREDITO GUARDADA CON EXITO CON ANTICIPO DE: $simbolo_moneda $resibido_formato',
              text: 'Factura: $factura',
              type: 'success',
              confirmButtonText: 'ok'
            })
            </script>";
            exit;
        }
        
        if ($insert_detail) {
            echo "<script>
            $('#outer_comprobante').load('../ajax/carga_correlativos.php');
            $('#resultados5').load('../ajax/carga_num_trans.php')
            $('#modal_vuelto').modal('show');
            $('#id_cliente').val(1);
            $('#resultados6').load('../ajax/carga_comprobantes.php');
            $('#outer_comprobante').load('../ajax/carga_correlativoDefault.php');
            </script>";
        } else {
            $errors[] = "Error al insertar detalle: " . mysqli_error($conexion);
        }
        
    } else {
        $errors[] = "Error al guardar la factura: " . mysqli_error($conexion);
    }
    
} else {
    $errors[] = "Error desconocido.";
}

if (isset($errors)) {
?>
    <div class="alert alert-danger" role="alert">
        <strong>Error!</strong>
        <?php
        foreach ($errors as $error) {
            echo $error;
        }
        ?>
    </div>
<?php
}
if (isset($messages)) {
?>
    <div class="alert alert-success" role="alert">
        <strong>¡Bien hecho!</strong>
        <?php
        foreach ($messages as $message) {
            echo $message;
        }
        ?>
    </div>
<?php
}

// Solo mostrar modal si no hay errores y no es crédito
if (!isset($errors) && isset($condiciones) && $condiciones != 4 && isset($camb)) {
?>
<!-- Modal -->
<div class="modal fade" id="modal_vuelto" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                <h4 class="modal-title" id="myModalLabel"><i class='fa fa-edit'></i> FACTURA: <?php echo $factura; ?></h4>
            </div>
            <div class="modal-body" align="center">
                <strong>
                    <h3>CAMBIO</h3>
                </strong>
                <div class="alert alert-info" align="center">
                    <strong>
                        <h1>
                            <?php echo $simbolo_moneda . ' ' . $camb; ?>
                        </h1>
                    </strong>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" id="imprimir" class="btn btn-success btn-block btn-lg waves-effect waves-light" onclick="<?php echo $imprimir; ?>" accesskey="t"><span class="fa fa-print"></span> <?php echo $titulo; ?></button><br>
            </div>
        </div>
    </div>
</div>
<?php } ?>