62 lines
2.2 KiB
PHP
62 lines
2.2 KiB
PHP
<?php
|
|
session_start();
|
|
|
|
if (!isset($_SESSION["user_id"])) {
|
|
header("Location: auth/login.php");
|
|
exit();
|
|
}
|
|
|
|
require_once 'db/config.php';
|
|
|
|
$product_id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
|
|
|
|
if ($product_id > 0) {
|
|
$pdo = db();
|
|
try {
|
|
// 1. Verificar si hay movimientos asociados
|
|
$sql_check = "SELECT COUNT(*) FROM movimientos WHERE producto_id = ?";
|
|
$stmt_check = $pdo->prepare($sql_check);
|
|
$stmt_check->execute([$product_id]);
|
|
$movement_count = $stmt_check->fetchColumn();
|
|
|
|
if ($movement_count > 0) {
|
|
// Si hay movimientos, no permitir eliminar y mostrar un error amigable
|
|
$_SESSION['error_message'] = "No se puede eliminar: este producto ya tiene un historial de entradas y salidas.";
|
|
} else {
|
|
// Si no hay movimientos, proceder con la eliminación
|
|
$pdo->beginTransaction();
|
|
|
|
// Primero, eliminar el stock asociado (si existe)
|
|
$sql_stock = "DELETE FROM stock_por_ciudad WHERE producto_id = ?";
|
|
$stmt_stock = $pdo->prepare($sql_stock);
|
|
$stmt_stock->execute([$product_id]);
|
|
|
|
// Luego, eliminar el producto
|
|
$sql_product = "DELETE FROM productos WHERE id = ?";
|
|
$stmt_product = $pdo->prepare($sql_product);
|
|
$stmt_product->execute([$product_id]);
|
|
|
|
if ($stmt_product->rowCount() > 0) {
|
|
$pdo->commit();
|
|
$_SESSION['success_message'] = "Producto eliminado correctamente.";
|
|
} else {
|
|
$pdo->rollBack();
|
|
$_SESSION['error_message'] = "El producto no pudo ser encontrado o ya fue eliminado.";
|
|
}
|
|
}
|
|
} catch (PDOException $e) {
|
|
if ($pdo->inTransaction()) {
|
|
$pdo->rollBack();
|
|
}
|
|
// Ocultamos el mensaje técnico y mostramos uno más amigable
|
|
$_SESSION['error_message'] = "Ocurrió un error al intentar eliminar el producto. Por favor, inténtalo de nuevo.";
|
|
// Opcional: podrías loggear el error real para depuración
|
|
// error_log("Error al eliminar producto: " . $e->getMessage());
|
|
}
|
|
} else {
|
|
$_SESSION['error_message'] = "ID de producto no válido.";
|
|
}
|
|
|
|
header("Location: productos.php");
|
|
exit();
|
|
?>
|