DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`Cajas_Saldo_Detalle`() BEGIN Select Proveedores.Id_Proveedor, Proveedor, Fecha, round(Importe) as Importe from Proveedores join ( select Fecha, sub.Id_Proveedor, sum(Importe) as Importe from ( select round(sum(Importe),2) as Importe, TIMESTAMPADD(DAY,-1,util.VN_CURDATE()) as Fecha, Id_Proveedor from pago join Proveedores using(Id_Proveedor) where Fecha >= '2011-01-01' and Id_Proveedor NOT IN (select id from empresa) group by Id_Proveedor union all select IFNULL(-1 * round(sum(rv.Cantidad / if(Id_Moneda = 2,rate,1)),2),0) AS Vto, TIMESTAMPADD(DAY,-1,util.VN_CURDATE()), proveedor_id from recibida_vencimiento rv join recibida r on r.id = rv.recibida_id join reference_rate rr on rr.`date` = rv.fecha join Proveedores P on P.Id_Proveedor = r.proveedor_id join Paises PS on PS.Id = P.pais_id where rv.fecha between '2011-01-01' and util.VN_CURDATE()-1 and Id_Proveedor NOT IN (select id from empresa) group by proveedor_id union all select -1 * round(rv.Cantidad / if(Id_Moneda = 2,(SELECT value FROM vn.referenceRate ORDER BY dated DESC LIMIT 1),1),2) AS Vto, rv.fecha, proveedor_id from recibida_vencimiento rv join recibida r on r.id = rv.recibida_id join Proveedores P on P.Id_Proveedor = r.proveedor_id join Paises PS on PS.Id = P.pais_id where rv.fecha >= util.VN_CURDATE() and Id_Proveedor NOT IN (select id from empresa) union all select @remesas:= @pago:= @saldo:= 0.0000, util.VN_CURDATE(), @prov:= 0) sub group by Fecha,Id_Proveedor ) sub2 using(Id_Proveedor) having Importe < -100 ; END$$ DELIMITER ;