82 lines
2.2 KiB
MySQL
82 lines
2.2 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_upcomingArrivals`(
|
||
|
vWarehouseFk INT,
|
||
|
vDate DATETIME
|
||
|
)
|
||
|
BEGIN
|
||
|
/**
|
||
|
* Procedure to track and organize the movement of items between warehouses,
|
||
|
* where 'warehouseINFk' is @vWarehouseFk.
|
||
|
* Uses temporary tables to process and store the travel data of the items.
|
||
|
*
|
||
|
* @params vWarehouseFk warehouse id
|
||
|
* @params vDate selected landed date
|
||
|
* @return tmp.itemTravel
|
||
|
*/
|
||
|
DECLARE vTravelFk INT;
|
||
|
DECLARE vWarehouseOutFk INT;
|
||
|
DECLARE vShipment DATETIME;
|
||
|
DECLARE vDateStart DATETIME;
|
||
|
|
||
|
CREATE OR REPLACE TEMPORARY TABLE tTravelTop
|
||
|
(PRIMARY KEY (wh_in,wh_out,landing,shipment))
|
||
|
ENGINE = MEMORY
|
||
|
SELECT 0 id,
|
||
|
vWarehouseFk wh_in,
|
||
|
vWarehouseFk wh_out,
|
||
|
FALSE ok,
|
||
|
vDate landing,
|
||
|
vDate shipment;
|
||
|
|
||
|
REPEAT
|
||
|
SET vTravelFk = NULL;
|
||
|
|
||
|
SELECT id,
|
||
|
wh_out,
|
||
|
shipment,
|
||
|
landing
|
||
|
INTO vTravelFk,
|
||
|
vWarehouseOutFk,
|
||
|
vShipment,
|
||
|
vDateStart
|
||
|
FROM tTravelTop
|
||
|
WHERE ok = FALSE LIMIT 1;
|
||
|
|
||
|
UPDATE tTravelTop
|
||
|
SET ok = TRUE
|
||
|
WHERE id = vTravelFk;
|
||
|
|
||
|
INSERT IGNORE INTO tTravelTop
|
||
|
SELECT id,
|
||
|
vWarehouseFk,
|
||
|
warehouseOutFk,
|
||
|
FALSE,
|
||
|
IF(vTravelFk, vDateStart, landed),
|
||
|
shipped shipment
|
||
|
FROM travel
|
||
|
WHERE warehouseOutFk = vWarehouseOutFk
|
||
|
AND IF(vTravelFk, landed <= vShipment, landed >= vShipment)
|
||
|
AND shipped >= util.VN_CURDATE()
|
||
|
AND NOT isDelivered;
|
||
|
UNTIL vTravelFk IS NULL END REPEAT;
|
||
|
|
||
|
DELETE FROM tTravelTop WHERE id = 0;
|
||
|
|
||
|
CREATE OR REPLACE TEMPORARY TABLE tmp.itemTravel
|
||
|
(KEY (wh))
|
||
|
ENGINE = MEMORY
|
||
|
SELECT *
|
||
|
FROM (
|
||
|
SELECT wh_out wh,
|
||
|
landing
|
||
|
FROM tTravelTop
|
||
|
WHERE wh_out <> vWarehouseFk
|
||
|
ORDER BY landing
|
||
|
LIMIT 10000000000000000000
|
||
|
) t
|
||
|
GROUP BY wh;
|
||
|
|
||
|
DROP TEMPORARY TABLE tTravelTop;
|
||
|
END$$
|
||
|
DELIMITER ;
|