<?php
error_reporting(E_ALL ^ E_NOTICE);
include("is_logged.php");
$session_id = session_id();

require_once("../config/db.php");
require_once("../config/conexion.php");

// 1. Validaciones de entrada
if (!isset($_GET['destino']) || !isset($_GET['origen']) || empty($_GET['id_vendedor'])) {
    echo "<script>alert('Faltan datos para procesar'); window.history.back(1);</script>";
    exit;
}

   


$destino = mysqli_real_escape_string($con, $_GET['destino']);
$origen = mysqli_real_escape_string($con, $_GET['origen']); // Este será 'traslada'
$id_vendedor = intval($_GET['id_vendedor']); // Este será 'usuario'
$date = date("Y-m-d H:i:s");
$condiciones = "Sin movimiento";
// Verificar productos en el temporal
$sql_count = mysqli_query($con, "SELECT * FROM tmp_movimiento WHERE session_id='" . $session_id . "'");
if (mysqli_num_rows($sql_count) == 0) {
    echo "<script>alert('No hay productos agregados'); window.history.back(1);</script>";
    exit;
}

// 2. Obtener el siguiente número de movimiento
$sql_num = mysqli_query($con, "SELECT MAX(numero_movimiento) AS last FROM movimientos");
$rw_num = mysqli_fetch_array($sql_num);
$numero_movimiento = $rw_num['last'] + 1;

// 3. Procesar Productos (Inventario y Detalles)
$sql_tmp = mysqli_query($con, "SELECT p.*, t.cantidad_tmp_movimiento 
                               FROM products p
                               INNER JOIN tmp_movimiento t ON p.id_producto = t.id_producto
                               WHERE t.session_id = '$session_id'");

while ($row = mysqli_fetch_array($sql_tmp)) {
    $id_producto_origen = $row["id_producto"];
    $cantidad = $row['cantidad_tmp_movimiento'];
    
    $cod_producto = mysqli_real_escape_string($con, $row['codigo_producto']);
    $nombre_producto = mysqli_real_escape_string($con, $row['nombre_producto']);
    $presentacion = mysqli_real_escape_string($con, $row['status_producto']);
    $marca = mysqli_real_escape_string($con, $row['marca']);
    $rubro = mysqli_real_escape_string($con, $row['tipo_producto']);
    
    $precio_costo = (is_numeric($row['precio_producto'])) ? $row['precio_producto'] : 0;
    $precio_venta = (is_numeric($row['precio_venta'])) ? $row['precio_venta'] : 0;
    $iva = (is_numeric($row['iva'])) ? $row['iva'] : 0;

    // A. Registrar en detalle_movimiento
    mysqli_query($con, "INSERT INTO detalle_movimiento (id_movimiento, numero_movimiento, codigo, id_producto, cantidad) 
                        VALUES ('$numero_movimiento', '$numero_movimiento', '$cod_producto', '$id_producto_origen', '$cantidad')");

    // B. Lógica de Almacenes (Si existe en destino suma, si no crea)
    $sql_busca = mysqli_query($con, "SELECT id_producto FROM products 
                                     WHERE nombre_producto = '$nombre_producto' 
                                     AND marca = '$marca' 
                                     AND status_producto = '$presentacion' 
                                     AND almacen = '$destino' LIMIT 1");

    if (mysqli_num_rows($sql_busca) > 0) {
        $row_dest = mysqli_fetch_array($sql_busca);
        $id_dest = $row_dest['id_producto'];
        
        mysqli_query($con, "UPDATE products SET existencia = existencia - $cantidad WHERE id_producto = '$id_producto_origen'");
        mysqli_query($con, "UPDATE products SET existencia = existencia + $cantidad WHERE id_producto = '$id_dest'");
    } else {
        mysqli_query($con, "UPDATE products SET existencia = existencia - $cantidad WHERE id_producto = '$id_producto_origen'");
        mysqli_query($con, "INSERT INTO products (codigo_producto, nombre_producto, status_producto, date_added, tipo_producto, precio_producto, iva, precio_venta, existencia, marca, almacen) 
                            VALUES ('$cod_producto', '$nombre_producto', '$presentacion', '$date', '$rubro', '$precio_costo', '$iva', '$precio_venta', '$cantidad', '$marca', '$destino')");
    }
}

// 4. REGISTRAR CABECERA EN TABLA MOVIMIENTOS
// Según tus campos: id_movimiento (NULL), factura (Movimiento Interno), numero_movimiento, usuario, fecha...

$sql_cabecera = "INSERT INTO movimientos (
    id_movimiento, 
    factura, 
    numero_movimiento, 
    usuario, 
    fecha, 
    responsable, 
    traslada, 
    cedula, 
    cedula_traslada, 
    destino, 
    marca_vehiculo, 
    tipo_vehiculo, 
    placa_vehiculo, 
    estatus
) VALUES (
    NULL, 
    'Movimiento Interno', 
    '$numero_movimiento', 
    '$origen', 
    '$date', 
    '', 
    '', 
    '', 
    '', 
    '$destino', 
    '', 
    '', 
    '', 
    '$condiciones'
)";

$insert_cabecera = mysqli_query($con, $sql_cabecera);

if (!$insert_cabecera) {
    die("Error al registrar la cabecera: " . mysqli_error($con));
}

// 5. Limpiar y redireccionar
mysqli_query($con, "DELETE FROM tmp_movimiento WHERE session_id = '$session_id'");

echo "<script>alert('Movimiento Procesado con Éxito'); window.location='../movimientos.php';</script>";
?>