<?php
error_reporting(E_ALL ^ E_NOTICE);
include("is_logged.php");
require_once("../config/db.php");
require_once("../config/conexion.php");

$session_id = session_id();

// --- 1. CAPTURA DE TIENDA ---
if (isset($_GET['tienda_id']) && $_GET['tienda_id'] > 0) {
    $tienda = intval($_GET['tienda_id']);
    $_SESSION['tie'] = $tienda; 
} else if (isset($_SESSION['tie']) && $_SESSION['tie'] > 0) {
    $tienda = intval($_SESSION['tie']);
} else {
    echo "<script>alert('Error: No se ha detectado la tienda. Por favor, selecciónela de nuevo.'); window.history.back();</script>";
    exit;
}

// 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;

// --- 2. VALIDAR SI HAY PRODUCTOS ---
$sql_count = mysqli_query($con, "SELECT * FROM tmp2 WHERE session_id='" . $session_id . "'");
$count = mysqli_num_rows($sql_count);

if ($count == 0) {
    echo "<script>alert('No hay productos agregados a la Factura'); window.history.back(1);</script>";
    exit;
}

// --- 3. VALIDAR CLIENTE Y PROCESAR ---
if (isset($_GET['id_cliente']) && !empty($_GET['id_cliente'])) {
    $id_cliente = intval($_GET['id_cliente']);
    $id_vendedor = intval($_GET['id_vendedor']);
    $lugar = (isset($_GET['lugar'])) ? mysqli_real_escape_string($con, $_GET['lugar']) : "";
    $observaciones = (isset($_GET['observaciones'])) ? mysqli_real_escape_string($con, $_GET['observaciones']) : "";
    
    // Captura dinámica: NO forzamos crédito por ser tienda 2
    $credito = (isset($_GET['credito'])) ? mysqli_real_escape_string($con, $_GET['credito']) : "NO";
    $condiciones = "Liquidar";

    // Nueva Lógica: Todo nace como Pendiente (1) para procesar el cobro después
$estatus = 1; 


    // Obtener último número de factura
    $sql_n = mysqli_query($con, "SELECT MAX(numero_factura) as last FROM facturas");
    $rw_n = mysqli_fetch_array($sql_n);
    $numero_factura = $rw_n['last'] + 1;

    $sumador_total = 0;
    $sumador_total_costo = 0;

    // --- 4. RECORRER EL CARRITO ---
    $sql_carrito = mysqli_query($con, "SELECT * FROM tmp2 WHERE session_id='" . $session_id . "'");

    while ($row = mysqli_fetch_array($sql_carrito)) {
        $id_producto_f = $row["id_producto"];
        $cantidad_vendida = $row['cantidad_tmp2'];
        $precio_venta = $row['precio_tmp2'];
        $precio_costo = $row['precio_costo_tmp2'];

        $sumador_total += ($precio_venta * $cantidad_vendida);
        $sumador_total_costo += ($precio_costo * $cantidad_vendida);

        // A. Insertar en detalle_factura
        mysqli_query($con, "INSERT INTO detalle_factura VALUES (NULL,'$numero_factura','','$id_producto_f','$cantidad_vendida','$precio_venta','$precio_costo','$tienda','$tasa_actual')");

        // B. Lógica de Descuento de Ingredientes (Receta)
        $sql_receta = mysqli_query($con, "SELECT id_producto, cantidad FROM composicion_producto_final WHERE id_producto_final = '$id_producto_f'");
        
        if (mysqli_num_rows($sql_receta) > 0) {
            while ($row_r = mysqli_fetch_array($sql_receta)) {
                $id_ingrediente_receta = $row_r['id_producto'];
                $cant_unitaria = $row_r['cantidad'];
                $total_descontar = $cant_unitaria * $cantidad_vendida;

                $sql_info_ing = mysqli_query($con, "SELECT nombre_producto FROM products WHERE id_producto = '$id_ingrediente_receta'");
                $row_info = mysqli_fetch_array($sql_info_ing);
                
                if ($row_info) {
                    $nombre_para_buscar = mysqli_real_escape_string($con, $row_info['nombre_producto']);

                    $query_update = "UPDATE products 
                                     SET existencia = existencia - $total_descontar 
                                     WHERE TRIM(UPPER(nombre_producto)) = TRIM(UPPER('$nombre_para_buscar')) 
                                     AND almacen = '$tienda'";
                    
                    mysqli_query($con, $query_update);

                    if (mysqli_affected_rows($con) == 0) {
                        die("Error de Descuento: No se encontró el ingrediente '$nombre_para_buscar' en el almacén '$tienda'.");
                    }
                }
            }
        } else {
            // Producto simple
            mysqli_query($con, "UPDATE products SET existencia = existencia - $cantidad_vendida 
                               WHERE id_producto = '$id_producto_f' AND almacen = '$tienda'");
        }
    } 

    // --- 5. INSERTAR CABECERA DE FACTURA ---
    $date = date("Y-m-d H:i:s");
    $total_factura = $sumador_total;

    // Nota: El orden de las columnas debe coincidir exactamente con tu tabla 'facturas'
    
    $sql_insert_factura = "INSERT INTO `facturas`(`id_factura`, `numero_factura`, `numero_proforma`, `fecha_factura`, `id_cliente`, `id_vendedor`, `condiciones`, `total_venta`, `observaciones`, `total_costo`, `estado_factura`, `banco`, `ref`, `fecha_pago`, `condiciones_ret`, `condiciones_efe`, `condiciones_efed`, `condiciones_tra`, `condiciones_pun`, `credito`, `almacen`, `abono`, `por_cobrar`, `lugar`, `tasa`) 
    VALUES (NULL,'$numero_factura','0','$date','$id_cliente','$id_vendedor','$condiciones','$total_factura','$observaciones','$sumador_total_costo','$estatus','0','0','00-00-0000','0','0','0','0','0','$credito','$tienda','0','$total_factura','$lugar','$tasa_actual')";
    //echo "SQL RESULTANTE: " . $sql_insert_factura; 
    //exit; 
    //Esto detendrá todo y te mostrará el SQL en pantalla
    
    //$sql_insert_factura = "INSERT INTO facturas VALUES 
    //('', '$numero_factura', '', '$date', '$id_cliente', '$id_vendedor', '$condiciones', '$total_factura', '$observaciones', '$sumador_total_costo', 
    //'$estatus', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '$credito', '$tienda', ' ', '$total_factura', '$lugar', '$tasa_actual')";
    
    $insert = mysqli_query($con, $sql_insert_factura) or die("Error al guardar factura: " . mysqli_error($con));

    // --- 6. LIMPIAR CARRITO Y FINALIZAR ---
    mysqli_query($con, "DELETE FROM tmp2 WHERE session_id='" . $session_id . "'");

    echo "<script>alert('Factura Procesada Exitosamente: " . $observaciones . "'); window.location='../facturas.php';</script>";

} else {
    echo "<script>alert('Error: Debe seleccionar un cliente antes de procesar.'); window.history.back(1);</script>";
}
?>