# `Sp_MaterialsPurchaseStoreVirtual` (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_MaterialsPurchaseStoreVirtual`'`._ ## Narrative **Business context:** 采购管理 → 采购订单 / 仓库管理 → 虚拟库存 — refreshes the on-order (虚拟入库) projection that `mitmaterialsstorevirtual` maintains for a purchase order. The virtual store tracks "已下单未入库" quantities so MRP/stock checks can reserve against the still-open purchase commitment. **What it does:** Takes a comma-delimited `sGuid` of `PurPurchaseOrderMaster.sId` values, materialises them into temp table `p_t_sId`, deletes the existing `mitmaterialsstorevirtual` rows for those bill ids (scoped by `sBrId`/`sSuId`), then re-inserts one row per `purpurchaseorderslave` where `bInStoreComplete=0`, carrying the outstanding `dAuxiliaryQty - dInStoreAuxiliaryQty` and `dMaterialsQty - dInStoreQty` from the slave plus master metadata (`sBillNo`, `sFormId`). Effectively a "delete + rebuild" for one purchase order. **Invocation:** Chained from `Sp_Calc_sPod` (采购订单 审核/反审核), `Sp_Calc_sPis` (采购入库 calc), `Sp_Bill_Force_Complete` (强制完结), and `Sp_Bill_Force_Complete_copy1`. xly-src ships `script/标版/30100101/Sp_MaterialsPurchaseStoreVirtual.sql` as the install script. No direct UI button — always invoked as a side-effect of upstream PO/入库 lifecycle events.