# `Sp_MaterialCheck_BtnEventMaterialCheck` (procedure)

> @author:钱豹
					@date:20210602 封存
					@describe:按主计划中的 规划中 次序,列出相应工单对应的材料，进行材料核实
					1.先做库存匹配
					2.逐条核实库存，如果需要采购，需要注明到料日期


- **Type:** PROCEDURE
- **Deterministic:** NO
- **SQL data access:** CONTAINS SQL

## Parameters

| # | Mode | Name | Type |
|---|---|---|---|
| 1 | IN | `sProInParam` | `varchar(10000)` |
| 2 | IN | `sMakePerson` | `varchar(100)` |
| 3 | IN | `sBrId` | `varchar(100)` |
| 4 | IN | `sSuId` | `varchar(100)` |
| 5 | OUT | `sReturn` | `varchar(1000)` |
| 6 | OUT | `sCode` | `int` |

## Body

_Body is not pre-cached. To inspect: `mysql --defaults-file=~/.my.cnf -e 'SHOW CREATE PROCEDURE `Sp_MaterialCheck_BtnEventMaterialCheck`'`._

## Narrative

**Business context:** 生产管理 — 主辅料稽查 (material check) entry-point. For the 主计划 → 规划中 work-order rows selected by the user, this proc lists the materials each work-order needs, matches them against on-hand `elematerialsstock`, marks rows that can be fulfilled from stock, and flags the rest as needing a purchase with a 到料日期 placeholder. The header notes "1.先做库存匹配 2.逐条核实库存，如果需要采购，需要注明到料日期" (author 钱豹, 2021-06-02 封存).

**What it does:** Reads the operator-selected ids from `sProInParam`. Looks up the warehouse-allow-list constant `ComMaterialsWareHouse` from `gdsformconst`. Builds `Materials_Tmp` (required) and `Materials_Tmp_Check` (with diff text) plus `elematerialsstock_Tmp_Check` (live stock snapshot). For each row, compares required `dQty` vs stock `dAuxiliaryQty`; on a match writes `bPlanMaterialCheck=1, bPlanMaterialCheckResult=1` to `mftworkordermaterials`; on a shortfall sets `bPlanMaterialCheck=1, bPlanMaterialCheckResult=0` with the diff text in `sMaterial / sMaterialDiff` so the user can resolve via 稽查通过 / 稽查失败.

**Invocation:** Dispatched dynamically by `GenericProcedureCallServiceImpl.doGenericProcedureCall()` — the 主辅料稽查 toolbar button names `Sp_MaterialCheck_BtnEventMaterialCheck` as the action (`Sp_<Module>_BtnEvent*` pattern). Also `CALL`-ed inline by the APS-state procs `Sp_Manufacture_GetAPSStateOee` and `Sp_Manufacture_GetPlanAPSstate` (which reuse the check logic when refreshing APS planning state). Companions: `Sp_MaterialCheck_BtnEventMaterialCheckPass` and `Sp_MaterialCheck_BtnEventMaterialCheckFail`. Install script ships at `script/标版/30100101/schedule/Sp_MaterialCheck_BtnEventMaterialCheck.sql` (plus a dated variant `*MaterialCheck230511.sql`).
