Sp_Check_sFybx.md 2.11 KB

Sp_Check_sFybx (procedure)

费用报销保存之前数据校验

  • Type: PROCEDURE
  • Deterministic: NO
  • SQL data access: CONTAINS SQL

Parameters

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

Body

Body is not pre-cached. To inspect: mysql --defaults-file=~/.my.cnf -e 'SHOW CREATE PROCEDURESpCheck_sFybx'._

Narrative

Business context: 财务管理 → 费用报销单 (sFybx = 费用报销, on expensereimbursementmaster/expensereimbursementslave) — post-save validator that guards the linkage between a 费用报销 and its source 预支费用单, totals the slave money back onto the master, recomputes the remaining 预支单 balance, and back-fills bank-account fields.

What it does: Reads sAdvanceOrderCodeId from expensereimbursementmaster for sId=sGuid. Rejects when the referenced advanceCostCheckMaster.bCheck=0 (sAdvanceExpenseNotReview — "预支费用单未审核请审核后再报销"). Verifies that every 费用细项 (sExpenseDetailId) used on the 报销单 also exists on the 预支单's slave (sExpenseDetailNotExist). Aborts when the 报销单's per-细项 dAccountMoney total exceeds the 预支单's per-细项 dMaterialsMoney (sReimbursementUpAdvance). On success, sums slave dMaterialsMoney back onto the master, updates dAdvanceBalanceMoney (= 预支总额 - 已用 - 当前报销), and writes sAccountNo/sAccountId onto the slave by joining descriptionoffeesslave on (sExpenseDetailId, sDepartId).

Invocation: Status: appears orphaned. No gdsmodule.sSaveProName/sSaveProNameBefore binding, no other routine references the name, no xly-src hit. The peer Sp_Calc_sFybx exists but is also not module-bound; both look like a half-wired feature for the 费用报销 form — candidate for maintainer audit.