fix(deposits): FD Single Rate Calculator sent tenureInMonths=0 for tenures under 30 days
SYMPTOM FD Single account create screen, Rate Calculator: entering a tenure under 30 days (e.g. 27) and clicking "Find Rate" produced a Bad Request - "The parameter `tenureInMonths` must be greater than 0." ROOT CAUSE calculateRate() (fixed-deposit-account-interest-rate-chart-step. component.ts) always converted the Days-unit tenure to months before calling the backend calculator: tenureInMonths = Math.floor(enteredDays / 30) For any tenure under 30 days this floors to 0, which the backend correctly rejects (paired backend commit: "FD Single Rate Calculator crashed for tenures under 30 days"). FIX - fixed-deposits.service.ts: calculateFixedDepositInterest() - tenureInMonths is now optional, added optional tenureInDays. - fixed-deposit-account-interest-rate-chart-step.component.ts - calculateRate(): for a Days-unit tenure >= 30 days, unchanged (tenureInMonths = floor(days/30)); for < 30 days, sends tenureInDays instead and leaves tenureInMonths undefined. Also fixed the API-failure fallback's periodic-compounding math, which divided by tenureInMonths directly and would have produced NaN once tenureInMonths could legitimately be undefined - it now falls back to (enteredDays / 30) when tenureInMonths is absent. SCOPE Only the Rate Calculator preview inside the FD Single/Double/Special account create screen. Does not touch how depositPeriod / depositPeriodFrequencyId get sent on actual account submission. IF THIS BREAKS SOMETHING LATER - The same 400 reappearing for a short FD Single tenure -> confirm the Find Rate network call carries tenureInDays and NOT a zero tenureInMonths; check calculateRate()'s branch choosing between the two. - A wrong maturity preview number specifically when the backend API call fails and the frontend falls back to its own formula -> check the `effectiveMonths = tenureInMonths ?? enteredDays / 30` fallback line in calculateRate(). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -133,7 +133,8 @@ export class FixedDepositsService {
|
||||
calculateFixedDepositInterest(params: {
|
||||
principalAmount: number;
|
||||
annualInterestRate: number;
|
||||
tenureInMonths: number;
|
||||
tenureInMonths?: number;
|
||||
tenureInDays?: number; // alternative to tenureInMonths, for sub-month FD Single tenures
|
||||
interestCompoundingPeriodInMonths: number;
|
||||
interestPostingPeriodInMonths: number;
|
||||
submittedOnDate?: string; // yyyy-MM-dd — enables exact calendar calculation
|
||||
|
||||
Reference in New Issue
Block a user