Aman-Mittal opened a new issue, #754: URL: https://github.com/apache/fineract-backoffice-ui/issues/754
### Summary Fineract supports paying, waiving and adjusting an individual charge on a loan, a savings account and a client. The UI offers none of these for **standard** loans, savings or clients. A charge can only be added, or (on loans) deleted. Only Working Capital loans have a waive action (`wc-loan-view.component.ts` → `postWorkingCapitalLoansLoanIdChargesLoanChargeId(…, 'waive')`). ### Environment - App: https://aman-mittal.github.io/fineract-backoffice-ui (deployed `main`), source `origin/main` @ `8da1086f` - Spec: committed `public/api/fineract.json` (matches the sandbox Swagger) - 2026-10-16 ### Preconditions An active loan, savings account or client with a charge applied. ### Steps to reproduce 1. Open a loan with a charge → **Charges** tab. The row offers delete only. The loan **Actions** menu has "Add Loan Charge" but no pay or waive. 2. Do the same for a savings account's charges, and a client's charges. ### Expected behavior Per-charge **Pay**, **Waive** (and, for loans, **Adjustment**) where the platform allows them, gated on `PAY_*CHARGE` / `WAIVE_*CHARGE` and on the charge's state (outstanding, not already waived). ### Actual behavior These operations have no caller anywhere in `src/app` (generated client usage per `api-surface.json`, plus a grep of non-generated code for the endpoints, command names and permission codes): | Endpoint | Operation | |---|---| | `POST /loans/{loanId}/charges/{loanChargeId}?command=pay\|waive\|adjustment` | pay / waive / adjust a loan charge | | `PUT /loans/{loanId}/charges/{loanChargeId}` | update a loan charge | | `PUT /loans/{loanId}/transactions/{transactionId}` | undo a waive-charge transaction | | `POST /savingsaccounts/{id}/charges/{chargeId}?command=paycharge\|waive\|inactivate` | pay / waive / inactivate a savings charge | | `PUT /savingsaccounts/{id}/charges/{chargeId}` | update a savings charge | | `POST /clients/{clientId}/charges/{chargeId}?command=paycharge\|waive` | pay / waive a client charge | `git grep` for `PAY_LOANCHARGE`, `WAIVE_LOANCHARGE`, `PAY_SAVINGSACCOUNTCHARGE`, `WAIVE_SAVINGSACCOUNTCHARGE`, `PAY_CLIENTCHARGE`, `WAIVE_CLIENTCHARGE` in non-generated code finds nothing. ### Evidence Static: operation-level diff of `public/api/fineract.json` against `src/app/core/adapters/api/api-surface.json`, checked by grepping the source. Live: the loan Actions menu on the sandbox loan lists "Add Loan Charge" and no charge-servicing action. ### Impact Charge servicing is routine. Fees get waived as goodwill or on error, and penalties get waived on restructure. Today the only remedy for a wrongly applied loan charge is deletion, which isn't allowed once the charge has been paid or partly paid, and which leaves no audit record of a waiver. For savings and client charges there's no remedy at all. ### Suggested investigation Follow the Working Capital waive pattern for standard loans first (highest volume), then savings and client charges. Check each command against a running Fineract for its accepted body (date + `dateFormat`/`locale` for pay; empty or near-empty for waive), as was done for charge-off in #194. ### Verification status Gap confirmed by source and spec analysis, plus the live Actions menu. **Not** exercised end to end: the sandbox loan has no charges, and this audit didn't run financial transaction commands. ### Related endpoints Listed above. ### Acceptance criteria - Pay and Waive are available per charge on loan, savings and client charge lists, gated on permission and charge state. - A waived loan charge can be undone. - Backend e2e coverage for at least loan-charge waive and savings-charge pay. ### Related issues #506 (refund by cash / charge refund), #197 (savings servicing parity), #504. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
