41 lines
1.1 KiB
SQL
41 lines
1.1 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`vn`@`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 ;
|