# `Sp_Calc_sBis` (procedure)

> 变更单


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

## Parameters

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

## Body

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

## Narrative

**Business context:** 工艺变更单 — alternative check / uncheck handler on `mftprocesschangemaster`. Same master table as `Sp_Calc_sBgd` but posts the change cost back into 报价单 and 质量事故 totals (`dSReserve3`) rather than into the work-order BOM.

**What it does:** Validates `sGuid`. With `iFlag=1`: refuses if already checked; sets master `bCheck=1`, `sStatus=1`, `sCheckPerson=sLoginId`, `tCheckDate=tCheckTime`. Then sums `mftprocesschangematerials.dMaterialsMoney` and `mftprocesschangeprocess.dProcessMoney` grouped by `sSrcId`, joining onto `quoquotationslave A` (matched by `sParentId=sSrcId`) to bump `A.dSReserve3` by the change cost. Body fragment then continues to update `mftqualityaccidentMaster` similarly. Uncheck path (`iFlag=0`) reverses.

**Invocation:** Status: appears orphaned. No `gdsmodule` hook, no form-master, no other procedure caller, no xly-src reference. Sibling proc `Sp_Calc_sBgd` is bound to the 工艺变更单 module; this `Sp_Calc_sBis` variant exists alongside it but is unwired. Candidate for maintainer audit — likely a quotation-flavoured fork of the same audit kept for legacy/future toggle.
