DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`agencyVolume`() BEGIN /** * Calcula y presenta información sobre volúmenes de expediciones y empaques * para agencias que no son propias durante un período específico. */ DECLARE vStarted DATETIME DEFAULT util.VN_CURDATE(); DECLARE vEnded DATETIME DEFAULT util.dayEnd(util.VN_CURDATE()); SELECT ag.id agency_id, CONCAT(RPAD(c.country, 16,' _') ,' ',ag.name) Agencia, COUNT(*) expediciones, SUM(t.packages) Bultos, SUM(tpe.boxes) Faltan FROM ticket t JOIN warehouse w ON w.id = t.warehouseFk JOIN country c ON w.countryFk = c.id JOIN address a ON a.id = t.addressFk JOIN agencyMode am ON am.id = t.agencyModeFk JOIN agency ag ON ag.id = am.agencyFk JOIN ( SELECT sv.ticketFk, CEIL(1000 * SUM(sv.volume) / vc.standardFlowerBox) FROM ticket t JOIN saleVolume sv ON sv.ticketFk = t.id JOIN volumeConfig vc WHERE t.shipped BETWEEN vStarted AND vEnded AND (t.packages IS NULL OR NOT t.packages) GROUP BY t.id ) tpe ON tpe.ticketFk = t.id WHERE t.shipped BETWEEN vStarted AND vEnded AND NOT ag.isOwn GROUP BY ag.id ORDER BY Agencia; END$$ DELIMITER ;