<?php
include 'conexion1.php';

$producto_id = $_POST['producto_id'];
$tipo_movimiento = $_POST['tipo_movimiento'];
$cantidad = $_POST['cantidad'];
$costo_unitario = $_POST['costo_unitario'];

$conexion = new mysqli($servidor, $nombre, $clave, $base);

// Verificar si el producto existe en el inventario (tabla productos)
$producto_query = $conexion->query("SELECT id FROM productos WHERE id = $producto_id");
if ($producto_query->num_rows === 0) {
    echo "Error: El producto seleccionado no existe en el inventario.";
    exit();
}

// Obtener el saldo actual desde la última entrada en la tabla kardex
$saldo_query = $conexion->query("SELECT saldo FROM kardex WHERE producto_id = $producto_id ORDER BY id DESC LIMIT 1");
$saldo_actual = $saldo_query->num_rows > 0 ? $saldo_query->fetch_assoc()['saldo'] : 0;

// Validar el tipo de movimiento y actualizar el saldo en consecuencia
if ($tipo_movimiento === 'entrada') {
    // Para entradas, simplemente se suma al saldo actual
    $nuevo_saldo = $saldo_actual + $cantidad;
} elseif ($tipo_movimiento === 'salida') {
    // Si el saldo es 0 y el movimiento es de salida, mostrar un error específico
    if ($saldo_actual == 0) {
        echo "Error: No se puede registrar una salida porque el producto no tiene saldo registrado en el kardex.";
        exit();
    }

    // Verificar si hay suficiente saldo para la salida
    if ($cantidad > $saldo_actual) {
        echo "Error: No hay suficiente saldo para realizar esta salida. Saldo actual: $saldo_actual, salida solicitada: $cantidad.";
        exit();
    }
    $nuevo_saldo = $saldo_actual - $cantidad;
} else {
    echo "Error: Tipo de movimiento no válido.";
    exit();
}

// Calcular el valor del saldo actualizado
$valor_saldo = $nuevo_saldo * $costo_unitario;

// Insertar el movimiento en la tabla kardex
$insert_kardex = $conexion->query("INSERT INTO kardex (producto_id, tipo_movimiento, cantidad, costo_unitario, saldo, saldo_valor) 
                                   VALUES ($producto_id, '$tipo_movimiento', $cantidad, $costo_unitario, $nuevo_saldo, $valor_saldo)");

if (!$insert_kardex) {
    echo "Error al registrar el movimiento en el kardex: " . $conexion->error;
    exit();
}

echo "Movimiento registrado exitosamente.";

$conexion->close();
?>