51 lines
1.4 KiB
SQL
51 lines
1.4 KiB
SQL
|
||
USE `vn`;
|
||
DROP procedure IF EXISTS `vn`.`zoneGetShipped`;
|
||
|
||
DELIMITER $$
|
||
USE `vn`$$
|
||
CREATE DEFINER=`root`@`%` PROCEDURE `zoneGetShipped__`(vLanded DATE, vAddressFk INT, vAgencyModeFk INT, vWarehouseFk INT)
|
||
BEGIN
|
||
/**
|
||
* Devuelve la mÃnima fecha de envÃa para cada warehouse
|
||
*
|
||
* @param vLanded La fecha de recepcion
|
||
* @param vAddressFk Id del consignatario
|
||
* @param vAgencyModeFk Id de la agencia
|
||
* @return tmp.zoneGetShipped
|
||
*/
|
||
|
||
DECLARE vPostalCode varchar(10);
|
||
|
||
SELECT postalCode INTO vPostalCode
|
||
FROM address WHERE id = vAddressFk;
|
||
|
||
SELECT * FROM (
|
||
SELECT * FROM (
|
||
SELECT z.id zoneFk,
|
||
TIMESTAMPADD(DAY,-z.travelingDays, vLanded) shipped,
|
||
vLanded landed,
|
||
vWarehouseFk warehouseFk,
|
||
z.agencyModeFk,
|
||
zi.isIncluded
|
||
FROM zoneGeo zgSon
|
||
JOIN zoneGeo zgFather ON zgSon.lft BETWEEN zgFather.lft AND zgFather.rgt
|
||
JOIN zoneIncluded zi ON zi.geoFk = zgFather.id
|
||
JOIN zone z ON z.id = zi.zoneFk
|
||
JOIN zoneCalendar zc ON zc.zoneFk = z.id
|
||
WHERE zgSon.`name` LIKE vPostalCode
|
||
AND zc.delivered = vLanded
|
||
AND z.agencyModeFk = vAgencyModeFk
|
||
AND z.warehouseFk = vWarehouseFk
|
||
AND IF(TIMESTAMPADD(DAY,-z.travelingDays, vLanded) = CURDATE(), hour(now()) < hour(z.`hour`),TRUE)
|
||
ORDER BY z.id, zgFather.depth DESC, isIncluded DESC) t
|
||
GROUP BY zoneFk
|
||
HAVING isIncluded > 0
|
||
ORDER BY shipped)
|
||
t
|
||
GROUP BY agencyModeFk;
|
||
END$$
|
||
|
||
DELIMITER ;
|
||
;
|