41 lines
1.1 KiB
MySQL
41 lines
1.1 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_multipleBuyByDate`(
|
||
|
vDated DATETIME,
|
||
|
vWarehouseFk TINYINT(3)
|
||
|
)
|
||
|
BEGIN
|
||
|
/**
|
||
|
* Updates the tmp.itemInventory table, adding the purchase date.
|
||
|
*
|
||
|
* @param tmp.itemInventory(buy_date)
|
||
|
* @param vDated -> end date
|
||
|
* @param vWarehouseFk -> warehouse id
|
||
|
*/
|
||
|
DECLARE vLastBuyScope INT;
|
||
|
SELECT comparativeLastBuyScope INTO vLastBuyScope
|
||
|
FROM config;
|
||
|
|
||
|
ALTER TABLE tmp.itemInventory
|
||
|
ADD `buy_date` datetime NOT NULL;
|
||
|
|
||
|
CREATE OR REPLACE TEMPORARY TABLE lastBuyScope
|
||
|
SELECT i.id, MAX(t.landed) lastLanded
|
||
|
FROM item i
|
||
|
JOIN buy b ON b.itemFk = i.id
|
||
|
JOIN entry e ON e.id = b.entryFk
|
||
|
JOIN travel t ON t.id = e.travelFk
|
||
|
JOIN supplier s ON s.id = e.supplierFk
|
||
|
JOIN warehouse w ON w.id = t.warehouseInFk
|
||
|
WHERE t.landed BETWEEN (vDated + INTERVAL - vLastBuyScope DAY) AND vDated
|
||
|
AND NOT s.name = 'INVENTARIO'
|
||
|
AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk)
|
||
|
AND w.isComparative
|
||
|
AND NOT e.isRaid
|
||
|
GROUP BY i.id;
|
||
|
|
||
|
UPDATE tmp.itemInventory y
|
||
|
JOIN lastBuyScope lbs ON lbs.id = y.id
|
||
|
SET y.buy_date = lbs.lastLanded;
|
||
|
END$$
|
||
|
DELIMITER ;
|