feat: refs #8069 8069-overStocking
This commit is contained in:
parent
a96d6f7ed8
commit
33a4061058
|
@ -0,0 +1,52 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`vn`@`localhost`
|
||||||
|
PROCEDURE `hedera`.`orderRow_updateOverstocking`(vOrderFk INT)
|
||||||
|
BEGIN
|
||||||
|
/**
|
||||||
|
* Set amount = 0 to avoid overbooking sales
|
||||||
|
*
|
||||||
|
* @param vOrderFk hedera.order.id
|
||||||
|
*/
|
||||||
|
DECLARE vCalcFk INT;
|
||||||
|
DECLARE vDone BOOL;
|
||||||
|
DECLARE vWarehouseFk INT;
|
||||||
|
|
||||||
|
DECLARE cWarehouses CURSOR FOR
|
||||||
|
SELECT DISTINCT warehouseFk
|
||||||
|
FROM orderRow
|
||||||
|
WHERE orderFk = vOrderFk
|
||||||
|
AND shipment = util.VN_CURDATE();
|
||||||
|
|
||||||
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||||
|
|
||||||
|
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||||
|
BEGIN
|
||||||
|
ROLLBACK;
|
||||||
|
RESIGNAL;
|
||||||
|
END;
|
||||||
|
|
||||||
|
OPEN cWarehouses;
|
||||||
|
checking: LOOP
|
||||||
|
SET vDone = FALSE;
|
||||||
|
|
||||||
|
FETCH cWarehouses INTO vWarehouseFk;
|
||||||
|
|
||||||
|
IF vDone THEN
|
||||||
|
LEAVE checking;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
CALL cache.available_refresh(vCalcFk, FALSE, vWarehouseFk, util.VN_CURDATE());
|
||||||
|
|
||||||
|
UPDATE orderRow r
|
||||||
|
JOIN `order` o ON o.id = r.orderFk
|
||||||
|
JOIN orderConfig oc
|
||||||
|
JOIN cache.available a ON a.calc_id = vCalcFk AND a.item_id = r.itemFk
|
||||||
|
SET r.amount = 0
|
||||||
|
WHERE ADDTIME(o.rowUpdated, oc.reserveTime) < util.VN_NOW()
|
||||||
|
AND a.available <= 0
|
||||||
|
AND r.warehouseFk = vWarehouseFk
|
||||||
|
AND r.orderFk = vOrderFk;
|
||||||
|
END LOOP;
|
||||||
|
CLOSE cWarehouses;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -0,0 +1,10 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `hedera`.`orderRow_afterInsert`
|
||||||
|
AFTER INSERT ON `orderRow`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
UPDATE `order`
|
||||||
|
SET rowUpdated = NOW()
|
||||||
|
WHERE id = NEW.orderFk;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -0,0 +1,3 @@
|
||||||
|
-- Place your SQL code here
|
||||||
|
ALTER TABLE hedera.`order` ADD IF NOT EXISTS rowUpdated DATETIME NULL
|
||||||
|
COMMENT 'Timestamp for last updated record in orderRow table';
|
Loading…
Reference in New Issue