34849-vm/registrar_entrada_manual_api.php
2026-02-17 03:13:39 +00:00

63 lines
2.5 KiB
PHP

<?php
header('Content-Type: application/json');
require_once 'db/config.php';
$response = ['success' => false, 'message' => 'Petición inválida.'];
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$sede_id = isset($_POST['sede_id']) ? filter_var($_POST['sede_id'], FILTER_VALIDATE_INT) : null;
$product_id = isset($_POST['product_id']) ? filter_var($_POST['product_id'], FILTER_VALIDATE_INT) : null;
$cantidad = isset($_POST['cantidad']) ? filter_var($_POST['cantidad'], FILTER_VALIDATE_INT) : null;
if (!$sede_id || !$product_id || !$cantidad || $cantidad <= 0) {
$response['message'] = 'Datos inválidos. Por favor, complete todos los campos correctamente.';
echo json_encode($response);
exit;
}
try {
$pdo = db();
$pdo->beginTransaction();
// 1. Actualizar o insertar en stock_sedes
$sql_stock = "INSERT INTO stock_sedes (id_producto, id_sede, cantidad)
VALUES (:product_id, :sede_id, :cantidad)
ON DUPLICATE KEY UPDATE cantidad = cantidad + :cantidad";
$stmt_stock = $pdo->prepare($sql_stock);
$stmt_stock->bindParam(':product_id', $product_id, PDO::PARAM_INT);
$stmt_stock->bindParam(':sede_id', $sede_id, PDO::PARAM_INT);
$stmt_stock->bindParam(':cantidad', $cantidad, PDO::PARAM_INT);
$stmt_stock->execute();
// 2. Registrar el movimiento
$sql_movement = "INSERT INTO stock_movements (product_id, sede_id, tipo_movimiento, cantidad, origen)
VALUES (:product_id, :sede_id, 'entrada', :cantidad, 'manual')";
$stmt_movement = $pdo->prepare($sql_movement);
$stmt_movement->bindParam(':product_id', $product_id, PDO::PARAM_INT);
$stmt_movement->bindParam(':sede_id', $sede_id, PDO::PARAM_INT);
$stmt_movement->bindParam(':cantidad', $cantidad, PDO::PARAM_INT);
$stmt_movement->execute();
$pdo->commit();
$response['success'] = true;
$response['message'] = "Se han añadido {$cantidad} unidades al stock correctamente.";
} catch (PDOException $e) {
if ($pdo->inTransaction()) {
$pdo->rollBack();
}
// Log del error para depuración, no mostrar al usuario final
error_log("Error en registrar_entrada_manual_api.php: " . $e->getMessage());
$response['message'] = 'Error en la base de datos. No se pudo registrar la entrada.';
}
} else {
$response['message'] = 'Método no permitido.';
}
echo json_encode($response);
?>