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 $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_getStock`(
vWarehouseFk SMALLINT,
vDated DATE,
vAvailabled DATETIME,
vItemFk INT
)
BEGIN
/**
* 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 vDated Max date to filter
* @param vAvailabled Maximum time to filter
* @param vItemFk Item id
*
* @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
(UNIQUE INDEX i USING HASH (itemFk))
@ -28,15 +28,15 @@ BEGIN
SELECT itemFk, quantity
FROM itemTicketOut
WHERE shipped >= util.VN_CURDATE()
AND shipped < vDated
AND shipped < vAvailabled
AND warehouseFk = vWarehouseFk
AND (vItemFk IS NULL OR itemFk = vItemFk)
UNION ALL
SELECT iei.itemFk, iei.quantity
FROM itemEntryIn iei
JOIN item i ON i.id = iei.itemFk
WHERE IFNULL(iei.availabled, iei.landed) >= util.VN_CURDATE()
AND IFNULL(iei.availabled, iei.landed) < vDated
WHERE iei.availabled >= util.VN_CURDATE()
AND iei.availabled < vAvailabled
AND iei.warehouseInFk = vWarehouseFk
AND (vItemFk IS NULL OR iei.itemFk = vItemFk)
UNION ALL
@ -44,23 +44,15 @@ BEGIN
FROM itemEntryOut ieo
JOIN item i ON i.id = ieo.itemFk
WHERE ieo.shipped >= util.VN_CURDATE()
AND ieo.shipped < vDated
AND ieo.shipped < vAvailabled
AND ieo.warehouseOutFk = vWarehouseFk
AND (vItemFk IS NULL OR ieo.itemFk = vItemFk)
UNION ALL
SELECT item_id, amount
FROM cache.stock
WHERE warehouse_id = vWarehouseFk
) sub
GROUP BY itemFk
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$$
DELIMITER ;