Sp_System_AutoMaterialsPriceSingle (procedure)
- Type: PROCEDURE
- Deterministic: NO
- SQL data access: CONTAINS SQL
Parameters
| # | Mode | Name | Type |
|---|---|---|---|
| 1 | IN | sMaterialsGuid |
varchar(100) |
| 2 | IN | sMaterialsStyleS |
varchar(100) |
| 3 | IN | sDefineNoS |
varchar(100) |
| 4 | IN | sDefineNo2S |
varchar(100) |
| 5 | IN | sWareHouseGuid |
varchar(100) |
| 6 | IN | sLocationGuid |
varchar(100) |
| 7 | IN | sWarehouseLocationGuid |
varchar(100) |
| 8 | IN | tStartDate |
datetime |
| 9 | IN | tEndDate |
datetime |
| 10 | IN | sGuid |
varchar(100) |
| 11 | IN | bUpdate |
int |
| 12 | IN | bFlag |
int |
| 13 | IN | bUpdateAll |
int |
| 14 | IN | sLoginId |
varchar(100) |
| 15 | IN | sBrId |
varchar(100) |
| 16 | IN | sSuId |
varchar(100) |
| 17 | OUT | sCode |
int |
| 18 | OUT | sReturn |
varchar(4000) |
Body
Body is not pre-cached. To inspect: mysql --defaults-file=~/.my.cnf -e 'SHOW CREATE PROCEDURESpSystem_AutoMaterialsPriceSingle'._
Narrative
Business context: 库存管理 / 成本核算 → 材料价格自动结转 — single-material variant of the materials weighted-average price calculator. On audit of a stock movement (生产领料/生产退料/采购入库/采购退货/材料调拨/材料报废/来料入库/材料盘点/材料库存调整/其他入库/分切单/送货单) the calling 审核 proc passes one material + warehouse + period; this proc recomputes that material's running weighted-average price from viw_mitmaterialscheck/elematerials, then propagates it back into the source document and the materials-stock check tables.
What it does: Resolves the material name via viw_mitmaterialscheck joined to elematerials. Reads system settings for sPriceDecimal/sMoneyDecimal and the chosen cost-mode (p_iMaterialsCostMode). For the requested sMaterialsGuid/sMaterialsStyle/sDefineNo/sDefineNo2/warehouse/location/period it sums入库金额+期初金额 and divides by qty (全月加权 / 移动加权 depending on cost-mode), then writes the resulting dMaterialsPrice back to the originating slave row identified by sGuid and refreshes downstream stock balances. bUpdate/bFlag/bUpdateAll flags select between first-pass distribution (分切单 master→slave) and the standard second-pass distribution.
Invocation: Called by every materials-side Sp_Calc_s* audit proc that needs to refresh the unit price after a stock movement — confirmed callers in DB: Sp_Calc_sCut, Sp_Calc_sDgd(+_1226/_20250612), Sp_Calc_sDgdCL, Sp_Calc_sDYDgd, Sp_Calc_sMad, Sp_Calc_sMma, Sp_Calc_sMmm(+_copy1), Sp_Calc_sPmd_old, Sp_Calc_sPrj, Sp_Calc_sRgd(+1/_new), SP_Inventory_Materials_Inout_new, Sp_System_BatchPriceMoney, plus the _new body. Reached transitively via BusinessBaseServiceImpl.getPrcName on those forms' 审核 button. Install: script/标版/30100101/Sp_System_AutoMaterialsPriceSingle.sql; archived copies under script/标版/材料库存/ (_Ret, _RetAll) and script/标版/30100101/Sp_System_AutoMaterialsPriceSingle_Old.sql.