63 lines
1.6 KiB
MySQL
63 lines
1.6 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`stockBought_calculate`(
|
||
|
vDated DATE
|
||
|
)
|
||
|
proc: BEGIN
|
||
|
/**
|
||
|
* Calculate the stock of the auction warehouse from the inventory date to vDated
|
||
|
* without taking into account the outputs of the same day vDated
|
||
|
*
|
||
|
* @param vDated Date to calculate the stock.
|
||
|
*/
|
||
|
IF vDated < util.VN_CURDATE() THEN
|
||
|
LEAVE proc;
|
||
|
END IF;
|
||
|
|
||
|
CREATE OR REPLACE TEMPORARY TABLE tStockBought
|
||
|
SELECT workerFk, reserve
|
||
|
FROM stockBought
|
||
|
WHERE dated = vDated
|
||
|
AND reserve;
|
||
|
|
||
|
DELETE FROM stockBought WHERE dated = vDated;
|
||
|
|
||
|
CALL item_calculateStock(vDated);
|
||
|
|
||
|
INSERT INTO stockBought(workerFk, bought, dated)
|
||
|
SELECT it.workerFk,
|
||
|
ROUND(SUM(
|
||
|
(ti.quantity / b.packing) *
|
||
|
buy_getVolume(b.id)
|
||
|
) / vc.palletM3 / 1000000, 1) bought,
|
||
|
vDated
|
||
|
FROM itemType it
|
||
|
JOIN item i ON i.typeFk = it.id
|
||
|
LEFT JOIN tmp.item ti ON ti.itemFk = i.id
|
||
|
JOIN itemCategory ic ON ic.id = it.categoryFk
|
||
|
JOIN warehouse wh ON wh.code = 'VNH'
|
||
|
JOIN tmp.buyUltimate bu ON bu.itemFk = i.id
|
||
|
AND bu.warehouseFk = wh.id
|
||
|
JOIN buy b ON b.id = bu.buyFk
|
||
|
JOIN volumeConfig vc
|
||
|
WHERE ic.display
|
||
|
GROUP BY it.workerFk
|
||
|
HAVING bought;
|
||
|
|
||
|
UPDATE stockBought s
|
||
|
JOIN tStockBought ts ON ts.workerFk = s.workerFk
|
||
|
SET s.reserve = ts.reserve
|
||
|
WHERE s.dated = vDated;
|
||
|
|
||
|
INSERT INTO stockBought (workerFk, reserve, dated)
|
||
|
SELECT ts.workerFk, ts.reserve, vDated
|
||
|
FROM tStockBought ts
|
||
|
WHERE ts.workerFk NOT IN (
|
||
|
SELECT workerFk
|
||
|
FROM stockBought
|
||
|
WHERE dated = vDated
|
||
|
);
|
||
|
|
||
|
DROP TEMPORARY TABLE tStockBought, tmp.item, tmp.buyUltimate;
|
||
|
END$$
|
||
|
DELIMITER ;
|