Esta es una vista previa del archivo. Inicie sesión para ver el archivo original
BEGIN INSERT into sesion (id_sesion, usuario_id_usuario, fecha_inicio) VALUES (DEFAULT, id_user,CURRENT_TIMESTAMP ); END BEGIN UPDATE sesion set fecha_final = CURRENT_TIMESTAMP WHERE usuario_id_usuario = id_user and sesion.id_sesion = (SELECT MAX(id_sesion) FROM sesion); END drop table if EXISTS temporal; CREATE TABLE temporal( id_item integer not null, cantidad integer not null, id_sesion integer not null, id_producto integer not null, id_inventario varchar(255) not null, id_usuario varchar(255) not null, subtotal float not null ); drop PROCEDURE if EXISTS carrito; DELIMITER / CREATE PROCEDURE carrito(in id_user varchar(255)) BEGIN set @subtotal = 0; insert into temporal SELECT car.id_cart_item, car.cantidad, car.id_sesion, car.id_producto, pro.id_inventario, us.id_usuario, @subtotal:=(car.cantidad*precio) as subtotal FROM usuario as us, cart_item as car, producto as pro, sesion, inventario_producto as inv WHERE us.id_usuario = id_user and us.id_usuario=sesion.id_usuario and car.id_sesion=sesion.id_sesion and car.modificado is null and pro.id_producto = car.id_producto and pro.id_inventario = inv.id_inventario; #se obtiene el carrito que no se ha comprado del usuario end/ DELIMITER ; drop PROCEDURE if EXISTS comprar; DELIMITER / CREATE PROCEDURE comprar(in id_user varchar(255)) BEGIN delete FROM temporal; call carrito(id_user); if((SELECT COUNT(*) from temporal) > 0) THEN set @total = (SELECT sum(subtotal) FROM temporal); set @proveedor = (SELECT proveedor FROM usuario, temporal, metodo_pago WHERE usuario.id_usuario = temporal.id_usuario and metodo_pago.id_usuario = usuario.id_usuario group by proveedor); set @id_detalles = CONCAT(round(rand()*10000), ""); set @id_pago = CONCAT(round(rand()*10000), ""); INSERT into detalles_pago(id_detalles_pago, monto, proveedor, estado, fecha_pago) VALUES (@id_pago, @total, @proveedor, "Aprobado", CURRENT_TIMESTAMP); INSERT into detalles_compra(id_compra, id_usuario, id_detalles_pago, total, fecha_compra) VALUES (@id_detalles, id_user, CONCAT(@id_pago, ""), @total, CURRENT_TIMESTAMP); INSERT into productos_compra SELECT CONCAT(round(rand()*10000), ""), @id_detalles, temporal.id_producto, temporal.cantidad FROM temporal; UPDATE cart_item INNER JOIN temporal on cart_item.id_cart_item = temporal.id_item set cart_item.modificado=CURRENT_TIMESTAMP; delete FROM temporal; else SELECT "Carrito vacio"; END IF; end/ DELIMITER ; drop TRIGGER if EXISTS TR_insert; DELIMITER / create TRIGGER TR_insert after INSERT on productos_compra for EACH row BEGIN set @idpro = new.id_producto; set @cantidad = (SELECT cantidad FROM inventario_producto WHERE inventario_producto.id_inventario = (SELECT producto.id_inventario FROM producto WHERE producto.id_producto = @idpro)) - new.cantidad; set @idinv = (SELECT producto.id_inventario FROM producto where producto.id_producto = @idpro); update inventario_producto set inventario_producto.cantidad = @cantidad WHERE inventario_producto.id_inventario=@idinv; end / DELIMITER ;