Sp_Calc_sBac (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 PROCEDURESpCalc_sBac'._
Narrative
Business context: 预算管理 / 预算调整审批 — budget-adjustment check / uncheck on budgetAdjustmentCheckMaster. On approval, posts each slave-row adjustment amount (dMaterialsMoney) into the right monthly column of the target department-budget row (departmentalBudgetslave.d<Month>Budget) plus the yearly dSumBudget.
What it does: Validates sGuid. Reads tCreateDate (for year/month derivation), sMasterDepartId, and bInvalid from budgetAdjustmentCheckMaster; refuses if invalid. With iFlag=1: refuses if already checked. Resolves the bill's year/month via DATE_FORMAT(tCreateDate, '%Y'/'%m'). Then, on each of the twelve ELSEIF p_sMonth='01'..='12' branches, runs UPDATE departmentalBudgetslave B JOIN budgetadjustmentcheckslave A ON A.sAfterExpenseDetailId=B.sExpenseDetailId JOIN departmentalbudgetmaster C ON B.sParentId=C.sId SET B.d<Month>Budget = B.d<Month>Budget + A.dMaterialsMoney WHERE A.sParentId=sGuid AND C.sDepartId=p_sMasterDepartId AND C.sYear=p_sYear AND C.bCheck=1. Finally bumps dSumBudget and budgetmaster totals for adjustment types 1 or 2; reverses on uncheck (not shown in fragment).
Invocation: Status: appears orphaned in this DB instance. No gdsmodule.sProcName/sCalcProName, form-master, routine, or xly-src caller. Likely bound from a customer-specific budget-management module override (the budget tables suggest a customised 部门预算 module). Standard Sp_Calc_* check-hook signature.
Flag: per-month dispatch is a 12-way ELSEIF chain — fragile if the bill's tCreateDate month differs from the budget month the adjustment is for; the proc uses the create-date month rather than a dedicated iAdjustmentMonth column.