Sp_System_AutoMaterialsPriceSingle.md 3.11 KB

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.