Actualizar db/routines/vn/procedures/item_getStock.sql
gitea/salix/pipeline/head This commit looks good Details

This commit is contained in:
Carlos Andrés 2025-03-04 08:20:30 +00:00
parent 8e82a6d0f1
commit 3b1e906a87
1 changed files with 12 additions and 20 deletions

View File

@ -1,21 +1,21 @@
DELIMITER $$ DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_getStock`( CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_getStock`(
vWarehouseFk SMALLINT, vWarehouseFk SMALLINT,
vDated DATE, vAvailabled DATETIME,
vItemFk INT vItemFk INT
) )
BEGIN BEGIN
/** /**
* Calcula el stock de un artículo de un vWarehouseFk, * Calcula el stock de un artículo de un vWarehouseFk,
* desde la fecha del inventario hasta vDated * desde la fecha del inventario hasta el momento anterior a vAvailabled
* *
* @param vWarehouse Warehouse id * @param vWarehouse Warehouse id
* @param vDated Max date to filter * @param vAvailabled Maximum time to filter
* @param vItemFk Item id * @param vItemFk Item id
* *
* @return tmp.itemList(itemFk, stock, visible, available) * @return tmp.itemList(itemFk, stock, visible, available)
*/ */
SET vDated = TIMESTAMP(vDated, '00:00:00'); CALL cache.stock_refresh(FALSE);
CREATE OR REPLACE TEMPORARY TABLE tmp.itemList CREATE OR REPLACE TEMPORARY TABLE tmp.itemList
(UNIQUE INDEX i USING HASH (itemFk)) (UNIQUE INDEX i USING HASH (itemFk))
@ -28,15 +28,15 @@ BEGIN
SELECT itemFk, quantity SELECT itemFk, quantity
FROM itemTicketOut FROM itemTicketOut
WHERE shipped >= util.VN_CURDATE() WHERE shipped >= util.VN_CURDATE()
AND shipped < vDated AND shipped < vAvailabled
AND warehouseFk = vWarehouseFk AND warehouseFk = vWarehouseFk
AND (vItemFk IS NULL OR itemFk = vItemFk) AND (vItemFk IS NULL OR itemFk = vItemFk)
UNION ALL UNION ALL
SELECT iei.itemFk, iei.quantity SELECT iei.itemFk, iei.quantity
FROM itemEntryIn iei FROM itemEntryIn iei
JOIN item i ON i.id = iei.itemFk JOIN item i ON i.id = iei.itemFk
WHERE IFNULL(iei.availabled, iei.landed) >= util.VN_CURDATE() WHERE iei.availabled >= util.VN_CURDATE()
AND IFNULL(iei.availabled, iei.landed) < vDated AND iei.availabled < vAvailabled
AND iei.warehouseInFk = vWarehouseFk AND iei.warehouseInFk = vWarehouseFk
AND (vItemFk IS NULL OR iei.itemFk = vItemFk) AND (vItemFk IS NULL OR iei.itemFk = vItemFk)
UNION ALL UNION ALL
@ -44,23 +44,15 @@ BEGIN
FROM itemEntryOut ieo FROM itemEntryOut ieo
JOIN item i ON i.id = ieo.itemFk JOIN item i ON i.id = ieo.itemFk
WHERE ieo.shipped >= util.VN_CURDATE() WHERE ieo.shipped >= util.VN_CURDATE()
AND ieo.shipped < vDated AND ieo.shipped < vAvailabled
AND ieo.warehouseOutFk = vWarehouseFk AND ieo.warehouseOutFk = vWarehouseFk
AND (vItemFk IS NULL OR ieo.itemFk = vItemFk) AND (vItemFk IS NULL OR ieo.itemFk = vItemFk)
UNION ALL
SELECT item_id, amount
FROM cache.stock
WHERE warehouse_id = vWarehouseFk
) sub ) sub
GROUP BY itemFk GROUP BY itemFk
HAVING stock; HAVING stock;
CALL cache.stock_refresh(FALSE);
INSERT INTO tmp.itemList(itemFk, stock, visible, available)
SELECT item_id, amount, amount, amount
FROM cache.stock
WHERE warehouse_id = vWarehouseFk
AND (vItemFk IS NULL OR vItemFk = item_id)
ON DUPLICATE KEY UPDATE
stock = stock + VALUES(stock),
visible = visible + VALUES(visible),
available = available + VALUES(available);
END$$ END$$
DELIMITER ; DELIMITER ;