64 ACTUALIZAR LA CANTIDAD DEL ALMACEN DE INVENTARIO en el SISTEMA DE VENTAS (PHPyMySql)FullStack

Duración: 9 min
Módulo: 💰 Implementación y Registro del Módulo de Compras Lección 16 de 17

Descripción

Lección 64: Actualización del Inventario de Almacén (UPDATE SQL) 📦⬆️

Esta lección aborda el paso final y crucial del registro de compras: actualizar la cantidad total de stock del producto en la tabla almacen para reflejar la mercancía recién comprada.

1. Extracción del Stock Total de la Vista 🖥️

Primero se corrige el envío de datos desde la vista para incluir el valor final del stock:

  • Identificación del Stock Total: En la vista de creación de compras (create.php), el campo que contiene la suma del stock actual más la cantidad comprada ya tiene el ID stock_total [04:27].
  • Envío por AJAX: Se modifica el script de AJAX para recuperar y enviar este valor (stock_total) al controlador de PHP, junto con el resto de las variables de la compra [05:54].
  • Recepción en el Controlador: En el controlador (create.php), se crea la variable $stock_total para recibir este dato crucial a través de $_GET [06:28].

2. Implementación de la Sentencia UPDATE SQL 🔄

Para resolver el problema de inventario (donde el stock no se actualizaba), se añade una segunda sentencia SQL dentro del controlador, que se ejecuta inmediatamente después del INSERT de la compra:

  • Sentencia UPDATE:

    SQL

    UPDATE almacen SET stock = ? WHERE ID_producto = ?

  • Explicación: Esta sentencia tiene como objetivo:
    1. UPDATE almacen: Modificar la tabla de inventario.
    2. SET stock = ?: Establecer el nuevo valor de stock (usando el $stock_total recibido) [03:19].
    3. WHERE ID_producto = ?: Aplicar este cambio solo al producto que se acaba de comprar (usando el $ID_producto recibido) [03:29].
  • Ejecución: Se prepara la nueva sentencia con prepare, se pasan los parámetros ($stock_total y $ID_producto), y se ejecuta con execute [06:56].

3. Uso de Transacciones (PDO) 🛡️

Para asegurar la integridad de la base de datos cuando se ejecutan múltiples consultas (en este caso, un INSERT y un UPDATE):

  • Transacción: Se utiliza el concepto de transacción con la extensión PDO para manejar las dos consultas como una sola operación atómica [07:47].
  • Comandos Clave:
    • $pdo->beginTransaction(): Inicia la transición. Si alguna consulta falla, la transacción puede deshacerse.
    • $pdo->commit(): Si ambas consultas (insertar compra y actualizar stock) se ejecutan sin errores, se guardan los cambios permanentemente en la base de datos [08:44].
    • $pdo->rollBack(): Si alguna de las consultas falla, se deshacen todos los cambios que se hayan intentado realizar, manteniendo la base de datos en su estado original antes de la operación [08:52].

Al implementar esta lógica de transacción, se garantiza que no haya registros de compra sin la correspondiente actualización de inventario, asegurando la consistencia de los datos.