1ra Versión
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
SELECT SUM(p.Precio_Venta * vp.Cantidad) AS Ingreso_Bruto_Total
|
||||
FROM ventas_productos vp
|
||||
JOIN productos p ON vp.ID_Producto = p.ID_Producto;
|
||||
|
||||
SELECT SUM(p.Precio_Compra * vp.Cantidad) AS Costo_Total
|
||||
FROM ventas_productos vp
|
||||
JOIN productos p ON vp.ID_Producto = p.ID_Producto;
|
||||
|
||||
SELECT SUM((p.Precio_Venta - p.Precio_Compra) * vp.Cantidad) AS Ganancia_Bruta
|
||||
FROM ventas_productos vp
|
||||
JOIN productos p ON vp.ID_Producto = p.ID_Producto;
|
||||
|
||||
SELECT
|
||||
v.Fecha,
|
||||
SUM(p.Precio_Venta * vp.Cantidad) AS Ingreso_Bruto,
|
||||
SUM(p.Precio_Compra * vp.Cantidad) AS Costo,
|
||||
SUM((p.Precio_Venta - p.Precio_Compra) * vp.Cantidad) AS Ganancia_Bruta
|
||||
FROM ventas v
|
||||
JOIN ventas_productos vp ON v.ID_Venta = vp.ID_Venta
|
||||
JOIN productos p ON vp.ID_Producto = p.ID_Producto
|
||||
GROUP BY v.Fecha
|
||||
ORDER BY v.Fecha DESC;
|
||||
|
||||
SELECT
|
||||
DATE_FORMAT(v.Fecha, '%Y-%m') AS Mes,
|
||||
SUM(p.Precio_Venta * vp.Cantidad) AS Ingreso_Bruto,
|
||||
SUM(p.Precio_Compra * vp.Cantidad) AS Costo,
|
||||
SUM((p.Precio_Venta - p.Precio_Compra) * vp.Cantidad) AS Ganancia_Bruta
|
||||
FROM ventas v
|
||||
JOIN ventas_productos vp ON v.ID_Venta = vp.ID_Venta
|
||||
JOIN productos p ON vp.ID_Producto = p.ID_Producto
|
||||
GROUP BY Mes
|
||||
ORDER BY Mes DESC;
|
||||
|
||||
SELECT
|
||||
g.Periodo_Desde,
|
||||
g.Periodo_Hasta,
|
||||
COALESCE(ingresos.Mes, DATE_FORMAT(g.Periodo_Desde, '%Y-%m')) AS Mes,
|
||||
COALESCE(ingresos.Ingreso_Bruto, 0) AS Ingreso_Bruto,
|
||||
COALESCE(ingresos.Costo, 0) AS Costo,
|
||||
COALESCE(ingresos.Ganancia_Bruta, 0) AS Ganancia_Bruta,
|
||||
(g.Sueldo + g.Luz + g.Agua + g.Impuestos) AS Gastos_Totales,
|
||||
COALESCE(ingresos.Ganancia_Bruta, 0) - (g.Sueldo + g.Luz + g.Agua + g.Impuestos) AS Ganancia_Neta
|
||||
FROM gastos g
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
DATE_FORMAT(v.Fecha, '%Y-%m') AS Mes,
|
||||
MIN(v.Fecha) AS Periodo_Desde,
|
||||
MAX(v.Fecha) AS Periodo_Hasta,
|
||||
SUM(p.Precio_Venta * vp.Cantidad) AS Ingreso_Bruto,
|
||||
SUM(p.Precio_Compra * vp.Cantidad) AS Costo,
|
||||
SUM((p.Precio_Venta - p.Precio_Compra) * vp.Cantidad) AS Ganancia_Bruta
|
||||
FROM ventas v
|
||||
JOIN ventas_productos vp ON v.ID_Venta = vp.ID_Venta
|
||||
JOIN productos p ON vp.ID_Producto = p.ID_Producto
|
||||
GROUP BY Mes
|
||||
) ingresos
|
||||
ON g.Periodo_Desde <= ingresos.Periodo_Hasta
|
||||
AND (g.Periodo_Hasta IS NULL OR g.Periodo_Hasta >= ingresos.Periodo_Desde)
|
||||
ORDER BY ingresos.Mes DESC, g.Periodo_Desde;
|
||||
@@ -0,0 +1,234 @@
|
||||
INSERT INTO proveedores (ID_Proveedor, Telefono, Nombre) VALUES
|
||||
(1, '+54-11-1111-1111', 'AG Export'),
|
||||
(2, '+54-11-2222-2222', 'Gastro Service'),
|
||||
(3, '+54-11-3333-3333', 'Freixenet'),
|
||||
(4, '+54-11-4444-4444', 'Supper Foods'),
|
||||
(5, '+54-11-5555-5555', 'Bebidas Buenos Aires');
|
||||
|
||||
INSERT INTO usuarios (ID_Usuario, DNI, Usuario, `Contraseña`, Rol, Nombre, Apellido, Correo, Telefono) VALUES
|
||||
(1, '11111111', 'juanp', 'admin', 'admin', 'Juan', 'Pérez', 'juanp@example.com', '+54-9-351-111-111'),
|
||||
(2, '22222222', 'mariag', 'cancha', 'cancha', 'María', 'Gómez', 'mariag@example.com', '+54-9-351-222-222'),
|
||||
(3, '33333333', 'carlosl', 'cantina', 'cantina', 'Carlos', 'López', 'carlosl@example.com', '+54-9-351-333-333'),
|
||||
(4, '44444444', 'laurac', 'cantina', 'cantina', 'Laura', 'Castaño', 'laurac@example.com', '+54-9-351-444-555'),
|
||||
(5, '55555555', 'robert', 'admin', 'admin', 'Roberto', 'Molina', 'robert@example.com', '+54-9-351-666-777');
|
||||
|
||||
INSERT INTO productos (ID_Producto, Precio_Venta, Precio_Compra, Descripcion, Stock_Disponible) VALUES
|
||||
(1, 2000.00, 1500.00, 'Coca-Cola 500ml', 100),
|
||||
(2, 2500.00, 2000.00, 'Pritty 3l', 50),
|
||||
(3, 1600.00, 1100.00, 'Quilmes Clasica Lata', 80),
|
||||
(4, 1200.00, 1000.00, 'Corona Extra Rubia Lata', 10),
|
||||
(5, 1500.00, 1200.00, 'Pepsi 500ml', 200),
|
||||
(6, 500.00, 250.00, 'Sprite 250ml', 90),
|
||||
(7, 1800.00, 1200.00, 'Fanta 600ml', 180),
|
||||
(8, 1000.00, 600.00, 'Agua Mineral 600ml', 220),
|
||||
(9, 1700.00, 1300.00, 'Heineken Lata', 70),
|
||||
(10, 1400.00, 900.00, 'Schweppes Tonica 500ml', 130),
|
||||
(11, 1900.00, 1100.00, 'Agua Tónica 330ml', 140),
|
||||
(12, 1700.00, 1000.00, 'Jugo de Naranja 500ml', 90),
|
||||
(13, 1300.00, 700.00, 'Alfajor Doble', 75),
|
||||
(14, 2800.00, 1700.00, 'Hamburguesa con Queso', 55),
|
||||
(15, 900.00, 500.00, 'Empanada de Carne', 120);
|
||||
|
||||
INSERT INTO proveedores_productos (ID_Proveedor, ID_Producto) VALUES
|
||||
(1, 1),
|
||||
(1, 2),
|
||||
(1, 5),
|
||||
(2, 3),
|
||||
(2, 6),
|
||||
(2, 12),
|
||||
(3, 4),
|
||||
(3, 9),
|
||||
(3, 13),
|
||||
(4, 10),
|
||||
(4, 11),
|
||||
(4, 14),
|
||||
(5, 7),
|
||||
(5, 8),
|
||||
(5, 15);
|
||||
|
||||
INSERT INTO clientes (ID_Cliente, DNI, Nombre, Telefono) VALUES
|
||||
(1, '44444444', 'Lucas Díaz', '+54-9-351-444-444'),
|
||||
(2, '55555555', 'Carla Romero', '+54-9-351-555-555'),
|
||||
(3, '66666666', 'Diego Suárez', '+54-9-351-666-666'),
|
||||
(4, '77777777', 'Matías Suárez', '+54-9-351-777-777'),
|
||||
(5, '88888888', 'Sofía Martínez', '+54-9-351-888-888'),
|
||||
(6, '99999999', 'Josefa Aguirre', '+54-9-351-999-999'),
|
||||
(7, '10101010', 'Valeria Ríos', '+54-9-351-101-010'),
|
||||
(8, '12121212', 'Marcos Alcántara', '+54-9-351-121-212'),
|
||||
(9, '13131313', 'Nadia Funes', '+54-9-351-131-313'),
|
||||
(10, '14141414', 'Hernán Ortiz', '+54-9-351-141-414'),
|
||||
(11, '15151515', 'Jimena Paredes', '+54-9-351-151-515'),
|
||||
(12, '16161616', 'Pablo Duarte', '+54-9-351-161-616');
|
||||
|
||||
INSERT INTO cupones (ID_Cupon, Cantidad_Reservas, Cantidad_Faltas, Tipo, Ultima_Fecha, Descuento, ID_Cliente) VALUES
|
||||
(1, 5, 0, 'F', '2026-06-01 10:00:00', 0.10, 1),
|
||||
(2, 3, 1, 'P', '2026-06-05 12:00:00', 0.05, 2),
|
||||
(3, 1, 0, 'F', '2026-06-08 17:00:00', 0.08, 3),
|
||||
(4, 4, 0, 'P', '2026-06-10 14:00:00', 0.12, 4),
|
||||
(5, 2, 0, 'F', '2026-06-12 09:00:00', 0.07, 5),
|
||||
(6, 6, 1, 'P', '2026-06-15 20:00:00', 0.15, 6),
|
||||
(7, 5, 0, 'F', '2026-06-18 19:00:00', 0.10, 7),
|
||||
(8, 4, 0, 'P', '2026-06-20 16:30:00', 0.12, 8);
|
||||
|
||||
INSERT INTO canchas (ID_Cancha, Tipo, Precio, Duracion, Cant_Canchas, Cant_Reservas_Cupon, Descuento_Cupon, Cant_Faltas, Duracion_Cupon) VALUES
|
||||
(1, 'F', 3000.00, 60, 2, 5, 0.25, 2, 7),
|
||||
(2, 'P', 2500.00, 60, 2, 5, 0.20, 2, 7),
|
||||
(3, 'Q', 1500.00, 120, 1, 0, 0.00, 0, 0);
|
||||
|
||||
INSERT INTO horarios (Dia, Hora_Apertura, Hora_Cierre) VALUES
|
||||
('Lunes a Viernes', '08:00:00', '23:00:00'),
|
||||
('Sábado', '09:00:00', '22:00:00'),
|
||||
('Domingo', '09:00:00', '22:00:00');
|
||||
|
||||
INSERT INTO gastos (Periodo_Desde, Periodo_Hasta, Sueldo, Luz, Agua, Impuestos) VALUES
|
||||
('2026-04-01', '2026-04-30', 250000, 32000, 12000, 10500),
|
||||
('2026-05-01', '2026-05-31', 270000, 35000, 13000, 11000),
|
||||
('2026-06-01', '2026-06-29', 285000, 38000, 14000, 11500);
|
||||
|
||||
INSERT INTO alertas_stock (ID_Producto, Mensaje) VALUES
|
||||
(4, 'Stock reducido a 9 unidades.'),
|
||||
(9, 'Stock reducido a 7 unidades.'),
|
||||
(13, 'Stock bajo para producto de almacén.'),
|
||||
(15, 'Stock crítico en empanadas. Reponer pronto.');
|
||||
|
||||
INSERT INTO ventas (ID_Venta, Fecha, Monto, ID_Usuario) VALUES
|
||||
(1, '2026-06-01 10:15:00', 12500.00, 2),
|
||||
(2, '2026-06-02 12:30:00', 8700.00, 2),
|
||||
(3, '2026-06-04 15:45:00', 15400.00, 2),
|
||||
(4, '2026-06-06 13:20:00', 10250.00, 2),
|
||||
(5, '2026-06-08 17:05:00', 13600.00, 2),
|
||||
(6, '2026-06-10 19:10:00', 9400.00, 2),
|
||||
(7, '2026-06-12 09:35:00', 11200.00, 1),
|
||||
(8, '2026-06-14 16:00:00', 7600.00, 2),
|
||||
(9, '2026-06-16 22:15:00', 13300.00, 1),
|
||||
(10, '2026-06-18 18:45:00', 11850.00, 1),
|
||||
(11, '2026-06-20 14:00:00', 9800.00, 2),
|
||||
(12, '2026-06-22 20:30:00', 14700.00, 2),
|
||||
(13, '2026-06-24 11:20:00', 8200.00, 2),
|
||||
(14, '2026-06-25 13:30:00', 7500.00, 2),
|
||||
(15, '2026-06-26 17:40:00', 16600.00, 1),
|
||||
(16, '2026-06-27 18:25:00', 13200.00, 2),
|
||||
(17, '2026-06-28 16:50:00', 10150.00, 2),
|
||||
(18, '2026-06-29 11:05:00', 8900.00, 1),
|
||||
(19, '2026-06-30 12:40:00', 9400.00, 5),
|
||||
(20, '2026-06-30 18:15:00', 12000.00, 4),
|
||||
(21, '2026-06-30 20:30:00', 13200.00, 4),
|
||||
(22, '2026-06-30 21:15:00', 8700.00, 5);
|
||||
|
||||
INSERT INTO ordenes_compra (ID_Orden, ID_Proveedor, ID_Usuario, Fecha) VALUES
|
||||
(1, 1, 2, '2026-06-01 09:00:00'),
|
||||
(2, 2, 2, '2026-06-03 10:30:00'),
|
||||
(3, 3, 2, '2026-06-05 08:45:00'),
|
||||
(4, 1, 2, '2026-06-07 09:15:00'),
|
||||
(5, 2, 2, '2026-06-09 11:00:00'),
|
||||
(6, 3, 2, '2026-06-11 08:30:00'),
|
||||
(7, 1, 2, '2026-06-13 12:00:00'),
|
||||
(8, 2, 2, '2026-06-15 09:45:00'),
|
||||
(9, 3, 2, '2026-06-17 10:20:00'),
|
||||
(10, 1, 2, '2026-06-19 12:15:00'),
|
||||
(11, 4, 2, '2026-06-21 09:05:00'),
|
||||
(12, 5, 4, '2026-06-23 10:15:00'),
|
||||
(13, 4, 4, '2026-06-24 08:50:00'),
|
||||
(14, 5, 2, '2026-06-25 11:30:00');
|
||||
|
||||
INSERT INTO reservas (ID_Reserva, Fecha_Hora, Monto, Numero, Estado, ID_Cliente, ID_Cancha, ID_Usuario) VALUES
|
||||
(1, '2026-06-01 18:00:00', 3000.00, 1, 1, 1, 1, 3),
|
||||
(2, '2026-06-02 19:00:00', 2500.00, 1, 1, 2, 2, 3),
|
||||
(3, '2026-06-03 20:00:00', 3000.00, 2, 1, 3, 1, 3),
|
||||
(4, '2026-06-04 17:00:00', 2500.00, 2, 1, 1, 2, 3),
|
||||
(5, '2026-06-05 17:00:00', 1500.00, 1, 1, 2, 3, 3),
|
||||
(6, '2026-06-06 16:30:00', 3000.00, 1, 1, 1, 1, 1),
|
||||
(7, '2026-06-07 18:30:00', 2500.00, 2, 1, 3, 2, 3),
|
||||
(8, '2026-06-08 17:30:00', 3000.00, 1, 1, 2, 1, 3),
|
||||
(9, '2026-06-09 17:30:00', 1500.00, 1, 1, 3, 3, 3),
|
||||
(10, '2026-06-10 19:30:00', 2500.00, 1, 1, 1, 2, 1),
|
||||
(11, '2026-06-11 18:00:00', 3000.00, 2, 1, 2, 1, 3),
|
||||
(12, '2026-06-12 21:00:00', 1500.00, 1, 1, 3, 3, 1),
|
||||
(13, '2026-06-13 16:00:00', 2500.00, 1, 1, 1, 2, 3),
|
||||
(14, '2026-06-14 20:30:00', 3000.00, 2, 1, 2, 1, 3),
|
||||
(15, '2026-06-15 18:45:00', 1500.00, 1, 1, 3, 3, 3),
|
||||
(16, '2026-06-16 17:00:00', 2800.00, 1, 2, 4, 2, 3),
|
||||
(17, '2026-06-17 19:15:00', 2200.00, 2, 1, 5, 1, 3),
|
||||
(18, '2026-06-18 15:30:00', 3200.00, 1, 1, 6, 1, 3),
|
||||
(19, '2026-06-20 18:45:00', 3000.00, 2, 1, 4, 2, 3),
|
||||
(20, '2026-06-22 16:20:00', 1700.00, 1, 1, 5, 2, 3),
|
||||
(21, '2026-06-23 19:00:00', 1500.00, 1, 1, 8, 3, 3),
|
||||
(22, '2026-06-24 20:00:00', 1500.00, 1, 0, 9, 3, 3),
|
||||
(23, '2026-06-25 19:30:00', 1500.00, 1, 1, 10, 3, 1),
|
||||
(24, '2026-06-26 21:00:00', 1500.00, 1, 2, 11, 3, 1);
|
||||
|
||||
INSERT INTO ordenes_productos (ID_Orden, ID_Producto, Cantidad) VALUES
|
||||
(1, 1, 50),
|
||||
(1, 4, 10),
|
||||
(2, 2, 30),
|
||||
(2, 5, 100),
|
||||
(3, 3, 60),
|
||||
(3, 6, 80),
|
||||
(4, 1, 40),
|
||||
(4, 3, 35),
|
||||
(5, 2, 25),
|
||||
(5, 6, 50),
|
||||
(6, 4, 18),
|
||||
(6, 5, 70),
|
||||
(7, 1, 30),
|
||||
(7, 2, 20),
|
||||
(8, 3, 45),
|
||||
(8, 6, 60),
|
||||
(9, 7, 60),
|
||||
(9, 8, 40),
|
||||
(10, 9, 20),
|
||||
(10, 10, 30),
|
||||
(11, 11, 20),
|
||||
(11, 13, 25),
|
||||
(12, 12, 30),
|
||||
(12, 14, 15),
|
||||
(13, 1, 40),
|
||||
(13, 15, 50),
|
||||
(14, 5, 40),
|
||||
(14, 8, 70);
|
||||
|
||||
INSERT INTO ventas_productos (ID_Venta, ID_Producto, Cantidad) VALUES
|
||||
(1, 1, 12),
|
||||
(1, 2, 5),
|
||||
(2, 3, 8),
|
||||
(2, 5, 10),
|
||||
(3, 4, 5),
|
||||
(3, 6, 7),
|
||||
(4, 1, 8),
|
||||
(4, 3, 7),
|
||||
(5, 2, 6),
|
||||
(5, 5, 14),
|
||||
(6, 4, 3),
|
||||
(6, 6, 10),
|
||||
(7, 1, 10),
|
||||
(7, 2, 4),
|
||||
(8, 3, 9),
|
||||
(8, 5, 11),
|
||||
(9, 6, 15),
|
||||
(9, 7, 8),
|
||||
(10, 2, 7),
|
||||
(10, 4, 2),
|
||||
(11, 3, 12),
|
||||
(11, 5, 9),
|
||||
(12, 1, 11),
|
||||
(12, 6, 13),
|
||||
(13, 7, 10),
|
||||
(13, 8, 6),
|
||||
(14, 9, 8),
|
||||
(14, 5, 7),
|
||||
(15, 10, 6),
|
||||
(15, 1, 4),
|
||||
(16, 2, 8),
|
||||
(16, 4, 9),
|
||||
(17, 3, 4),
|
||||
(17, 9, 5),
|
||||
(18, 5, 10),
|
||||
(18, 8, 7),
|
||||
(19, 11, 10),
|
||||
(19, 13, 5),
|
||||
(20, 12, 12),
|
||||
(20, 14, 6),
|
||||
(21, 15, 15),
|
||||
(21, 8, 10),
|
||||
(22, 1, 9),
|
||||
(22, 11, 8);
|
||||
+137
@@ -0,0 +1,137 @@
|
||||
CREATE TABLE proveedores (
|
||||
ID_Proveedor INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
Telefono VARCHAR(20),
|
||||
Nombre VARCHAR(20)
|
||||
);
|
||||
|
||||
CREATE TABLE usuarios (
|
||||
ID_Usuario INT AUTO_INCREMENT PRIMARY KEY,
|
||||
Usuario VARCHAR(50) NOT NULL,
|
||||
`Contraseña` VARCHAR(100) NOT NULL,
|
||||
Rol ENUM('admin', 'cancha', 'cantina') NOT NULL,
|
||||
Nombre VARCHAR(50),
|
||||
Apellido VARCHAR(50),
|
||||
DNI VARCHAR(10),
|
||||
Correo VARCHAR(100),
|
||||
Telefono VARCHAR(20)
|
||||
);
|
||||
|
||||
CREATE TABLE ventas (
|
||||
ID_Venta INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
Fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
Monto DECIMAL(10,2) NULL,
|
||||
ID_Usuario INT,
|
||||
CONSTRAINT fk_venta_usuario FOREIGN KEY (ID_Usuario) REFERENCES usuarios(ID_Usuario)
|
||||
);
|
||||
|
||||
CREATE TABLE ordenes_compra (
|
||||
ID_Orden INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
ID_Proveedor INT,
|
||||
ID_Usuario INT,
|
||||
Fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
Estado INT DEFAULT 0, -- 0=Pendiente, 1=Aprobada, 2=Denegada, 3=Confirmada
|
||||
CONSTRAINT fk_oc_proveedor FOREIGN KEY (ID_Proveedor) REFERENCES proveedores(ID_Proveedor),
|
||||
CONSTRAINT fk_oc_usuario FOREIGN KEY (ID_Usuario) REFERENCES usuarios(ID_Usuario)
|
||||
);
|
||||
|
||||
CREATE TABLE productos (
|
||||
ID_Producto INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
Precio_Venta DECIMAL(10,2),
|
||||
Precio_Compra DECIMAL(10,2),
|
||||
Descripcion VARCHAR(100),
|
||||
Stock_Disponible INT,
|
||||
Estado INT DEFAULT TRUE -- 0=Inactivo, 1=Activo
|
||||
);
|
||||
|
||||
CREATE TABLE clientes (
|
||||
ID_Cliente INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
DNI VARCHAR(10),
|
||||
Nombre VARCHAR(50),
|
||||
Telefono VARCHAR(20)
|
||||
);
|
||||
|
||||
CREATE TABLE gastos (
|
||||
ID_Gasto INT AUTO_INCREMENT PRIMARY KEY,
|
||||
Periodo_Desde DATE NOT NULL,
|
||||
Periodo_Hasta DATE DEFAULT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE ordenes_productos (
|
||||
ID_Orden INT NOT NULL,
|
||||
ID_Producto INT NOT NULL,
|
||||
Cantidad INT,
|
||||
PRIMARY KEY (ID_Orden, ID_Producto),
|
||||
CONSTRAINT fk_op_orden FOREIGN KEY (ID_Orden) REFERENCES ordenes_compra(ID_Orden),
|
||||
CONSTRAINT fk_op_producto FOREIGN KEY (ID_Producto) REFERENCES productos(ID_Producto)
|
||||
);
|
||||
|
||||
CREATE TABLE ventas_productos (
|
||||
ID_Venta INT NOT NULL,
|
||||
ID_Producto INT NOT NULL,
|
||||
Cantidad INT,
|
||||
PRIMARY KEY (ID_Venta, ID_Producto),
|
||||
CONSTRAINT fk_vp_venta FOREIGN KEY (ID_Venta) REFERENCES ventas(ID_Venta),
|
||||
CONSTRAINT fk_vp_producto FOREIGN KEY (ID_Producto) REFERENCES productos(ID_Producto)
|
||||
);
|
||||
|
||||
CREATE TABLE proveedores_productos (
|
||||
ID_Proveedor INT NOT NULL,
|
||||
ID_Producto INT NOT NULL,
|
||||
PRIMARY KEY (ID_Proveedor, ID_Producto),
|
||||
CONSTRAINT fk_pp_proveedor FOREIGN KEY (ID_Proveedor) REFERENCES proveedores(ID_Proveedor),
|
||||
CONSTRAINT fk_pp_producto FOREIGN KEY (ID_Producto) REFERENCES productos(ID_Producto)
|
||||
);
|
||||
|
||||
CREATE TABLE alertas_stock (
|
||||
ID_Alerta INT AUTO_INCREMENT PRIMARY KEY,
|
||||
ID_Producto INT,
|
||||
Mensaje VARCHAR(255),
|
||||
Fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT fk_alerta_producto FOREIGN KEY (ID_Producto) REFERENCES productos(ID_Producto)
|
||||
);
|
||||
|
||||
CREATE TABLE cupones (
|
||||
ID_Cupon INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
Cantidad_Reservas INT,
|
||||
Cantidad_Faltas INT,
|
||||
Tipo VARCHAR(1),
|
||||
Ultima_Fecha DATETIME,
|
||||
Descuento DECIMAL(4,2),
|
||||
ID_Cliente INT,
|
||||
CONSTRAINT fk_cupon_cliente FOREIGN KEY (ID_Cliente) REFERENCES clientes(ID_Cliente)
|
||||
);
|
||||
|
||||
CREATE TABLE canchas (
|
||||
ID_Cancha INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
Tipo VARCHAR(1), -- F=Futbol, P=Padel, Q=Quincho
|
||||
Precio DECIMAL(10,2),
|
||||
Duracion INT, -- en minutos
|
||||
Cant_Canchas INT,
|
||||
Cant_Reservas_Cupon INT,
|
||||
Descuento_Cupon DECIMAL(4,2),
|
||||
Cant_Faltas INT,
|
||||
Duracion_Cupon INT -- en dias
|
||||
);
|
||||
|
||||
CREATE TABLE reservas (
|
||||
ID_Reserva INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
Fecha_Hora DATETIME,
|
||||
Monto DECIMAL(10,2),
|
||||
Numero INT,
|
||||
Estado INT, -- 0=No Pagado, 1=Pagado, 2=Cancelado
|
||||
Descuento DECIMAL(4,2),
|
||||
Comprobante VARCHAR(255),
|
||||
ID_Cliente INT,
|
||||
ID_Cancha INT,
|
||||
ID_Usuario INT,
|
||||
CONSTRAINT fk_reserva_cliente FOREIGN KEY (ID_Cliente) REFERENCES clientes(ID_Cliente),
|
||||
CONSTRAINT fk_reserva_cancha FOREIGN KEY (ID_Cancha) REFERENCES canchas(ID_Cancha),
|
||||
CONSTRAINT fk_reserva_usuario FOREIGN KEY (ID_Usuario) REFERENCES usuarios(ID_Usuario)
|
||||
);
|
||||
|
||||
CREATE TABLE horarios (
|
||||
ID_Horario INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
Dia ENUM('Lunes a Viernes', 'Sábado', 'Domingo'),
|
||||
Hora_Apertura TIME,
|
||||
Hora_Cierre TIME
|
||||
);
|
||||
@@ -0,0 +1,45 @@
|
||||
SHOW TRIGGERS FROM complejo_cap1tan;
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER alerta_stock_bajo
|
||||
AFTER UPDATE ON productos FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.Stock_Disponible < 10 AND OLD.Stock_Disponible >= 10 THEN
|
||||
INSERT INTO alertas_stock (ID_Producto, Mensaje)
|
||||
VALUES (NEW.ID_Producto, CONCAT('Stock reducido a ', NEW.Stock_Disponible, ' unidades.'));
|
||||
END IF;
|
||||
END;
|
||||
// DELIMITER ;
|
||||
|
||||
-- Setear un producto por debajo de 10
|
||||
-- UPDATE productos SET Stock_Disponible = 100 WHERE ID_Producto = 1;
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER actualizar_stock_venta
|
||||
AFTER INSERT ON ventas_productos FOR EACH ROW
|
||||
BEGIN
|
||||
UPDATE productos
|
||||
SET Stock_Disponible = Stock_Disponible - NEW.Cantidad
|
||||
WHERE ID_Producto = NEW.ID_Producto;
|
||||
END;
|
||||
// DELIMITER ;
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER actualizar_stock_orden_compra
|
||||
AFTER UPDATE ON ordenes_compra FOR EACH ROW
|
||||
BEGIN
|
||||
-- Si la orden cambió a estado aprobado y antes no lo estaba
|
||||
IF NEW.Estado = TRUE AND OLD.Estado = FALSE THEN
|
||||
INSERT INTO alertas_stock (ID_Producto, Mensaje)
|
||||
SELECT op.ID_Producto, CONCAT('Orden de compra aprobada. Se sumaron ', op.Cantidad, ' unidades al stock.')
|
||||
FROM ordenes_productos op
|
||||
WHERE op.ID_Orden = NEW.ID_Orden;
|
||||
|
||||
-- Aumentar el stock
|
||||
UPDATE productos p
|
||||
JOIN ordenes_productos op ON p.ID_Producto = op.ID_Producto
|
||||
SET p.Stock_Disponible = p.Stock_Disponible + op.Cantidad
|
||||
WHERE op.ID_Orden = NEW.ID_Orden;
|
||||
END IF;
|
||||
END;
|
||||
// DELIMITER ;
|
||||
Reference in New Issue
Block a user