Sp_AdjustMoney_BtnRepair.md 2.27 KB

Sp_AdjustMoney_BtnRepair (procedure)

费用报销单调整金额

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

Parameters

# Mode Name Type
1 IN sProInParam varchar(10000)
2 IN sMakePerson varchar(100)
3 IN sBrId varchar(100)
4 IN sSuId varchar(100)
5 OUT sReturn varchar(1000)
6 OUT sCode int

Body

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

Narrative

Business context: 报销申请 (expense-reimbursement) module — batch-edit button proc for the general expense reimbursement form. Header says 费用报销单调整金额. When the user multi-selects reimbursement detail rows and clicks the BtnBsOperation.BtnRepair dialog, the proc was expected to apply a single dAdjustMoney value (with an sAdjustMemo justification) to every selected expensereimbursementslave row, recomputing dMaterialsMoney = dAccountMoney + dAdjustMoney. Follows the canonical _BtnRepair template signature (sProInParam JSON + sMakePerson/sBrId/sSuId IN, sCode/sReturn OUT).

What it does: Parses sProInParam JSON; reads $.changeValue.dAdjustMoney and $.changeValue.sAdjustMemo; validates sAdjustMemo is non-empty (returns Fun_Sis_GetConstNew('sAdjReasonCantEmpty'), sCode=-1 otherwise); iterates $.params[*].value[*].sId and runs UPDATE expensereimbursementslave SET dAdjustMoney=…, dMaterialsMoney = dAccountMoney + dAdjustMoney, sAdjustMemo=… WHERE sId=… for each selected id.

Invocation: Status: appears orphaned. No caller found in any channel (form-master sSqlStr/sConfigSqlStr, gdsmodule hooks, gdsconfigformslave.sButtonParam / sButtonEnabled, other routines, xly-src grep) — candidate for maintainer audit. _BtnRepair procs are normally dispatched dynamically via sButtonParam on a button row, but no row in gdsconfigformslave currently references this proc name; either the button was removed during a refactor or the form was decommissioned.

Caveat: validation sets sCode=-1 but does not LEAVE top, so the empty-memo branch still continues and applies the update regardless — bug worth flagging.