# `Sp_Calc_sSck` (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(4000)` |
| 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_sSck`'`._

## Narrative

**Business context:** 销售管理 → 销售对账单据 (sales reconciliation / `salsalescheckingmaster`) audit / un-audit. The 对账单 ties together delivered, invoiced and returned quantities so finance can ack the period close.

**What it does:** Validates `sGuid` and `bInvalid`, then on `iFlag=1` sets `bCheck=1`, `sCheckPerson`, `tCheckDate` on `SalSalesCheckingMaster`/`SalSalesCheckingSlave`; writes-back the upstream rows (`UPDATE SalSalesOrderSlave`, `SalDeliverGoodsSlave`, `saldelivernotifyslave`, `SalRejectGoodsSlave`, `MftWorkOrderSlave`, `SalQualityAbnormalSlave`, `cahfinancialadjustslave`, `accproductinitslave`) to mark the corresponding qty as 对账-locked; inserts a `CahReceivables` row and an optional `kpidetail` row; updates `CahCustomerInit` and calls `Sp_System_CheckFlow` per slave when define-check is on; finally `CALL Sp_Bill_Used`. `iFlag=0` reverses every step.

**Invocation:** Bound to `gdsmodule.sProcName` on:
- `销售对账单据` (sId `11811781131121915184849572550`) — also configured with `sSaveProName=Sp_Check_sSck`, `sSaveProNameBefore=Sp_beforeSave_sSck`, `sDeleteProName=Sp_afterSave_sSck`
- Repurposed on packaging-related forms `盒型定义`, `盒数据`, `盒型组件维护`, `自动拼版单据` — these reuse the audit slot for their own approval flow

Dispatched by `BusinessBaseServiceImpl.getPrcName(sFormGuid, …)` on the 审核/反审核 button. Caveat: the comment `销售对账单存储过程` only describes one of the bound forms — the packaging forms above also call this proc; check whether the body's `salsalescheckingmaster` lookups silently no-op for those forms or whether a customer override (`script/客户/千彩/Sp_Calc_sSck.sql`) is in play.
