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]

Reply via email to