# `Sp_MaterialsStoreVirtual` (procedure) > 实际库存 - **Type:** PROCEDURE - **Deterministic:** NO - **SQL data access:** CONTAINS SQL ## Parameters | # | Mode | Name | Type | |---|---|---|---| | 1 | IN | `sGuid` | `varchar(4000)` | | 2 | IN | `sBrId` | `varchar(100)` | | 3 | IN | `sSuId` | `varchar(100)` | ## Body _Body is not pre-cached. To inspect: `mysql --defaults-file=~/.my.cnf -e 'SHOW CREATE PROCEDURE `Sp_MaterialsStoreVirtual`'`._ ## Narrative **Business context:** 仓库管理 → 虚拟库存 — single-工单 rebuild of `MitMaterialsStoreVirtual`, the "实际库存 + 已下单/已计划" projection used by MRP and领料 checks. Called whenever a 工单 (`mftworkordermaster`) is audited or its consumption changes so the virtual stock view stays in sync. **What it does:** Materialises the comma-delimited `sGuid` list into temp table `p_t_sId`, looks up the work-order's `sMaterialsUnit` and 卷筒纸 (`CkxReelPaper`) switch from `SysSystemSettings`, deletes the existing `MitMaterialsStoreVirtual` rows for those bill ids, then re-inserts virtual-store rows by joining `mftworkorder*`, `elematerials`, and store views — emitting one row per (材料, 单据) carrying the projected on-hand qty after accounting for unfinished consumption. Branch/subsidiary scoped throughout. **Invocation:** Chained from a wide set of lifecycle hooks: `Sp_Calc_sMaterialsBgd`, `Sp_Calc_sPmd`, `Sp_Calc_sSmb`, `Sp_Calc_sWod`, `Sp_Bill_Force_Complete`, and `Sp_System_UpdateWorkCl`; also driven in bulk by `Sp_MaterialsStoreVirtual_refresh`. xly-src ships `script/标版/30100101/Sp_MaterialsStoreVirtual.sql` (install). No direct UI binding — purely side-effect.