diff --git a/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.html b/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.html index 31477090f2..20d05bc265 100644 --- a/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.html +++ b/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.html @@ -73,6 +73,7 @@

{{ 'labels.inputs.Repayments' | translate }}

matInput formControlName="numberOfRepayments" matTooltip="{{ 'tooltips.Enter the total count of repayments' | translate }}" + min="0" /> @if (loansAccountTermsForm.controls.numberOfRepayments.hasError('required')) { @@ -133,6 +134,7 @@

required formControlName="repaymentEvery" matTooltip="{{ 'tooltips.Fields are input to calculating the repayment schedule' | translate }}" + min="0" /> @if (loansAccountTermsForm.controls.repaymentEvery.hasError('required')) { @@ -198,7 +200,7 @@

{{ 'labels.inputs.Nominal interest rate' | translate @if (!loansAccountTermsData?.isLoanProductLinkedToFloatingRate) { {{ 'labels.inputs.Nominal interest rate' | translate }} % - + {{ 'labels.inputs.Frequency' | translate }} @@ -375,6 +377,7 @@

{{ 'labels.heading.Interest Calculations' | translate type="number" formControlName="inArrearsTolerance" matTooltip="{{ 'tooltips.With Arrears tolerance' | translate }}" + min="0" /> @@ -384,6 +387,7 @@

{{ 'labels.heading.Interest Calculations' | translate matInput formControlName="graceOnInterestCharged" matTooltip="{{ 'tooltips.If the Interest Free Period' | translate }}" + min="0" /> @@ -394,17 +398,17 @@

{{ 'labels.inputs.Grace on principal payment' | translate }} - + {{ 'labels.inputs.Grace on interest payment' | translate }} - + {{ 'labels.inputs.On arrears ageing' | translate }} - + @if (isDelinquencyEnabled()) { diff --git a/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.ts b/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.ts index 5c3985394a..8f324c92d5 100644 --- a/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.ts +++ b/src/app/loans/loans-account-stepper/loans-account-terms-step/loans-account-terms-step.component.ts @@ -497,11 +497,17 @@ export class LoansAccountTermsStepComponent extends LoanProductBaseComponent imp ], numberOfRepayments: [ '', - Validators.required + [ + Validators.required, + Validators.min(0) + ] ], repaymentEvery: [ '', - Validators.required + [ + Validators.required, + Validators.min(0) + ] ], repaymentFrequencyType: [ { value: '', disabled: true }, @@ -511,7 +517,10 @@ export class LoansAccountTermsStepComponent extends LoanProductBaseComponent imp repaymentFrequencyDayOfWeekType: [''], repaymentsStartingFromDate: [''], interestChargedFromDate: [''], - interestRatePerPeriod: [''], + interestRatePerPeriod: [ + '', + Validators.min(0) + ], interestType: [''], isFloatingInterestRate: [null], isEqualAmortization: [''], @@ -521,11 +530,26 @@ export class LoansAccountTermsStepComponent extends LoanProductBaseComponent imp ], interestCalculationPeriodType: [''], allowPartialPeriodInterestCalculation: [''], - inArrearsTolerance: [''], - graceOnInterestCharged: [''], - graceOnPrincipalPayment: [''], - graceOnInterestPayment: [''], - graceOnArrearsAgeing: [''], + inArrearsTolerance: [ + '', + Validators.min(0) + ], + graceOnInterestCharged: [ + '', + Validators.min(0) + ], + graceOnPrincipalPayment: [ + '', + Validators.min(0) + ], + graceOnInterestPayment: [ + '', + Validators.min(0) + ], + graceOnArrearsAgeing: [ + '', + Validators.min(0) + ], loanIdToClose: [''], fixedEmiAmount: [''], isTopup: [''], diff --git a/src/app/savings/savings-account-stepper/savings-account-terms-step/savings-account-terms-step.component.html b/src/app/savings/savings-account-stepper/savings-account-terms-step/savings-account-terms-step.component.html index 2f6b979856..de29c1aebf 100644 --- a/src/app/savings/savings-account-stepper/savings-account-terms-step/savings-account-terms-step.component.html +++ b/src/app/savings/savings-account-stepper/savings-account-terms-step/savings-account-terms-step.component.html @@ -20,7 +20,7 @@ {{ 'labels.inputs.Nominal Annual Interest' | translate }} - + {{ 'labels.inputs.Nominal Annual Interest' | translate }} {{ 'labels.commons.is' | translate }} {{ 'labels.commons.required' | translate }} @@ -92,7 +92,7 @@ {{ 'labels.inputs.Minimum Opening Balance' | translate }} - + @@ -103,7 +103,7 @@

{{ 'labels.inputs.Lock-in Period' | translate }}

{{ 'labels.inputs.Frequency' | translate }} - + @@ -129,15 +129,15 @@

{{ 'labels.inputs.Overdraft' | translate }}

{{ 'labels.inputs.Minimum Overdraft Required for Interest Calculation' | translate }} - + {{ 'labels.inputs.Nominal Annual Interest for Overdraft' | translate }} - + {{ 'labels.inputs.Maximum Overdraft Amount Limit' | translate }} - +
} @@ -150,13 +150,13 @@

{{ 'labels.inputs.Overdraft' | translate }}

{{ 'labels.inputs.Minimum Balance' | translate }} - + @if (savingsAccountTermsForm.controls.minBalanceForInterestCalculation.value) { {{ 'labels.inputs.Balance Required for Interest Calculation' | translate }} - + } diff --git a/src/app/savings/savings-account-stepper/savings-account-terms-step/savings-account-terms-step.component.ts b/src/app/savings/savings-account-stepper/savings-account-terms-step/savings-account-terms-step.component.ts index 0f0ba813f3..a7d320483c 100644 --- a/src/app/savings/savings-account-stepper/savings-account-terms-step/savings-account-terms-step.component.ts +++ b/src/app/savings/savings-account-stepper/savings-account-terms-step/savings-account-terms-step.component.ts @@ -128,7 +128,10 @@ export class SavingsAccountTermsStepComponent implements OnChanges, OnInit { decimal: [{ value: '', disabled: true }], nominalAnnualInterestRate: [ '', - Validators.required + [ + Validators.required, + Validators.min(0) + ] ], interestCompoundingPeriodType: [ '', @@ -146,13 +149,22 @@ export class SavingsAccountTermsStepComponent implements OnChanges, OnInit { '', Validators.required ], - minRequiredOpeningBalance: [''], + minRequiredOpeningBalance: [ + '', + Validators.min(0) + ], withdrawalFeeForTransfers: [false], - lockinPeriodFrequency: [''], + lockinPeriodFrequency: [ + '', + Validators.min(0) + ], lockinPeriodFrequencyType: [''], allowOverdraft: [false], enforceMinRequiredBalance: [false], - minRequiredBalance: [''], + minRequiredBalance: [ + '', + Validators.min(0) + ], minBalanceForInterestCalculation: [{ value: '', disabled: true }] }); } @@ -175,9 +187,15 @@ export class SavingsAccountTermsStepComponent implements OnChanges, OnInit { buildDependencies() { this.savingsAccountTermsForm.get('allowOverdraft').valueChanges.subscribe((allowOverdraft: any) => { if (allowOverdraft) { - this.savingsAccountTermsForm.addControl('minOverdraftForInterestCalculation', new UntypedFormControl('')); - this.savingsAccountTermsForm.addControl('nominalAnnualInterestRateOverdraft', new UntypedFormControl('')); - this.savingsAccountTermsForm.addControl('overdraftLimit', new UntypedFormControl('')); + this.savingsAccountTermsForm.addControl( + 'minOverdraftForInterestCalculation', + new UntypedFormControl('', Validators.min(0)) + ); + this.savingsAccountTermsForm.addControl( + 'nominalAnnualInterestRateOverdraft', + new UntypedFormControl('', Validators.min(0)) + ); + this.savingsAccountTermsForm.addControl('overdraftLimit', new UntypedFormControl('', Validators.min(0))); } else { this.savingsAccountTermsForm.removeControl('minOverdraftForInterestCalculation'); this.savingsAccountTermsForm.removeControl('nominalAnnualInterestRateOverdraft');