'', 'nombre' => '', 'codigo' => '', 'stock_inicial' => '', 'precio_unitario' => '', 'unidad_medida' => '' ]; // Si se está editando un producto if (isset($_GET['id'])) { $id = $_GET['id']; $stmt = $conn->prepare("SELECT * FROM productos WHERE id = ?"); $stmt->bind_param("i", $id); $stmt->execute(); $resultado = $stmt->get_result(); if ($resultado->num_rows > 0) { $producto = $resultado->fetch_assoc(); } } // Si se envió el formulario if ($_SERVER["REQUEST_METHOD"] == "POST") { $id = $_POST['id'] ?? ''; $nombre = $_POST['nombre']; $codigo = $_POST['codigo']; $stock_inicial = $_POST['stock_inicial']; $precio_unitario = $_POST['precio_unitario']; $unidad_medida = $_POST['unidad_medida']; // Captura y conversión de la fecha del formulario (por ejemplo, "2025-05-08T07:56" a "2025-05-08 07:56:00") $fecha = str_replace("T", " ", $_POST['fecha']) . ":00"; $fecha_vencimiento = $_POST['fecha_vencimiento']; // Validar que la fecha no sea del futuro (permitiendo únicamente la de ayer o de hoy) $fecha_actual = date("Y-m-d H:i:s"); if (strtotime($fecha) > strtotime($fecha_actual)) { $mensaje = "Error: Ingrese una fecha válida."; exit($mensaje); } // Verificar si ya existe un producto con el mismo código, pero diferente ID $stmt = $conn->prepare("SELECT id FROM productos WHERE codigo = ? AND id != ?"); $stmt->bind_param("si", $codigo, $id); $stmt->execute(); $stmt->store_result(); if ($stmt->num_rows > 0) { $mensaje = "⚠️ Ya existe un producto con ese código."; } else { if (!empty($id)) { // Actualizar producto $stmt = $conn->prepare("UPDATE productos SET nombre=?, codigo=?, stock_inicial=?, precio_unitario=?, unidad_medida=?, fecha_creacion=?, fecha_vencimiento=? WHERE id=?"); $stmt->bind_param("ssidsssi", $nombre, $codigo, $stock_inicial, $precio_unitario, $unidad_medida, $fecha, $fecha_vencimiento, $id); $stmt->execute(); $mensaje = "✅ Producto actualizado correctamente."; } else { // Insertar nuevo producto $stmt = $conn->prepare("INSERT INTO productos (nombre, codigo, stock_inicial, precio_unitario, unidad_medida, fecha_creacion, fecha_vencimiento) VALUES (?, ?, ?, ?, ?, ?, ?)"); $stmt->bind_param("ssidsss", $nombre, $codigo, $stock_inicial, $precio_unitario, $unidad_medida, $fecha, $fecha_vencimiento); $producto_id = $conn->insert_id; // Obtener el ID recién insertado $stmt->execute(); $mensaje = "✅ Producto agregado correctamente."; $stmt = $conn->prepare("INSERT INTO movimientos (producto_id, tipo, cantidad, fecha, precio_unitario) VALUES (?, 'entrada', ?, ?, ?)"); $stmt->bind_param("isss", $producto_id, $stock_inicial, $fecha, $precio_unitario); $stmt->execute(); } } } ?>