diff --git a/db/routines/vn/procedures/item_getStock.sql b/db/routines/vn/procedures/item_getStock.sql index 4639521857..25429371b3 100644 --- a/db/routines/vn/procedures/item_getStock.sql +++ b/db/routines/vn/procedures/item_getStock.sql @@ -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 ;