DROP PROCEDURE IF EXISTS parecarga; DELIMITER $$ CREATE PROCEDURE parecarga(pid_usuario int, pid_cliente int, ptipo varchar(50), pmonto_total float, pfecha_efectuada varchar(10), phora_efectuada varchar(5), pfecha_expiracion varchar(10), pid_evento int, pid_empresa int, pid_transaccion int) BEGIN declare saldoAnterior float default 0; declare saldoActualPositivo float default 0; declare saldoActualGastadoPropina float default 0; declare saldoActualGastadoCompra float default 0; declare id_insertado int default 0; declare saldoNuevo float default 0; SELECT SUM(monto_total) INTO saldoActualPositivo FROM transaccion WHERE id_cliente = pid_cliente AND (tipo='Recarga' || tipo='Promocional') ; SELECT SUM(monto_total) INTO saldoActualGastadoPropina FROM transaccion WHERE id_cliente = pid_cliente AND (tipo='Propina') ; SELECT SUM(ep.precio_mostrador*pt.cantidad) INTO saldoActualGastadoCompra FROM transaccion t INNER JOIN producto_transaccion pt on(t.id=pt.id_transaccion) INNER JOIN evento_prod ep on(ep.id=pt.id_producto) WHERE t.id_cliente = pid_cliente AND (t.tipo='Compra') ; SET saldoAnterior = saldoActualPositivo-saldoActualGastadoPropina-saldoActualGastadoCompra; INSERT INTO `transaccion`( `id_usuario`, `id_cliente`, `tipo`, `monto_total`, `fecha_efectuada`, `hora_efectuada`, `fecha_expiracion`, `id_evento`, `id_empresa`, `id_transaccion`) VALUES ( pid_usuario, pid_cliente, ptipo, pmonto_total, pfecha_efectuada, phora_efectuada, pfecha_expiracion, pid_evento, pid_empresa, pid_transaccion); SET saldoNuevo = saldoAnterior+pmonto_total; SET id_insertado =LAST_INSERT_ID(); select saldoAnterior,saldoNuevo; END$$ CALL parecarga( 1, 6, 'Recarga', 1000, '2019-02-12', '10:25', '2019-02-15', 2, 1, 0);