# `Sp_AdjustMoneyCl_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 PROCEDURE `Sp_AdjustMoneyCl_BtnRepair`'`._ ## Narrative **Business context:** 报销申请 (expense-reimbursement) module — batch-edit button proc for the travel/差旅 reimbursement form (the `Cl` suffix marks the 差旅 variant). Header says 差旅报销单调整金额. Sibling of `Sp_AdjustMoney_BtnRepair`; the only difference is the recompute formula uses the four travel components (`dAirfare`, `dHotelExpense`, `dOtherExpense`, `dTravelAllowance`) instead of `dAccountMoney`. **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 = dAirfare + dHotelExpense + dOtherExpense + dTravelAllowance + 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. Same orphan condition as the non-Cl sibling: `_BtnRepair` procs dispatch via `sButtonParam` but no button row currently references this proc name. Caveat: same as the non-Cl sibling — the empty-memo branch sets `sCode=-1` but does not `LEAVE top`, so the update still runs.