114 Borrar productos del CARRITO en el SISTEMA DE VENTAS (PHP y MySql) FullStack

Duración: 14 min
Módulo: 🧾 Cierre de Venta y Control de Inventario Lección 11 de 14

Descripción

Lección 114: Borrar Productos del Carrito y Finalización del DELETE 🛒

Esta lección se enfocó en completar las dos partes restantes de la acción de borrado de una venta dentro de la transacción: la actualización del stock en la tabla de productos y el borrado de los registros en la tabla carrito (detalle de venta).

1. Confirmación y Ejecución de la Actualización de Stock 💾

  1. Ajuste de Tipos de Datos: El video comenzó corrigiendo un error de programación anterior (por el cual el stock se actualizaba automáticamente al copiar la lógica), volviendo a la base de datos a su estado original [01:53]. Luego se reafirmó la importancia de usar la función parseInt en JavaScript/jQuery para asegurar que el stock actual y la cantidad vendida se sumen como números (ej. $94 + 2 = 96$), y no se concatenen como texto (ej. "94" + "2" = "942") [03:38].
  2. Lógica de Reversión: Se confirmó que la lógica para retornar la cantidad al inventario era correcta:

    $$Stock\ Calculado = \text{parseInt}(\text{Stock Actual}) + \text{parseInt}(\text{Cantidad Vendida})$$

  3. Ejecución de UPDATE: Se utilizó la función existente actualizar_stock para enviar el ID_producto y el stock_calculado al backend. Se demostró que, al presionar el botón "Borrar Venta" (antes de implementar la eliminación), los valores en la tabla de almacén se actualizaban correctamente [06:29].

2. Borrado de Registros de Carrito y Venta Principal 🗑️

Una vez que la actualización del inventario funcionaba dentro de la transacción, se pasó a la eliminación de registros:

  1. Borrar Carrito: Se añadió la Sentencia 2 al controlador borrar_venta.php para eliminar el detalle de la venta de la tabla tb_carrito:
    • DELETE FROM carrito WHERE numero_de_venta = :numero_de_venta [08:01].
  2. Borrar Venta Principal: Se mantuvo la Sentencia 1 para eliminar el registro de la tabla tb_ventas [07:03].

Ambas sentencias se ejecutan bajo la transacción (BEGIN TRANSACTION, COMMIT, ROLLBACK), asegurando que si el stock se actualiza, la venta y su detalle también se borren, y viceversa.

3. Corrección de Error Crítico y Solución Final 🐛

Al probar la venta y posterior eliminación, se descubrió un error en el borrado del carrito: la venta en la tabla carrito no se eliminó [11:25].

  • Problema: En el código frontend, solo se estaba enviando el ID_venta (la clave primaria de la tabla tb_ventas) al backend. La tabla tb_carrito se filtra por el numero_de_venta (el número de factura), y estos valores a veces no coinciden con el ID_venta [11:42].
  • Solución: Se corrigió el error en la vista index.php (el listado de ventas) para que, al redirigir a delete.php, se envíen dos variables en la URL:
    1. ID_venta: Para la tabla tb_ventas.
    2. numero_de_venta: Para la tabla tb_carrito [12:20].

Esta corrección garantiza que el controlador borrar_venta.php reciba los datos correctos para eliminar los registros tanto de la tabla tb_ventas como de la tabla tb_carrito.