DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`desglose_volume`(IN vAgencyFk INT) BEGIN DECLARE vStarted DATETIME DEFAULT TIMESTAMP(util.VN_CURDATE()); DECLARE vEnded DATETIME DEFAULT TIMESTAMP(util.VN_CURDATE(), '23:59:59'); DECLARE vIsHolland BOOL; SELECT (wa.name = 'Holanda') INTO vIsHolland FROM vn.agency a JOIN vn.warehouseAlias wa ON wa.id = a.warehouseAliasFk WHERE a.id = vAgencyFk; IF vIsHolland THEN DROP TEMPORARY TABLE IF EXISTS tmp.ticket_PackagingEstimated; CREATE TEMPORARY TABLE tmp.ticket_PackagingEstimated ( ticketFk INT PRIMARY KEY ,carros DECIMAL(5,1) DEFAULT 0 ); INSERT INTO tmp.ticket_PackagingEstimated(ticketFk, carros) SELECT sv.ticketFk, ROUND(vc.dutchCompressionRate * sum(sv.volume) / vc.trolleyM3,0) FROM vn.ticket t JOIN vn.saleVolume sv ON sv.ticketFk = t.id JOIN vn.agencyMode am ON am.id = t.agencyModeFk JOIN vn.volumeConfig vc WHERE t.shipped BETWEEN vStarted AND vEnded AND am.agencyFk = vAgencyFk GROUP BY t.id; SELECT a.nickname Provincia, count(*) expediciones, 0 Bultos, sum(tpe.carros) Prevision FROM vn.ticket t JOIN vn.address a ON a.id = t.addressFk JOIN tmp.ticket_PackagingEstimated tpe ON tpe.ticketFk = t.id GROUP BY a.nickname; ELSE DROP TEMPORARY TABLE IF EXISTS tmp.ticket_PackagingEstimated; CREATE TEMPORARY TABLE tmp.ticket_PackagingEstimated ( ticketFk INT PRIMARY KEY ,boxes INT DEFAULT 0 ); INSERT INTO tmp.ticket_PackagingEstimated(ticketFk, boxes) SELECT sv.ticketFk, CEIL(1000 * sum(sv.volume) / vc.standardFlowerBox) FROM vn.ticket t JOIN vn.saleVolume sv ON sv.ticketFk = t.id JOIN vn.agencyMode am ON am.id = t.agencyModeFk JOIN vn.volumeConfig vc WHERE t.shipped BETWEEN vStarted AND vEnded AND IFNULL(t.packages,0) = 0 AND am.agencyFk = vAgencyFk GROUP BY t.id; SELECT p.name Provincia, count(*) expediciones, sum(t.packages) Bultos, sum(tpe.boxes) Prevision FROM vn.ticket t JOIN vn.address a ON a.id = t.addressFk JOIN vn.province p ON a.provinceFk = p.id JOIN vn.agencyMode am ON am.id = t.agencyModeFk JOIN tmp.ticket_PackagingEstimated tpe ON tpe.ticketFk = t.id WHERE t.warehouseFk = 60 AND t.shipped BETWEEN vStarted AND vEnded AND am.agencyFk = vAgencyFk GROUP BY p.name; END IF; SELECT * FROM tmp.ticket_PackagingEstimated; DROP TEMPORARY TABLE tmp.ticket_PackagingEstimated; END$$ DELIMITER ;