Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Inserción Masiva a Tablas MySQL v2 */
- delimiter //
- DROP PROCEDURE IF exists VENTAS//
- CREATE PROCEDURE ventas (usuario VARCHAR(30),tarjeta_credito VARCHAR(50), productos VARCHAR(100),
- cantidades VARCHAR(100))
- BEGIN
- /* Detalle_Factura */
- DECLARE vproducto VARCHAR(100);
- DECLARE vcantidad VARCHAR(100);
- DECLARE codproducto VARCHAR(100);
- DECLARE cantidad VARCHAR(100);
- DECLARE total_items int ;
- DECLARE x INT;
- DECLARE cod_usuario INT;
- DECLARE cod_venta INT;
- DECLARE f_actual DATE;
- /* Detalle_Factura */
- SET x = 1;
- SET vproducto = productos;
- SET vcantidad = cantidades;
- SET total_items = LENGTH(vproducto);
- SET f_actual = NOW();
- SELECT codusuario INTO cod_usuario FROM USUARIOS WHERE login=usuario LIMIT 1;
- INSERT INTO ventas(codusuario,t_credito,fecha)values(cod_usuario,tarjeta_credito,f_actual);
- SELECT codventa INTO cod_venta FROM ventas WHERE codusuario=cod_usuario AND fecha=f_actual LIMIT 1;
- WHILE x < total_items DO
- SET codproducto = extraer(vproducto);
- SET vproducto = actualizar(vproducto);
- SET cantidad = extraer(vcantidad);
- SET vcantidad = actualizar(vcantidad);
- IF (codproducto !=0 AND cantidad !=0) THEN
- INSERT INTO detalle_venta values(cod_venta,codproducto,cantidad);
- END IF;
- SET x = x + 1;
- END WHILE;
- END//
- delimiter ;
- call ventas('geofox','1234567890','5;6;7;8;','5;10;4;1;');
- /* by choco */
- /* Trigger Inicializar Total Envios */
- delimiter //
- DROP TRIGGER IF exists INIT_TOTAL//
- CREATE TRIGGER INIT_TOTAL AFTER INSERT ON ventas
- FOR EACH ROW
- BEGIN
- DECLARE f_actual DATE;
- DECLARE estado varchar(20);
- DECLARE total DECIMAL(8,2);
- SET f_actual = NOW();
- SET estado = "Pendiente"; /* de Confirmación */
- SET total = 0.00;
- INSERT INTO envios values(NEW.codventa,f_actual,estado,total);
- END//
- delimiter ;
- /* by choco */
- /* Trigger Envios Total */
- delimiter //
- DROP TRIGGER IF exists TOTAL_VENTA//
- CREATE TRIGGER TOTAL_VENTA AFTER INSERT ON detalle_venta
- FOR EACH ROW
- BEGIN
- DECLARE precio_p DECIMAL(8,2);
- DECLARE subtotal DECIMAL(8,2);
- DECLARE total_actual DECIMAL(8,2);
- DECLARE total_envio DECIMAL(8,2);
- SELECT precio INTO precio_p FROM PRODUCTO WHERE codproducto= NEW.codproducto;
- SET subtotal = (NEW.cantidad * precio_p);
- SELECT total into total_actual FROM envios WHERE codventa= NEW.codventa;
- SET total_envio = (subtotal + total_actual);
- UPDATE envios SET total=total_envio WHERE codventa= NEW.codventa;
- END//
- delimiter ;
- /* by choco */
Advertisement
Add Comment
Please, Sign In to add comment