CREATE OR REPLACE ALGORITHM = UNDEFINED VIEW `vn`.`zoneEstimatedDelivery` AS select `t`.`zoneFk` AS `zoneFk`, cast(`util`.`VN_CURDATE`() + interval hour(ifnull(`zc`.`hour`, `z`.`hour`)) * 60 + minute(ifnull(`zc`.`hour`, `z`.`hour`)) minute as time) AS `hourTheoretical`, cast(sum(`sv`.`volume`) as decimal(5, 1)) AS `totalVolume`, cast(sum(if(`s`.`alertLevel` < 2, `sv`.`volume`, 0)) as decimal(5, 1)) AS `remainingVolume`, greatest( ifnull(`lhp`.`m3`, 0), ifnull(`dl`.`minSpeed`, 0) ) AS `speed`, cast(`zc`.`hour` + interval -sum(if(`s`.`alertLevel` < 2, `sv`.`volume`, 0)) * 60 / greatest(ifnull(`lhp`.`m3`, 0), ifnull(`dl`.`minSpeed`, 0)) minute as time) AS `hourEffective`, floor(-sum(if(`s`.`alertLevel` < 2, `sv`.`volume`, 0)) * 60 / greatest(ifnull(`lhp`.`m3`, 0), ifnull(`dl`.`minSpeed`, 0))) AS `minutesLess`, cast(`zc`.`hour` + interval -sum(if(`s`.`alertLevel` < 2, `sv`.`volume`, 0)) * 60 / greatest(ifnull(`lhp`.`m3`, 0), ifnull(`dl`.`minSpeed`, 0)) minute as time) AS `etc` from ( ( ( ( ( ( ( ( ( `vn`.`ticket` `t` join `vn`.`ticketStateToday` `tst` on ( `tst`.`ticket` = `t`.`id` ) ) join `vn`.`state` `s` on ( `s`.`id` = `tst`.`state` ) ) join `vn`.`saleVolume` `sv` on ( `sv`.`ticketFk` = `t`.`id` ) ) left join `vn`.`lastHourProduction` `lhp` on ( `lhp`.`warehouseFk` = `t`.`warehouseFk` ) ) join `vn`.`warehouse` `w` on ( `w`.`id` = `t`.`warehouseFk` ) ) join `vn`.`warehouseAlias` `wa` on ( `wa`.`id` = `w`.`aliasFk` ) ) straight_join `vn`.`zone` `z` on ( `z`.`id` = `t`.`zoneFk` ) ) left join `vn`.`zoneClosure` `zc` on ( `zc`.`zoneFk` = `t`.`zoneFk` and `zc`.`dated` = `util`.`VN_CURDATE`() ) ) left join `cache`.`departure_limit` `dl` on ( `dl`.`warehouse_id` = `t`.`warehouseFk` and `dl`.`fecha` = `util`.`VN_CURDATE`() ) ) where `w`.`hasProduction` <> 0 and cast(`t`.`shipped` as date) = `util`.`VN_CURDATE`() group by `t`.`zoneFk`;