# `GetMaterialsPrice` (function) - **Type:** FUNCTION - **Returns:** `varchar(8000)` - **Deterministic:** NO - **SQL data access:** CONTAINS SQL ## Parameters | # | Mode | Name | Type | |---|---|---|---| | 1 | IN | `sMaterialsGuid` | `varchar(100)` | | 2 | IN | `sMaterialsStyle` | `varchar(100)` | | 3 | IN | `sBrId` | `varchar(100)` | | 4 | IN | `sSuId` | `varchar(100)` | ## Body _Body is not pre-cached. To inspect: `mysql --defaults-file=~/.my.cnf -e 'SHOW CREATE FUNCTION `GetMaterialsPrice`'`._ ## Narrative **Business context:** Canonical materials-price lookup — returns the price for a `EleMaterials.sId` according to the per-tenant `CbxOfferMaterials` setting (which of four price columns to use). Used wherever a routine needs "the price of this material right now" for 报价/工单/采购 cost calculations. **What it does:** reads `SysSystemSettings.CbxOfferMaterials` into `iType`, then `SELECT`s one of four price columns from `EleMaterials` keyed by `(sId, sBrandsId, sSubsidiaryId)`: `0`→`dPurchasePrice` (采购价), `1`→`dRecentPurchasePrice` (最近采购价), `2`→`dDesignateSalesPrice` (指定销售价), `3`→`dSalesPrice` (销售价). Returns 0 for empty input or missing rows. Ignores the declared `sMaterialsStyle` parameter — pricing is keyed only on `sId`. **Invocation:** referenced by 17+ stored routines including the entire `Sp_Quotation_CalcData*` and `Sp_WorkOrder_CalcData*` cost-build family (`Std`/`Flex`/`Book`/`Pack`/`Set`/`LastStd`/`zr` variants), `Sp_Inventory_MaterialsInventoryV56Price` and `Sp_Manufacture_sWodPurchareMaterials_copy1`. Wrapped by `Fun_Cashier_GetMaterialsPrice_Quo`. Form-side: embedded in the 采购申请→采购订单 conversion form (sId `192116810113315263819752160`) and the OEE 待入库客来料任务列表 (sId `101251240115016347243410860`). Also referenced in xly-src `Sp_financial_OrderGrossProfit`/`CustomerGrossProfit`/`SaleManGrossProfit` (margin reports).