
USE `vn`;
DROP procedure IF EXISTS `vn`.`zoneGetWarehouse`;

DELIMITER $$
USE `vn`$$
CREATE DEFINER=`root`@`%` PROCEDURE `zone_getWarehouse`(vAddress INT, vLanded DATE, vWarehouse INT)
BEGIN
/**
* Devuelve el listado de agencias disponibles para la fecha,
 * dirección y warehouse pasadas
 * 
 * @param vAddress
 * @param vWarehouse warehouse
 * @param vLanded Fecha de recogida
 * @select Listado de agencias disponibles
 */
 
	CALL zone_getFromGeo(address_getGeo(vAddress));
    CALL zone_getOptionsForLanding(vLanded);
    
	SELECT am.id agencyModeFk, 
			am.name agencyMode, 
			am.description, 
			am.deliveryMethodFk,
			TIMESTAMPADD(DAY, -zo.travelingDays, vLanded) shipped, 
			zw.warehouseFk,
			z.id zoneFk
		FROM tmp.zoneOption zo
			JOIN zone z ON z.id = zo.zoneFk
            JOIN agencyMode am ON am.id = z.agencyModeFk
            JOIN zoneWarehouse zw ON zw.zoneFk = zo.zoneFk
		WHERE zw.warehouseFk
		GROUP BY z.agencyModeFk;

END$$

DELIMITER ;
;
