# `Sp_Manufacture_BillComplete` (procedure)

> @author:qmj
			    @date:20210607 封存
			    @describe iFlag 标志,1 完工,0 取消完工


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

## Parameters

| # | Mode | Name | Type |
|---|---|---|---|
| 1 | IN | `sGuid` | `varchar(1000)` |
| 2 | IN | `sMakePerson` | `varchar(100)` |
| 3 | IN | `iFlag` | `int` |
| 4 | IN | `sLoginId` | `varchar(100)` |
| 5 | IN | `sBrId` | `varchar(100)` |
| 6 | IN | `sSuId` | `varchar(100)` |
| 7 | OUT | `sReturn` | `varchar(1000)` |
| 8 | OUT | `sCode` | `int` |

## Body

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

## Narrative

**Business context:** 生产管理 → 生产计划 → 主计划 — 整单完工 / 取消整单完工 toggle. Marks an entire 主计划 (`mftproductionplan`) as complete and cascades to its 机台计划从表 and the parent 工单. Author comment marks the proc 封存 (sealed / archived) as of 2021-06-07.

**What it does:** With `iFlag=1` (完工): `UPDATE mftproductionplanslave` set `sState='5'`, `iComplete=1` for all rows under the same `sWorkOrderId` as the main plan `sGuid`; `UPDATE mftproductionplan` set `sState='6'` on `sId=sGuid`; `UPDATE mftworkordermaster.bBillComplete=1` for the linked 工单 via `INNER JOIN mftproductionplan`. With `iFlag=0` (取消完工): re-evaluates `mftworkordermaster.bBillComplete` against `viw_mftworkorder` aggregates (`dProductQty` vs `dProductInStoreQty` and vs `dDeliverQty`) and only clears it when actuals fall short of plan, writing an audit trail into `sCompletePerson`.

**Invocation:** Status: appears orphaned. Author comment marks it 封存. No `gdsmodule.sProcName` hook, no form-master binding, no other-routine reference. xly-src ships `script/标版/30100101/Sp_Manufacture_BillComplete.sql` (install script) — preserved for reference but the live UI presumably uses a successor flow. Calc-style signature `(sGuid, sMakePerson, iFlag, sLoginId, sBrId, sSuId, OUT sReturn, OUT sCode)` would normally bind via `gdsmodule.sProcName` on the 主计划 form's 审核 slot — that binding is absent.
