feat(accounts): add Modify Application for rejected Current/Savings/FD/RD accounts
- Add 'Modify Application' button in kebab menu for rejected accounts (all 4 types)
- Rewrite edit components with tab-based UI matching create form
- Pre-populate all create-time values in edit form: product, account status,
customer segment, account type, joint holders, nominees, introducer,
deposit account link, senior citizen rate, tenure, flags (msme/balanceSwap/autoDebit)
- Fix edit mode detection using accountNo presence
- Add preselectedIntroducer @Input to IntroducerSearchComponent for pre-fill
- Support both camelCase and lowercase keys for joint holders (MySQL queryForList)
- Fix account number display: actual accountNo before previewAccountNo
- Fix cbsAccountType restore: cbsAccountType only, avoid Fineract enum object
- Add nominees fetch via /clients/{id}/nominees API in all 4 edit components
- Fix RD/FD Interest Rate Chart: SimpleChanges to prevent reset race condition
- Pre-check Senior Citizen checkbox in edit form from isSeniorCitizen DB field
- Auto-calculate rate when tenure pre-filled in edit mode
- FD calculator: use backend calculate-fd-interest API for all compounding types
- Support interestCompoundingPeriodInMonths=0 (daily) in FD calculator API
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
3be2f96210
commit
260fabaa48
@@ -114,6 +114,34 @@ export class FixedDepositsService {
|
||||
return this.http.get(`/fixeddepositaccounts/${accountId}`, { params: httpParams });
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate FD maturity using backend formula.
|
||||
* When submittedOnDate + daysInYear are provided, uses exact calendar-based calculation
|
||||
* matching the actual account creation engine.
|
||||
*/
|
||||
calculateFixedDepositInterest(params: {
|
||||
principalAmount: number;
|
||||
annualInterestRate: number;
|
||||
tenureInMonths: number;
|
||||
interestCompoundingPeriodInMonths: number;
|
||||
interestPostingPeriodInMonths: number;
|
||||
submittedOnDate?: string; // yyyy-MM-dd — enables exact calendar calculation
|
||||
daysInYear?: number; // 360 or 365
|
||||
}): Observable<any> {
|
||||
let httpParams = new HttpParams();
|
||||
Object.entries(params).forEach(
|
||||
([
|
||||
key,
|
||||
val
|
||||
]) => {
|
||||
if (val !== undefined && val !== null) {
|
||||
httpParams = httpParams.set(key, String(val));
|
||||
}
|
||||
}
|
||||
);
|
||||
return this.http.get(`/fixeddepositaccounts/calculate-fd-interest`, { params: httpParams });
|
||||
}
|
||||
|
||||
/**
|
||||
* @param fixedDepositAccount Fixed Deposit Account
|
||||
* @returns {Observable<any>}
|
||||
|
||||
Reference in New Issue
Block a user