fix: Loan Product Capitalized Income values

This commit is contained in:
Jose Alberto Hernandez
2025-04-16 09:03:06 -05:00
parent 941cb57a22
commit ab07af6bec
4 changed files with 46 additions and 10 deletions
@@ -81,15 +81,15 @@
<div fxFlexFill>
<span fxFlex="50%"> {{ 'labels.inputs.Enable income capitalization' | translate }}</span>
<span fxFlex="50%"> {{ loanDetails.enableAutoRepaymentForDownPayment | yesNo }} </span>
<span fxFlex="50%"> {{ loanDetails.enableIncomeCapitalization | yesNo }} </span>
</div>
<div fxFlexFill *ngIf="loanDetails.enableAutoRepaymentForDownPayment">
<div fxFlexFill *ngIf="loanDetails.enableIncomeCapitalization">
<span fxFlex="50%"> {{ 'labels.inputs.Income capitalization calculation type' | translate }}</span>
<span fxFlex="50%"> {{ loanDetails.capitalizedIncomeCalculationType?.value | translateKey: 'catalogs' }} </span>
</div>
<div fxFlexFill *ngIf="loanDetails.enableAutoRepaymentForDownPayment">
<div fxFlexFill *ngIf="loanDetails.enableIncomeCapitalization">
<span fxFlex="50%"> {{ 'labels.inputs.Income capitalization strategy' | translate }}</span>
<span fxFlex="50%"> {{ loanDetails.capitalizedIncomeStrategy?.value | translateKey: 'catalogs' }} </span>
</div>
@@ -859,7 +859,7 @@
</table>
</div>
<div fxFlexFill *ngIf="isAdvancedAccountingEnabled()" fxLayout="row wrap" fxLayout.lt-md="column">
<div fxFlexFill *ngIf="isAdvancedPaymentAllocation" fxLayout="row wrap" fxLayout.lt-md="column">
<h3 class="mat-h3" fxFlexFill>{{ 'labels.inputs.Income capitalization' | translate }}</h3>
<mat-divider [inset]="true"></mat-divider>
@@ -144,6 +144,12 @@ export class CreateLoanProductComponent implements OnInit {
this.supportedInterestRefundTypes = supportedInterestRefundTypes;
}
setCapitalizedIncome(capitalizedIncome: CapitalizedIncome): void {
if (this.isAdvancedPaymentStrategy) {
this.capitalizedIncome = capitalizedIncome;
}
}
get loanProductSettingsForm() {
return this.loanProductSettingsStep.loanProductSettingsForm;
}
@@ -181,6 +187,13 @@ export class CreateLoanProductComponent implements OnInit {
loanProduct['paymentAllocation'] = this.paymentAllocation;
loanProduct['creditAllocation'] = this.creditAllocation;
loanProduct['supportedInterestRefundTypes'] = this.supportedInterestRefundTypes;
if (this.capitalizedIncome != null) {
loanProduct['enableIncomeCapitalization'] = this.capitalizedIncome.enableIncomeCapitalization;
if (this.capitalizedIncome.enableIncomeCapitalization) {
loanProduct['capitalizedIncomeCalculationType'] = this.capitalizedIncome.incomeCapitalizationCalculationType;
loanProduct['capitalizedIncomeStrategy'] = this.capitalizedIncome.incomeCapitalizationStrategy;
}
}
}
return loanProduct;
}
@@ -1,4 +1,4 @@
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';
import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
import { CapitalizedIncome } from '../loan-product-payment-strategy-step/payment-allocation-model';
import { StringEnumOptionData } from 'app/shared/models/option-data.model';
@@ -8,7 +8,7 @@ import { StringEnumOptionData } from 'app/shared/models/option-data.model';
templateUrl: './loan-product-capitalized-income-step.component.html',
styleUrls: ['./loan-product-capitalized-income-step.component.scss']
})
export class LoanProductCapitalizedIncomeStepComponent {
export class LoanProductCapitalizedIncomeStepComponent implements OnChanges {
@Input() capitalizedIncome: CapitalizedIncome;
@Input() capitalizedIncomeCalculationTypeOptions: StringEnumOptionData[];
@Input() capitalizedIncomeStrategyOptions: StringEnumOptionData[];
@@ -46,22 +46,45 @@ export class LoanProductCapitalizedIncomeStepComponent {
}
}
ngOnChanges(changes: SimpleChanges): void {
this.enableIncomeCapitalization = this.capitalizedIncome.enableIncomeCapitalization;
if (this.enableIncomeCapitalization) {
this.loanIncomeCapitalizationForm.patchValue({
enableIncomeCapitalization: this.enableIncomeCapitalization,
incomeCapitalizationCalculationType: this.capitalizedIncome.incomeCapitalizationCalculationType,
incomeCapitalizationStrategy: this.capitalizedIncome.incomeCapitalizationStrategy
});
}
}
setConditionalControls() {
this.loanIncomeCapitalizationForm.get('enableIncomeCapitalization').valueChanges.subscribe((enabled: boolean) => {
this.enableIncomeCapitalization = enabled;
if (this.enableIncomeCapitalization) {
const incomeCapitalizationCalculationType =
this.capitalizedIncome.incomeCapitalizationCalculationType == ''
? this.capitalizedIncomeCalculationTypeOptions[0].id
: this.capitalizedIncome.incomeCapitalizationCalculationType;
this.loanIncomeCapitalizationForm.addControl(
'incomeCapitalizationCalculationType',
new UntypedFormControl(this.capitalizedIncome.incomeCapitalizationCalculationType, Validators.required)
new UntypedFormControl(
this.capitalizedIncome.incomeCapitalizationCalculationType ||
this.capitalizedIncomeCalculationTypeOptions[0].id,
Validators.required
)
);
const incomeCapitalizationStrategy =
this.capitalizedIncome.incomeCapitalizationStrategy == ''
? this.capitalizedIncomeStrategyOptions[0].id
: this.capitalizedIncome.incomeCapitalizationStrategy;
this.loanIncomeCapitalizationForm.addControl(
'incomeCapitalizationStrategy',
new UntypedFormControl(this.capitalizedIncome.incomeCapitalizationStrategy, Validators.required)
new UntypedFormControl(incomeCapitalizationStrategy, Validators.required)
);
this.setCapitalizedIncome.emit({
enableIncomeCapitalization: true,
incomeCapitalizationCalculationType: '',
incomeCapitalizationStrategy: ''
incomeCapitalizationCalculationType: incomeCapitalizationCalculationType,
incomeCapitalizationStrategy: incomeCapitalizationStrategy
});
this.loanIncomeCapitalizationForm