← Volver al portfolio

Bases de datos · Proyecto 03

Automatización de pedidos y stock

La lógica de negocio vive en la base de datos: cada pedido descuenta stock, deja rastro en la auditoría y, si un producto baja del mínimo, genera sola la orden de compra al proveedor. Sin intervención manual.

Rol
Diseño de BD y automatización
Stack
SQL · PL/SQL · Oracle (demo en SQLite/WASM)
Tipo
Demo interactiva

ⓘ Datos ficticios · motor SQL real (SQLite) ejecutándose en tu navegador.

Arrancando el motor SQL…

Se descarga SQLite compilado a WebAssembly (~650 KB) y se crean las tablas, los triggers y los datos de ejemplo.

  1. Descargando sql-wasm.js
  2. Compilando WebAssembly
  3. Creando tablas, triggers y datos
Pruébalo tú

Consola SQL

Lanza cualquier consulta contra la base de datos de la demo. Si modificas datos, los triggers se disparan igual y los paneles de arriba se actualizan.

Ctrl + Enter para ejecutar · resultados limitados a 200 filas

Esperando al motor SQL…

Cómo funciona

1

Entra un pedido

La aplicación solo hace dos INSERT: la cabecera en pedidos y sus líneas en lineas_pedido, dentro de una transacción. Si una línea no tiene stock, un trigger BEFORE INSERT lanza un error y se deshace todo el pedido.

2

Los triggers actualizan stock y log

Por cada línea, un trigger AFTER INSERT descuenta el stock y suma el importe al pedido. Cada cambio de stock dispara a su vez otro trigger que escribe una fila en auditoria: trazabilidad completa sin depender del código de la app.

3

Reposición automática y cierre diario

Si el stock cae por debajo del mínimo, se crea una orden de compra al proveedor por la cantidad necesaria hasta el máximo (solo una pendiente por producto). Al final del día, el cierre resume ventas y alertas y cierra los pedidos; en Oracle lo lanza un job de DBMS_SCHEDULER.

Código destacado

La demo ejecuta SQLite en tu navegador (compilado a WebAssembly con sql.js) para que puedas tocarla sin servidor. En producción, la misma lógica se implementa en Oracle con PL/SQL: triggers FOR EACH ROW con bloqueo de fila, un procedimiento cierre_diario con cursor y manejo de excepciones, auditoría en transacción autónoma y un job programado. Abajo tienes ambas versiones.

oracle_plsql.sql