diff --git a/src/app/loans/loans-view/account-details/account-details.component.html b/src/app/loans/loans-view/account-details/account-details.component.html index dcf30a50c6..57403daf07 100644 --- a/src/app/loans/loans-view/account-details/account-details.component.html +++ b/src/app/loans/loans-view/account-details/account-details.component.html @@ -101,6 +101,28 @@

{{ 'labels.heading.Loan Details' | translate }}

{{ loanDetails.capitalizedIncomeType?.value | translateKey: 'catalogs' }} +
+ {{ 'labels.inputs.Enable Buy down fee' | translate }} + {{ loanDetails.enableBuyDownFee | yesNo }} +
+ +
+ {{ 'labels.inputs.Buy down fee calculation type' | translate }} + + {{ loanDetails.buyDownFeeCalculationType?.value | translateKey: 'catalogs' }} + +
+ +
+ {{ 'labels.inputs.Buy down fee strategy' | translate }} + {{ loanDetails.buyDownFeeStrategy?.value | translateKey: 'catalogs' }} +
+ +
+ {{ 'labels.inputs.Buy down fee income type' | translate }} + {{ loanDetails.buyDownFeeIncomeType?.value | translateKey: 'catalogs' }} +
+
{{ 'labels.inputs.Grace: On Principal Payment' | translate }} {{ loanDetails.graceOnPrincipalPayment }} diff --git a/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.html b/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.html index acb85232af..5e4289d40b 100644 --- a/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.html +++ b/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.html @@ -875,10 +875,31 @@

{{ 'labels.inputs.Income capitalization' | translate {{ 'labels.inputs.Income type' | translate }}: {{ loanProduct.capitalizedIncomeType?.value | translateKey: 'catalogs' }}

+ + +
+

{{ 'labels.inputs.Buy down fees' | translate }}

+ + + +
+ {{ 'labels.inputs.Enable Buy down fee' | translate }}: + {{ loanProduct.enableBuyDownFee | yesNo }} +
+ +
+ {{ 'labels.inputs.Buy down fee calculation type' | translate }}: + {{ loanProduct.buyDownFeeCalculationType?.value | translateKey: 'catalogs' }} +
+ +
+ {{ 'labels.inputs.Buy down fee strategy' | translate }}: + {{ loanProduct.buyDownFeeStrategy?.value | translateKey: 'catalogs' }} +
-
- {{ 'labels.inputs.Income type' | translate }}: - {{ loanProduct.capitalizedIncomeType?.value | translateKey: 'catalogs' }} +
+ {{ 'labels.inputs.Buy down fee income type' | translate }}: + {{ loanProduct.buyDownFeeIncomeType?.value | translateKey: 'catalogs' }}
diff --git a/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.ts b/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.ts index 5ebedfe8ca..1ae71804cb 100644 --- a/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.ts +++ b/src/app/products/loan-products/common/loan-product-summary/loan-product-summary.component.ts @@ -353,6 +353,23 @@ export class LoanProductSummaryComponent implements OnInit, OnChanges { ); this.loanProduct.capitalizedIncomeType = optionValue; } + if (this.isAdvancedPaymentAllocation && this.loanProduct.enableBuyDownFee) { + optionValue = this.optionDataLookUp( + this.loanProduct.buyDownFeeCalculationType, + this.loanProductsTemplate.buyDownFeeCalculationTypeOptions + ); + this.loanProduct.buyDownFeeCalculationType = optionValue; + optionValue = this.optionDataLookUp( + this.loanProduct.buyDownFeeStrategy, + this.loanProductsTemplate.buyDownFeeStrategyOptions + ); + this.loanProduct.buyDownFeeStrategy = optionValue; + optionValue = this.optionDataLookUp( + this.loanProduct.buyDownFeeIncomeType, + this.loanProductsTemplate.buyDownFeeIncomeTypeOptions + ); + this.loanProduct.buyDownFeeIncomeType = optionValue; + } optionValue = this.optionDataLookUp( this.loanProduct.interestRateFrequencyType, this.loanProductsTemplate.interestRateFrequencyTypeOptions diff --git a/src/app/products/loan-products/create-loan-product/create-loan-product.component.html b/src/app/products/loan-products/create-loan-product/create-loan-product.component.html index 3d169b613c..0277bbfaa6 100644 --- a/src/app/products/loan-products/create-loan-product/create-loan-product.component.html +++ b/src/app/products/loan-products/create-loan-product/create-loan-product.component.html @@ -54,6 +54,8 @@ (supportedInterestRefundTypes)="setSupportedInterestRefundTypes($event)" > + + @@ -91,15 +93,18 @@ - - {{ 'labels.inputs.INCOME CAPITALIZATION' | translate }} + + {{ 'labels.inputs.DEFERRED INCOME RECOGNITION' | translate }} @@ -114,7 +119,7 @@ [loanProductsTemplate]="loanProductsTemplate" [accountingRuleData]="accountingRuleData" [loanProductFormValid]="loanProductFormValid" - [capitalizedIncome]="capitalizedIncome" + [deferredIncomeRecognition]="deferredIncomeRecognition" > diff --git a/src/app/products/loan-products/create-loan-product/create-loan-product.component.ts b/src/app/products/loan-products/create-loan-product/create-loan-product.component.ts index 2a46c8be66..44cd583f9f 100644 --- a/src/app/products/loan-products/create-loan-product/create-loan-product.component.ts +++ b/src/app/products/loan-products/create-loan-product/create-loan-product.component.ts @@ -17,12 +17,12 @@ import { LoanProducts } from '../loan-products'; import { AdvancedPaymentAllocation, AdvancedPaymentStrategy, - CapitalizedIncome, + DeferredIncomeRecognition, PaymentAllocation } from '../loan-product-stepper/loan-product-payment-strategy-step/payment-allocation-model'; import { Accounting } from 'app/core/utils/accounting'; import { StringEnumOptionData } from '../../../shared/models/option-data.model'; -import { LoanProductCapitalizedIncomeStepComponent } from '../loan-product-stepper/loan-product-capitalized-income-step/loan-product-capitalized-income-step.component'; +import { LoanProductDeferredIncomeRecognitionStepComponent } from '../loan-product-stepper/loan-product-capitalized-income-step/loan-product-deferred-income-recognition-step.component'; import { UntypedFormGroup } from '@angular/forms'; import { MatStepper, MatStepperIcon, MatStep, MatStepLabel } from '@angular/material/stepper'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; @@ -50,7 +50,7 @@ import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module'; StepperButtonsComponent, LoanProductTermsStepComponent, LoanProductChargesStepComponent, - LoanProductCapitalizedIncomeStepComponent, + LoanProductDeferredIncomeRecognitionStepComponent, LoanProductAccountingStepComponent, LoanProductPreviewStepComponent ] @@ -61,8 +61,8 @@ export class CreateLoanProductComponent implements OnInit { loanProductCurrencyStep: LoanProductCurrencyStepComponent; @ViewChild(LoanProductInterestRefundStepComponent, { static: true }) loanProductInterestRefundStep: LoanProductInterestRefundStepComponent; - @ViewChild(LoanProductCapitalizedIncomeStepComponent, { static: true }) - loanProductCapitalizedIncomeStep: LoanProductCapitalizedIncomeStepComponent; + @ViewChild(LoanProductDeferredIncomeRecognitionStepComponent, { static: true }) + loanProductDeferredIncomeRecognitionStep: LoanProductDeferredIncomeRecognitionStepComponent; @ViewChild(LoanProductTermsStepComponent, { static: true }) loanProductTermsStep: LoanProductTermsStepComponent; @ViewChild(LoanProductSettingsStepComponent, { static: true }) loanProductSettingsStep: LoanProductSettingsStepComponent; @@ -81,8 +81,8 @@ export class CreateLoanProductComponent implements OnInit { advancedPaymentAllocations: AdvancedPaymentAllocation[] = []; advancedCreditAllocations: AdvancedPaymentAllocation[] = []; - capitalizedIncome: CapitalizedIncome | null = null; - loanIncomeCapitalizationForm: UntypedFormGroup; + deferredIncomeRecognition: DeferredIncomeRecognition | null = null; + loanDeferredIncomeRecognitionForm: UntypedFormGroup; /** * @param {ActivatedRoute} route Activated Route. @@ -139,18 +139,33 @@ export class CreateLoanProductComponent implements OnInit { advancePaymentStrategy(value: string) { this.isAdvancedPaymentStrategy = LoanProducts.isAdvancedPaymentAllocationStrategy(value); if (this.isAdvancedPaymentStrategy) { + if (this.deferredIncomeRecognition == null) { + this.deferredIncomeRecognition = {}; + } if (this.loanProductsTemplate.enableIncomeCapitalization) { - this.capitalizedIncome = { + this.deferredIncomeRecognition.capitalizedIncome = { enableIncomeCapitalization: true, capitalizedIncomeCalculationType: this.loanProductsTemplate.capitalizedIncomeCalculationTypeOptions[0], capitalizedIncomeStrategy: this.loanProductsTemplate.capitalizedIncomeStrategyOptions[0], capitalizedIncomeType: this.loanProductsTemplate.capitalizedIncomeTypeOptions[0] }; } else { - this.capitalizedIncome = { + this.deferredIncomeRecognition.capitalizedIncome = { enableIncomeCapitalization: false }; } + if (this.loanProductsTemplate.enableBuyDownFee) { + this.deferredIncomeRecognition.buyDownFee = { + enableBuyDownFee: true, + buyDownFeeCalculationType: this.loanProductsTemplate.buyDownFeeCalculationTypeOptions[0], + buyDownFeeStrategy: this.loanProductsTemplate.buyDownFeeStrategyOptions[0], + buyDownFeeIncomeType: this.loanProductsTemplate.buyDownFeeIncomeTypeOptions[0] + }; + } else { + this.deferredIncomeRecognition.buyDownFee = { + enableBuyDownFee: false + }; + } } } @@ -172,14 +187,14 @@ export class CreateLoanProductComponent implements OnInit { this.supportedInterestRefundTypes = supportedInterestRefundTypes; } - setCapitalizedIncome(capitalizedIncome: CapitalizedIncome): void { + setDeferredIncomeRecognition(deferredIncomeRecognition: DeferredIncomeRecognition): void { if (this.isAdvancedPaymentStrategy) { - this.capitalizedIncome = capitalizedIncome; + this.deferredIncomeRecognition = deferredIncomeRecognition; } } setViewChildForm(viewChildForm: UntypedFormGroup): void { - this.loanIncomeCapitalizationForm = viewChildForm; + this.loanDeferredIncomeRecognitionForm = viewChildForm; } get loanProductSettingsForm() { @@ -197,7 +212,7 @@ export class CreateLoanProductComponent implements OnInit { this.loanProductCurrencyForm.valid && this.loanProductTermsForm.valid && this.loanProductSettingsForm.valid && - this.loanIncomeCapitalizationForm.valid && + this.loanDeferredIncomeRecognitionForm.valid && this.loanProductAccountingForm.valid ); } else { @@ -224,12 +239,24 @@ 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.capitalizedIncomeCalculationType; - loanProduct['capitalizedIncomeStrategy'] = this.capitalizedIncome.capitalizedIncomeStrategy; - loanProduct['capitalizedIncomeType'] = this.capitalizedIncome.capitalizedIncomeType; + if (this.deferredIncomeRecognition.capitalizedIncome != null) { + loanProduct['enableIncomeCapitalization'] = + this.deferredIncomeRecognition.capitalizedIncome.enableIncomeCapitalization; + if (this.deferredIncomeRecognition.capitalizedIncome.enableIncomeCapitalization) { + loanProduct['capitalizedIncomeCalculationType'] = + this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeCalculationType; + loanProduct['capitalizedIncomeStrategy'] = + this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeStrategy; + loanProduct['capitalizedIncomeType'] = this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeType; + } + } + if (this.deferredIncomeRecognition.buyDownFee != null) { + loanProduct['enableBuyDownFee'] = this.deferredIncomeRecognition.buyDownFee.enableBuyDownFee; + if (this.deferredIncomeRecognition.buyDownFee.enableBuyDownFee) { + loanProduct['buyDownFeeCalculationType'] = + this.deferredIncomeRecognition.buyDownFee.buyDownFeeCalculationType; + loanProduct['buyDownFeeStrategy'] = this.deferredIncomeRecognition.buyDownFee.buyDownFeeStrategy; + loanProduct['buyDownFeeIncomeType'] = this.deferredIncomeRecognition.buyDownFee.buyDownFeeIncomeType; } } } diff --git a/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.html b/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.html index 7bcc80a2e2..0219f6b697 100644 --- a/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.html +++ b/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.html @@ -94,14 +94,17 @@ - {{ 'labels.inputs.INCOME CAPITALIZATION' | translate }} + {{ 'labels.inputs.DEFERRED INCOME RECOGNITION' | translate }} @@ -116,7 +119,7 @@ [loanProductsTemplate]="loanProductAndTemplate" [accountingRuleData]="accountingRuleData" [loanProductFormValid]="loanProductFormValidAndNotPristine" - [capitalizedIncome]="capitalizedIncome" + [deferredIncomeRecognition]="deferredIncomeRecognition" > diff --git a/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.ts b/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.ts index 11521d86e4..540b48df26 100644 --- a/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.ts +++ b/src/app/products/loan-products/edit-loan-product/edit-loan-product.component.ts @@ -18,14 +18,14 @@ import { AdvancedCreditAllocation, AdvancedPaymentAllocation, AdvancedPaymentStrategy, - CapitalizedIncome, + DeferredIncomeRecognition, CreditAllocation, PaymentAllocation } from '../loan-product-stepper/loan-product-payment-strategy-step/payment-allocation-model'; import { Accounting } from 'app/core/utils/accounting'; import { LoanProductInterestRefundStepComponent } from '../loan-product-stepper/loan-product-interest-refund-step/loan-product-interest-refund-step.component'; import { StringEnumOptionData } from '../../../shared/models/option-data.model'; -import { LoanProductCapitalizedIncomeStepComponent } from '../loan-product-stepper/loan-product-capitalized-income-step/loan-product-capitalized-income-step.component'; +import { LoanProductDeferredIncomeRecognitionStepComponent } from '../loan-product-stepper/loan-product-capitalized-income-step/loan-product-deferred-income-recognition-step.component'; import { UntypedFormGroup } from '@angular/forms'; import { MatStepper, MatStepperIcon, MatStep, MatStepLabel } from '@angular/material/stepper'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; @@ -53,7 +53,7 @@ import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module'; LoanProductPaymentStrategyStepComponent, LoanProductTermsStepComponent, LoanProductChargesStepComponent, - LoanProductCapitalizedIncomeStepComponent, + LoanProductDeferredIncomeRecognitionStepComponent, LoanProductAccountingStepComponent, LoanProductPreviewStepComponent ] @@ -64,8 +64,8 @@ export class EditLoanProductComponent implements OnInit { loanProductCurrencyStep: LoanProductCurrencyStepComponent; @ViewChild(LoanProductInterestRefundStepComponent, { static: true }) loanProductInterestRefundStep: LoanProductInterestRefundStepComponent; - @ViewChild(LoanProductCapitalizedIncomeStepComponent, { static: true }) - loanProductCapitalizedIncomeStep: LoanProductCapitalizedIncomeStepComponent; + @ViewChild(LoanProductDeferredIncomeRecognitionStepComponent, { static: true }) + loanProductCapitalizedIncomeStep: LoanProductDeferredIncomeRecognitionStepComponent; @ViewChild(LoanProductTermsStepComponent, { static: true }) loanProductTermsStep: LoanProductTermsStepComponent; @ViewChild(LoanProductSettingsStepComponent, { static: true }) loanProductSettingsStep: LoanProductSettingsStepComponent; @@ -85,7 +85,7 @@ export class EditLoanProductComponent implements OnInit { advancedCreditAllocations: AdvancedCreditAllocation[] = []; supportedInterestRefundTypes: StringEnumOptionData[] = []; - capitalizedIncome: CapitalizedIncome | null = null; + deferredIncomeRecognition: DeferredIncomeRecognition | null = null; loanIncomeCapitalizationForm: UntypedFormGroup | null = null; /** @@ -123,18 +123,33 @@ export class EditLoanProductComponent implements OnInit { this.paymentAllocation = this.loanProductAndTemplate.paymentAllocation; this.creditAllocation = this.loanProductAndTemplate.creditAllocation; this.supportedInterestRefundTypes = this.loanProductAndTemplate.supportedInterestRefundTypes; + if (this.deferredIncomeRecognition == null) { + this.deferredIncomeRecognition = {}; + } if (this.loanProductAndTemplate.enableIncomeCapitalization) { - this.capitalizedIncome = { + this.deferredIncomeRecognition.capitalizedIncome = { enableIncomeCapitalization: true, capitalizedIncomeCalculationType: this.loanProductAndTemplate.capitalizedIncomeCalculationType.id, capitalizedIncomeStrategy: this.loanProductAndTemplate.capitalizedIncomeStrategy.id, capitalizedIncomeType: this.loanProductAndTemplate.capitalizedIncomeType.id }; } else { - this.capitalizedIncome = { + this.deferredIncomeRecognition.capitalizedIncome = { enableIncomeCapitalization: false }; } + if (this.loanProductAndTemplate.enableBuyDownFee) { + this.deferredIncomeRecognition.buyDownFee = { + enableBuyDownFee: true, + buyDownFeeCalculationType: this.loanProductAndTemplate.buyDownFeeCalculationType.id, + buyDownFeeStrategy: this.loanProductAndTemplate.buyDownFeeStrategy.id, + buyDownFeeIncomeType: this.loanProductAndTemplate.buyDownFeeIncomeType.id + }; + } else { + this.deferredIncomeRecognition.buyDownFee = { + enableBuyDownFee: false + }; + } } } @@ -195,9 +210,9 @@ export class EditLoanProductComponent implements OnInit { this.wasPaymentAllocationChanged = value; } - setCapitalizedIncome(capitalizedIncome: CapitalizedIncome): void { + setDeferredIncomeRecognition(deferredIncomeRecognition: DeferredIncomeRecognition): void { if (this.isAdvancedPaymentStrategy) { - this.capitalizedIncome = capitalizedIncome; + this.deferredIncomeRecognition = deferredIncomeRecognition; } } @@ -259,12 +274,27 @@ export class EditLoanProductComponent 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.capitalizedIncomeCalculationType; - loanProduct['capitalizedIncomeStrategy'] = this.capitalizedIncome.capitalizedIncomeStrategy; - loanProduct['capitalizedIncomeType'] = this.capitalizedIncome.capitalizedIncomeType; + if (this.deferredIncomeRecognition != null) { + if (this.deferredIncomeRecognition.capitalizedIncome != null) { + loanProduct['enableIncomeCapitalization'] = + this.deferredIncomeRecognition.capitalizedIncome.enableIncomeCapitalization; + if (this.deferredIncomeRecognition.capitalizedIncome.enableIncomeCapitalization) { + loanProduct['capitalizedIncomeCalculationType'] = + this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeCalculationType; + loanProduct['capitalizedIncomeStrategy'] = + this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeStrategy; + loanProduct['capitalizedIncomeType'] = + this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeType; + } + } + if (this.deferredIncomeRecognition.buyDownFee != null) { + loanProduct['enableBuyDownFee'] = this.deferredIncomeRecognition.buyDownFee.enableBuyDownFee; + if (this.deferredIncomeRecognition.buyDownFee.enableBuyDownFee) { + loanProduct['buyDownFeeCalculationType'] = + this.deferredIncomeRecognition.buyDownFee.buyDownFeeCalculationType; + loanProduct['buyDownFeeStrategy'] = this.deferredIncomeRecognition.buyDownFee.buyDownFeeStrategy; + loanProduct['buyDownFeeIncomeType'] = this.deferredIncomeRecognition.buyDownFee.buyDownFeeIncomeType; + } } } } diff --git a/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.html b/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.html index b82055bb99..c28f9e2581 100644 --- a/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.html +++ b/src/app/products/loan-products/loan-product-stepper/loan-product-accounting-step/loan-product-accounting-step.component.html @@ -181,7 +181,7 @@

{{ 'labels.heading.Income' | translate }}

{{ 'labels.heading.Liabilities' | translate }} (); - @Output() setViewChildForm = new EventEmitter(); - - constructor(private formBuilder: UntypedFormBuilder) { - this.enableIncomeCapitalization = - this.capitalizedIncome != null ? this.capitalizedIncome.enableIncomeCapitalization : false; - this.createCapitalizedIncomeForm(); - this.setConditionalControls(); - } - - createCapitalizedIncomeForm() { - if (this.enableIncomeCapitalization) { - this.loanIncomeCapitalizationForm = this.formBuilder.group({ - enableIncomeCapitalization: [this.enableIncomeCapitalization], - capitalizedIncomeCalculationType: [ - this.capitalizedIncome.capitalizedIncomeCalculationType, - Validators.required - ], - capitalizedIncomeStrategy: [ - this.capitalizedIncome.capitalizedIncomeStrategy, - Validators.required - ], - capitalizedIncomeType: [ - this.capitalizedIncome.capitalizedIncomeType, - Validators.required - ] - }); - } else { - this.loanIncomeCapitalizationForm = this.formBuilder.group({ - enableIncomeCapitalization: [this.enableIncomeCapitalization] - }); - } - this.setViewChildForm.emit(this.loanIncomeCapitalizationForm); - } - - ngOnChanges(changes: SimpleChanges): void { - this.enableIncomeCapitalization = this.capitalizedIncome - ? this.capitalizedIncome.enableIncomeCapitalization - : false; - if (this.enableIncomeCapitalization) { - this.loanIncomeCapitalizationForm.patchValue({ - enableIncomeCapitalization: this.enableIncomeCapitalization, - capitalizedIncomeCalculationType: this.capitalizedIncome.capitalizedIncomeCalculationType, - capitalizedIncomeStrategy: this.capitalizedIncome.capitalizedIncomeStrategy, - capitalizedIncomeType: this.capitalizedIncome.capitalizedIncomeType - }); - } - this.setViewChildForm.emit(this.loanIncomeCapitalizationForm); - } - - setConditionalControls() { - this.loanIncomeCapitalizationForm.get('enableIncomeCapitalization').valueChanges.subscribe((enabled: boolean) => { - this.enableIncomeCapitalization = enabled; - if (this.enableIncomeCapitalization) { - const capitalizedIncomeCalculationType = - !this.capitalizedIncome.capitalizedIncomeCalculationType || - this.capitalizedIncome.capitalizedIncomeCalculationType == '' - ? this.capitalizedIncomeCalculationTypeOptions[0].id - : this.capitalizedIncome.capitalizedIncomeCalculationType; - this.loanIncomeCapitalizationForm.addControl( - 'capitalizedIncomeCalculationType', - new UntypedFormControl(capitalizedIncomeCalculationType, Validators.required) - ); - const capitalizedIncomeStrategy = - !this.capitalizedIncome.capitalizedIncomeStrategy || this.capitalizedIncome.capitalizedIncomeStrategy == '' - ? this.capitalizedIncomeStrategyOptions[0].id - : this.capitalizedIncome.capitalizedIncomeStrategy; - this.loanIncomeCapitalizationForm.addControl( - 'capitalizedIncomeStrategy', - new UntypedFormControl(capitalizedIncomeStrategy, Validators.required) - ); - const capitalizedIncomeType = - !this.capitalizedIncome.capitalizedIncomeType || this.capitalizedIncome.capitalizedIncomeType == '' - ? this.capitalizedIncomeTypeOptions[0].id - : this.capitalizedIncome.capitalizedIncomeType; - this.loanIncomeCapitalizationForm.addControl( - 'capitalizedIncomeType', - new UntypedFormControl(capitalizedIncomeType, Validators.required) - ); - this.setCapitalizedIncome.emit({ - enableIncomeCapitalization: true, - capitalizedIncomeCalculationType: capitalizedIncomeCalculationType, - capitalizedIncomeStrategy: capitalizedIncomeStrategy, - capitalizedIncomeType: capitalizedIncomeType - }); - - this.loanIncomeCapitalizationForm - .get('capitalizedIncomeCalculationType') - .valueChanges.subscribe((newValue: string) => { - this.setCapitalizedIncome.emit({ - enableIncomeCapitalization: true, - capitalizedIncomeCalculationType: newValue, - capitalizedIncomeStrategy: this.loanIncomeCapitalizationForm.value.capitalizedIncomeStrategy, - capitalizedIncomeType: this.loanIncomeCapitalizationForm.value.capitalizedIncomeType - }); - }); - this.loanIncomeCapitalizationForm - .get('capitalizedIncomeStrategy') - .valueChanges.subscribe((newValue: string) => { - this.setCapitalizedIncome.emit({ - enableIncomeCapitalization: true, - capitalizedIncomeCalculationType: - this.loanIncomeCapitalizationForm.value.capitalizedIncomeCalculationType, - capitalizedIncomeStrategy: newValue, - capitalizedIncomeType: this.loanIncomeCapitalizationForm.value.capitalizedIncomeType - }); - }); - this.loanIncomeCapitalizationForm.get('capitalizedIncomeType').valueChanges.subscribe((newValue: string) => { - this.setCapitalizedIncome.emit({ - enableIncomeCapitalization: true, - capitalizedIncomeCalculationType: this.loanIncomeCapitalizationForm.value.capitalizedIncomeCalculationType, - capitalizedIncomeStrategy: this.loanIncomeCapitalizationForm.value.capitalizedIncomeStrategy, - capitalizedIncomeType: newValue - }); - }); - } else { - this.loanIncomeCapitalizationForm.removeControl('capitalizedIncomeCalculationType'); - this.loanIncomeCapitalizationForm.removeControl('capitalizedIncomeStrategy'); - this.loanIncomeCapitalizationForm.removeControl('capitalizedIncomeType'); - this.setCapitalizedIncome.emit({ enableIncomeCapitalization: false }); - } - - this.setViewChildForm.emit(this.loanIncomeCapitalizationForm); - }); - } -} diff --git a/src/app/products/loan-products/loan-product-stepper/loan-product-capitalized-income-step/loan-product-capitalized-income-step.component.html b/src/app/products/loan-products/loan-product-stepper/loan-product-capitalized-income-step/loan-product-deferred-income-recognition-step.component.html similarity index 51% rename from src/app/products/loan-products/loan-product-stepper/loan-product-capitalized-income-step/loan-product-capitalized-income-step.component.html rename to src/app/products/loan-products/loan-product-stepper/loan-product-capitalized-income-step/loan-product-deferred-income-recognition-step.component.html index 7a49e75208..f7072ec876 100644 --- a/src/app/products/loan-products/loan-product-stepper/loan-product-capitalized-income-step/loan-product-capitalized-income-step.component.html +++ b/src/app/products/loan-products/loan-product-stepper/loan-product-capitalized-income-step/loan-product-deferred-income-recognition-step.component.html @@ -1,4 +1,4 @@ -
+
{{ 'labels.inputs.Enable income capitalization' | translate }} @@ -38,4 +38,37 @@
+
+ + {{ 'labels.inputs.Enable Buy down fee' | translate }} + + + + {{ 'labels.inputs.Buy down fee calculation type' | translate }} + + + {{ buyDownFeeCalculationType.value | translateKey: 'catalogs' }} + + + + + {{ 'labels.inputs.Buy down fee strategy' | translate }} + + + {{ buyDownFeeStrategy.value | translateKey: 'catalogs' }} + + + + + {{ 'labels.inputs.Buy down fee income type' | translate }} + + + {{ buyDownFeeIncomeType.value | translateKey: 'catalogs' }} + + + +
diff --git a/src/app/products/loan-products/loan-product-stepper/loan-product-capitalized-income-step/loan-product-capitalized-income-step.component.scss b/src/app/products/loan-products/loan-product-stepper/loan-product-capitalized-income-step/loan-product-deferred-income-recognition-step.component.scss similarity index 100% rename from src/app/products/loan-products/loan-product-stepper/loan-product-capitalized-income-step/loan-product-capitalized-income-step.component.scss rename to src/app/products/loan-products/loan-product-stepper/loan-product-capitalized-income-step/loan-product-deferred-income-recognition-step.component.scss diff --git a/src/app/products/loan-products/loan-product-stepper/loan-product-capitalized-income-step/loan-product-deferred-income-recognition-step.component.ts b/src/app/products/loan-products/loan-product-stepper/loan-product-capitalized-income-step/loan-product-deferred-income-recognition-step.component.ts new file mode 100644 index 0000000000..45cc0ef188 --- /dev/null +++ b/src/app/products/loan-products/loan-product-stepper/loan-product-capitalized-income-step/loan-product-deferred-income-recognition-step.component.ts @@ -0,0 +1,257 @@ +import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; +import { + UntypedFormBuilder, + UntypedFormControl, + UntypedFormGroup, + Validators, + ReactiveFormsModule +} from '@angular/forms'; +import { + DeferredIncomeRecognition, + CapitalizedIncome, + BuyDownFee +} from '../loan-product-payment-strategy-step/payment-allocation-model'; +import { StringEnumOptionData } from 'app/shared/models/option-data.model'; +import { MatCheckbox } from '@angular/material/checkbox'; +import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module'; + +@Component({ + selector: 'mifosx-loan-product-capitalized-income-step', + templateUrl: './loan-product-deferred-income-recognition-step.component.html', + styleUrls: ['./loan-product-deferred-income-recognition-step.component.scss'], + imports: [ + ...STANDALONE_SHARED_IMPORTS, + MatCheckbox + ] +}) +export class LoanProductDeferredIncomeRecognitionStepComponent implements OnChanges { + @Input() deferredIncomeRecognition: DeferredIncomeRecognition; + @Input() capitalizedIncomeCalculationTypeOptions: StringEnumOptionData[]; + @Input() capitalizedIncomeStrategyOptions: StringEnumOptionData[]; + @Input() capitalizedIncomeTypeOptions: StringEnumOptionData[]; + @Input() buyDownFeeCalculationTypeOptions: StringEnumOptionData[]; + @Input() buyDownFeeStrategyOptions: StringEnumOptionData[]; + @Input() buyDownFeeIncomeTypeOptions: StringEnumOptionData[]; + + loanDeferredIncomeRecognitionForm: UntypedFormGroup; + + enableIncomeCapitalization: boolean; + enableBuyDownFee: boolean; + + @Output() setDeferredIncomeRecognition = new EventEmitter(); + @Output() setViewChildForm = new EventEmitter(); + + constructor(private formBuilder: UntypedFormBuilder) { + this.enableIncomeCapitalization = + this.deferredIncomeRecognition != null + ? this.deferredIncomeRecognition.capitalizedIncome.enableIncomeCapitalization + : false; + this.enableBuyDownFee = + this.deferredIncomeRecognition != null ? this.deferredIncomeRecognition.buyDownFee.enableBuyDownFee : false; + this.createCapitalizedIncomeForm(); + this.setConditionalControls(); + } + + createCapitalizedIncomeForm() { + this.loanDeferredIncomeRecognitionForm = this.formBuilder.group({ + enableIncomeCapitalization: [this.enableIncomeCapitalization], + enableBuyDownFee: [this.enableBuyDownFee] + }); + if (this.enableIncomeCapitalization) { + this.loanDeferredIncomeRecognitionForm.addControl('capitalizedIncomeCalculationType', [ + this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeCalculationType, + Validators.required + ]); + this.loanDeferredIncomeRecognitionForm.addControl('capitalizedIncomeStrategy', [ + this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeStrategy, + Validators.required + ]); + this.loanDeferredIncomeRecognitionForm.addControl('capitalizedIncomeType', [ + this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeType, + Validators.required + ]); + } + if (this.enableBuyDownFee) { + this.loanDeferredIncomeRecognitionForm.addControl('buyDownFeeCalculationType', [ + this.deferredIncomeRecognition.buyDownFee.buyDownFeeCalculationType, + Validators.required + ]); + this.loanDeferredIncomeRecognitionForm.addControl('buyDownFeeStrategy', [ + this.deferredIncomeRecognition.buyDownFee.buyDownFeeStrategy, + Validators.required + ]); + this.loanDeferredIncomeRecognitionForm.addControl('buyDownFeeIncomeType', [ + this.deferredIncomeRecognition.buyDownFee.buyDownFeeIncomeType, + Validators.required + ]); + } + this.setViewChildForm.emit(this.loanDeferredIncomeRecognitionForm); + } + + ngOnChanges(changes: SimpleChanges): void { + this.enableIncomeCapitalization = this.deferredIncomeRecognition.capitalizedIncome + ? this.deferredIncomeRecognition.capitalizedIncome.enableIncomeCapitalization + : false; + this.enableBuyDownFee = this.deferredIncomeRecognition.buyDownFee + ? this.deferredIncomeRecognition.buyDownFee.enableBuyDownFee + : false; + if (this.enableIncomeCapitalization) { + this.loanDeferredIncomeRecognitionForm.patchValue({ + enableIncomeCapitalization: this.enableIncomeCapitalization, + capitalizedIncomeCalculationType: + this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeCalculationType, + capitalizedIncomeStrategy: this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeStrategy, + capitalizedIncomeType: this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeType + }); + } + if (this.enableBuyDownFee) { + this.loanDeferredIncomeRecognitionForm.patchValue({ + enableBuyDownFee: this.enableBuyDownFee, + buyDownFeeCalculationType: this.deferredIncomeRecognition.buyDownFee.buyDownFeeCalculationType, + buyDownFeeStrategy: this.deferredIncomeRecognition.buyDownFee.buyDownFeeStrategy, + buyDownFeeIncomeType: this.deferredIncomeRecognition.buyDownFee.buyDownFeeIncomeType + }); + } + this.setViewChildForm.emit(this.loanDeferredIncomeRecognitionForm); + } + + setConditionalControls() { + this.loanDeferredIncomeRecognitionForm + .get('enableIncomeCapitalization') + .valueChanges.subscribe((enabled: boolean) => { + this.enableIncomeCapitalization = enabled; + if (this.enableIncomeCapitalization) { + const capitalizedIncomeCalculationType = + !( + this.deferredIncomeRecognition.capitalizedIncome && + this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeCalculationType + ) || this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeCalculationType == '' + ? this.capitalizedIncomeCalculationTypeOptions[0].id + : this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeCalculationType; + this.loanDeferredIncomeRecognitionForm.addControl( + 'capitalizedIncomeCalculationType', + new UntypedFormControl(capitalizedIncomeCalculationType, Validators.required) + ); + const capitalizedIncomeStrategy = + !this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeStrategy || + this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeStrategy == '' + ? this.capitalizedIncomeStrategyOptions[0].id + : this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeStrategy; + this.loanDeferredIncomeRecognitionForm.addControl( + 'capitalizedIncomeStrategy', + new UntypedFormControl(capitalizedIncomeStrategy, Validators.required) + ); + const capitalizedIncomeType = + !this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeType || + this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeType == '' + ? this.capitalizedIncomeTypeOptions[0].id + : this.deferredIncomeRecognition.capitalizedIncome.capitalizedIncomeType; + this.loanDeferredIncomeRecognitionForm.addControl( + 'capitalizedIncomeType', + new UntypedFormControl(capitalizedIncomeType, Validators.required) + ); + + this.loanDeferredIncomeRecognitionForm + .get('capitalizedIncomeCalculationType') + .valueChanges.subscribe((newValue: string) => { + this.emitValuesChange(); + }); + this.loanDeferredIncomeRecognitionForm + .get('capitalizedIncomeStrategy') + .valueChanges.subscribe((newValue: string) => { + this.emitValuesChange(); + }); + this.loanDeferredIncomeRecognitionForm + .get('capitalizedIncomeType') + .valueChanges.subscribe((newValue: string) => { + this.emitValuesChange(); + }); + } else { + this.loanDeferredIncomeRecognitionForm.removeControl('capitalizedIncomeCalculationType'); + this.loanDeferredIncomeRecognitionForm.removeControl('capitalizedIncomeStrategy'); + this.loanDeferredIncomeRecognitionForm.removeControl('capitalizedIncomeType'); + } + + this.emitValuesChange(); + this.setViewChildForm.emit(this.loanDeferredIncomeRecognitionForm); + }); + + this.loanDeferredIncomeRecognitionForm.get('enableBuyDownFee').valueChanges.subscribe((enabled: boolean) => { + this.enableBuyDownFee = enabled; + if (this.enableBuyDownFee) { + const buyDownFeeCalculationType = + !this.deferredIncomeRecognition.buyDownFee.buyDownFeeCalculationType || + this.deferredIncomeRecognition.buyDownFee.buyDownFeeCalculationType == '' + ? this.buyDownFeeCalculationTypeOptions[0].id + : this.deferredIncomeRecognition.buyDownFee.buyDownFeeCalculationType; + this.loanDeferredIncomeRecognitionForm.addControl( + 'buyDownFeeCalculationType', + new UntypedFormControl(buyDownFeeCalculationType, Validators.required) + ); + const buyDownFeeStrategy = + !this.deferredIncomeRecognition.buyDownFee.buyDownFeeStrategy || + this.deferredIncomeRecognition.buyDownFee.buyDownFeeStrategy == '' + ? this.buyDownFeeStrategyOptions[0].id + : this.deferredIncomeRecognition.buyDownFee.buyDownFeeStrategy; + this.loanDeferredIncomeRecognitionForm.addControl( + 'buyDownFeeStrategy', + new UntypedFormControl(buyDownFeeStrategy, Validators.required) + ); + const buyDownFeeIncomeType = + !this.deferredIncomeRecognition.buyDownFee.buyDownFeeIncomeType || + this.deferredIncomeRecognition.buyDownFee.buyDownFeeIncomeType == '' + ? this.buyDownFeeIncomeTypeOptions[0].id + : this.deferredIncomeRecognition.buyDownFee.buyDownFeeIncomeType; + this.loanDeferredIncomeRecognitionForm.addControl( + 'buyDownFeeIncomeType', + new UntypedFormControl(buyDownFeeIncomeType, Validators.required) + ); + + this.loanDeferredIncomeRecognitionForm + .get('buyDownFeeCalculationType') + .valueChanges.subscribe((newValue: string) => { + this.emitValuesChange(); + }); + this.loanDeferredIncomeRecognitionForm.get('buyDownFeeStrategy').valueChanges.subscribe((newValue: string) => { + this.emitValuesChange(); + }); + this.loanDeferredIncomeRecognitionForm + .get('buyDownFeeIncomeType') + .valueChanges.subscribe((newValue: string) => { + this.emitValuesChange(); + }); + } else { + this.loanDeferredIncomeRecognitionForm.removeControl('buyDownFeeCalculationType'); + this.loanDeferredIncomeRecognitionForm.removeControl('buyDownFeeStrategy'); + this.loanDeferredIncomeRecognitionForm.removeControl('buyDownFeeIncomeType'); + } + + this.emitValuesChange(); + this.setViewChildForm.emit(this.loanDeferredIncomeRecognitionForm); + }); + } + + emitValuesChange(): void { + const capitalizedIncome: CapitalizedIncome = this.enableIncomeCapitalization + ? { + enableIncomeCapitalization: true, + capitalizedIncomeCalculationType: + this.loanDeferredIncomeRecognitionForm.value.capitalizedIncomeCalculationType, + capitalizedIncomeStrategy: this.loanDeferredIncomeRecognitionForm.value.capitalizedIncomeStrategy, + capitalizedIncomeType: this.loanDeferredIncomeRecognitionForm.value.capitalizedIncomeType + } + : { enableIncomeCapitalization: false }; + const buyDownFee: BuyDownFee = this.enableBuyDownFee + ? { + enableBuyDownFee: true, + buyDownFeeCalculationType: this.loanDeferredIncomeRecognitionForm.value.buyDownFeeCalculationType, + buyDownFeeStrategy: this.loanDeferredIncomeRecognitionForm.value.buyDownFeeStrategy, + buyDownFeeIncomeType: this.loanDeferredIncomeRecognitionForm.value.buyDownFeeIncomeType + } + : { enableBuyDownFee: false }; + this.setDeferredIncomeRecognition.emit({ + capitalizedIncome: capitalizedIncome, + buyDownFee: buyDownFee + }); + } +} diff --git a/src/app/products/loan-products/loan-product-stepper/loan-product-payment-strategy-step/payment-allocation-model.ts b/src/app/products/loan-products/loan-product-stepper/loan-product-payment-strategy-step/payment-allocation-model.ts index 066ee01997..48ee7fb3d2 100644 --- a/src/app/products/loan-products/loan-product-stepper/loan-product-payment-strategy-step/payment-allocation-model.ts +++ b/src/app/products/loan-products/loan-product-stepper/loan-product-payment-strategy-step/payment-allocation-model.ts @@ -49,6 +49,18 @@ export interface CapitalizedIncome { capitalizedIncomeType?: string; } +export interface BuyDownFee { + enableBuyDownFee: boolean; + buyDownFeeCalculationType?: string; + buyDownFeeStrategy?: string; + buyDownFeeIncomeType?: string; +} + +export interface DeferredIncomeRecognition { + capitalizedIncome?: CapitalizedIncome; + buyDownFee?: BuyDownFee; +} + export class PaymentAllocationTransactionTypes { public static DEFAULT_TRANSACTION: PaymentAllocationTransactionType = { id: 1, value: 'Default', code: 'DEFAULT' }; } diff --git a/src/app/products/loan-products/models/loan-product.model.ts b/src/app/products/loan-products/models/loan-product.model.ts index 2390d007b4..c064003485 100644 --- a/src/app/products/loan-products/models/loan-product.model.ts +++ b/src/app/products/loan-products/models/loan-product.model.ts @@ -71,6 +71,11 @@ export interface LoanProduct { capitalizedIncomeStrategy?: OptionData; capitalizedIncomeType?: OptionData; + enableBuyDownFee?: boolean; + buyDownFeeCalculationType?: OptionData; + buyDownFeeStrategy?: OptionData; + buyDownFeeIncomeType?: OptionData; + canDefineInstallmentAmount: boolean; graceOnArrearsAgeing?: number; overdueDaysForNPA?: number; diff --git a/src/app/products/products.module.ts b/src/app/products/products.module.ts index 5535fbd25d..b8701b6612 100644 --- a/src/app/products/products.module.ts +++ b/src/app/products/products.module.ts @@ -121,7 +121,7 @@ import { LoanProductPaymentStrategyStepComponent } from './loan-products/loan-pr import { ViewAdvancePaymenyAllocationComponent } from './loan-products/view-loan-product/shared/view-advance-paymeny-allocation/view-advance-paymeny-allocation.component'; import { AdvancePaymentAllocationTabComponent } from './loan-products/loan-product-stepper/loan-product-payment-strategy-step/advance-payment-allocation-tab/advance-payment-allocation-tab.component'; import { LoanProductSummaryComponent } from './loan-products/common/loan-product-summary/loan-product-summary.component'; -import { LoanProductCapitalizedIncomeStepComponent } from './loan-products/loan-product-stepper/loan-product-capitalized-income-step/loan-product-capitalized-income-step.component'; +import { LoanProductDeferredIncomeRecognitionStepComponent } from './loan-products/loan-product-stepper/loan-product-capitalized-income-step/loan-product-deferred-income-recognition-step.component'; /** * Products Module @@ -249,7 +249,7 @@ import { LoanProductCapitalizedIncomeStepComponent } from './loan-products/loan- ViewAdvancePaymenyAllocationComponent, AdvancePaymentAllocationTabComponent, LoanProductSummaryComponent, - LoanProductCapitalizedIncomeStepComponent + LoanProductDeferredIncomeRecognitionStepComponent ] }) export class ProductsModule {} diff --git a/src/assets/translations/cs-CS.json b/src/assets/translations/cs-CS.json index 36f233fc0b..2308c942f2 100644 --- a/src/assets/translations/cs-CS.json +++ b/src/assets/translations/cs-CS.json @@ -2471,7 +2471,13 @@ "Enable income capitalization": "Povolit kapitalizaci příjmu", "Income capitalization calculation type": "Typ výpočtu kapitalizace příjmu", "Income capitalization strategy": "Strategie kapitalizace příjmu", - "Income capitalization type": "Typ kapitalizace příjmu" + "Income capitalization type": "Typ kapitalizace příjmu", + "DEFERRED INCOME RECOGNITION": "Vykazování odložených výnosů", + "Enable Buy down fee": "Povolit poplatek za odkup", + "Buy down fee calculation type": "Typ výpočtu poplatku za odkup", + "Buy down fee strategy": "Strategie poplatku za odkup", + "Buy down fee income type": "Typ příjmu z poplatku za odkup", + "Buy down fees": "Poplatky za odkup" }, "links": { "Community": "Společenství", diff --git a/src/assets/translations/de-DE.json b/src/assets/translations/de-DE.json index 61b47b1d7c..21b1a8c485 100644 --- a/src/assets/translations/de-DE.json +++ b/src/assets/translations/de-DE.json @@ -2471,7 +2471,13 @@ "Enable income capitalization": "Aktivieren Sie die Einkommenskapitalisierung", "Income capitalization calculation type": "Berechnungsart der Einkommenskapitalisierung", "Income capitalization strategy": "Strategie zur Ertragskapitalisierung", - "Income capitalization type": "Art der Ertragskapitalisierung" + "Income capitalization type": "Art der Ertragskapitalisierung", + "DEFERRED INCOME RECOGNITION": "Erfassung abgegrenzter Erträge", + "Enable Buy down fee": "Buy-Down-Gebühr aktivieren", + "Buy down fee calculation type": "Berechnungsart der Buy-Down-Gebühr", + "Buy down fee strategy": "Strategie für Buy-Down-Gebühr", + "Buy down fee income type": "Einnahmeart der Buy-Down-Gebühr", + "Buy down fees": "Buy-Down-Gebühren" }, "links": { "Community": "Gemeinschaft", diff --git a/src/assets/translations/en-US.json b/src/assets/translations/en-US.json index c9c45092d3..5900fe27ff 100644 --- a/src/assets/translations/en-US.json +++ b/src/assets/translations/en-US.json @@ -2478,7 +2478,13 @@ "Enable income capitalization": "Enable income capitalization", "Income capitalization calculation type": "Income capitalization calculation type", "Income capitalization strategy": "Income capitalization strategy", - "Income capitalization type": "Income capitalization type" + "Income capitalization type": "Income capitalization type", + "DEFERRED INCOME RECOGNITION": "Deferred income recognition", + "Enable Buy down fee": "Enable Buy down fee", + "Buy down fee calculation type": "Buy down fee calculation type", + "Buy down fee strategy": "Buy down fee strategy", + "Buy down fee income type": "Buy down fee income type", + "Buy down fees": "Buy down fees" }, "links": { "Community": "Community", diff --git a/src/assets/translations/es-CL.json b/src/assets/translations/es-CL.json index a59bd17ce0..0e617ba078 100644 --- a/src/assets/translations/es-CL.json +++ b/src/assets/translations/es-CL.json @@ -2471,7 +2471,13 @@ "Enable income capitalization": "Habilitar capitalización de ingresos", "Income capitalization calculation type": "Tipo de cálculo de capitalización de ingresos", "Income capitalization strategy": "Estrategia de capitalización de ingresos", - "Income capitalization type": "Tipo de capitalización de ingresos" + "Income capitalization type": "Tipo de capitalización de ingresos", + "DEFERRED INCOME RECOGNITION": "Reconocimiento de ingresos diferidos", + "Enable Buy down fee": "Habilitar comisión de compra anticipada", + "Buy down fee calculation type": "Tipo de cálculo de comisión de compra anticipada", + "Buy down fee strategy": "Estrategia de comisión de compra anticipada", + "Buy down fee income type": "Tipo de ingreso de comisión de compra anticipada", + "Buy down fees": "Tarifas de compra anticipada" }, "links": { "Community": "Comunidad", diff --git a/src/assets/translations/es-MX.json b/src/assets/translations/es-MX.json index 1bd1949328..d4c809b8c2 100644 --- a/src/assets/translations/es-MX.json +++ b/src/assets/translations/es-MX.json @@ -2471,7 +2471,13 @@ "Enable income capitalization": "Habilitar capitalización de ingresos", "Income capitalization calculation type": "Tipo de cálculo de capitalización de ingresos", "Income capitalization strategy": "Estrategia de capitalización de ingresos", - "Income capitalization type": "Tipo de capitalización de ingresos" + "Income capitalization type": "Tipo de capitalización de ingresos", + "DEFERRED INCOME RECOGNITION": "Reconocimiento de ingresos diferidos", + "Enable Buy down fee": "Habilitar comisión de compra anticipada", + "Buy down fee calculation type": "Tipo de cálculo de comisión de compra anticipada", + "Buy down fee strategy": "Estrategia de comisión de compra anticipada", + "Buy down fee income type": "Tipo de ingreso de comisión de compra anticipada", + "Buy down fees": "Tarifas de compra anticipada" }, "links": { "Community": "Comunidad", diff --git a/src/assets/translations/fr-FR.json b/src/assets/translations/fr-FR.json index 5898bac7f9..197877faea 100644 --- a/src/assets/translations/fr-FR.json +++ b/src/assets/translations/fr-FR.json @@ -2471,7 +2471,13 @@ "Enable income capitalization": "Activer la capitalisation des revenus", "Income capitalization calculation type": "Type de calcul de capitalisation des revenus", "Income capitalization strategy": "Stratégie de capitalisation des revenus", - "Income capitalization type": "Type de capitalisation des revenus" + "Income capitalization type": "Type de capitalisation des revenus", + "DEFERRED INCOME RECOGNITION": "Comptabilisation des produits différés", + "Enable Buy down fee": "Activer les frais de rachat", + "Buy down fee calculation type": "Type de calcul des frais de rachat", + "Buy down fee strategy": "Stratégie des frais de rachat", + "Buy down fee income type": "Type de revenu des frais de rachat", + "Buy down fees": "Frais d'achat" }, "links": { "Community": "Communauté", diff --git a/src/assets/translations/it-IT.json b/src/assets/translations/it-IT.json index 188f5c0c19..0121581fca 100644 --- a/src/assets/translations/it-IT.json +++ b/src/assets/translations/it-IT.json @@ -2471,7 +2471,13 @@ "Enable income capitalization": "Abilita la capitalizzazione del reddito", "Income capitalization calculation type": "Tipo di calcolo della capitalizzazione del reddito", "Income capitalization strategy": "Strategia di capitalizzazione del reddito", - "Income capitalization type": "Tipo di capitalizzazione del reddito" + "Income capitalization type": "Tipo di capitalizzazione del reddito", + "DEFERRED INCOME RECOGNITION": "Rilevazione dei risconti passivi", + "Enable Buy down fee": "Abilita commissione di buy down", + "Buy down fee calculation type": "Tipo di calcolo della commissione di buy down", + "Buy down fee strategy": "Strategia per la commissione di buy down", + "Buy down fee income type": "Tipo di ricavo da commissione di buy down", + "Buy down fees": "Commissioni di acquisto" }, "links": { "Community": "Comunità", diff --git a/src/assets/translations/ko-KO.json b/src/assets/translations/ko-KO.json index 3c47f80bb6..ad889fff29 100644 --- a/src/assets/translations/ko-KO.json +++ b/src/assets/translations/ko-KO.json @@ -2472,7 +2472,13 @@ "Enable income capitalization": "소득 자본화 활성화", "Income capitalization calculation type": "소득 자본화 계산 유형", "Income capitalization strategy": "소득 자본화 전략", - "Income capitalization type": "소득 자본화 유형" + "Income capitalization type": "소득 자본화 유형", + "DEFERRED INCOME RECOGNITION": "이연수익 인식", + "Enable Buy down fee": "매수 수수료 활성화", + "Buy down fee calculation type": "매수 수수료 계산 유형", + "Buy down fee strategy": "매수 수수료 전략", + "Buy down fee income type": "매수 수수료 수익 유형", + "Buy down fees": "매수 수수료" }, "links": { "Community": "지역 사회", diff --git a/src/assets/translations/lt-LT.json b/src/assets/translations/lt-LT.json index 5a676fa166..f784f96d0d 100644 --- a/src/assets/translations/lt-LT.json +++ b/src/assets/translations/lt-LT.json @@ -2471,7 +2471,13 @@ "Enable income capitalization": "Įgalinti pajamų kapitalizaciją", "Income capitalization calculation type": "Pajamų kapitalizavimo skaičiavimo tipas", "Income capitalization strategy": "Pajamų kapitalizavimo strategija", - "Income capitalization type": "Pajamų kapitalizacijos tipas" + "Income capitalization type": "Pajamų kapitalizacijos tipas", + "DEFERRED INCOME RECOGNITION": "Atidėtųjų pajamų pripažinimas", + "Enable Buy down fee": "Įjungti supirkimo mokestį", + "Buy down fee calculation type": "Supirkimo mokesčio skaičiavimo tipas", + "Buy down fee strategy": "Supirkimo mokesčio strategija", + "Buy down fee income type": "Supirkimo mokesčio pajamų tipas", + "Buy down fees": "Išpirkimo mokesčiai" }, "links": { "Community": "bendruomenė", diff --git a/src/assets/translations/lv-LV.json b/src/assets/translations/lv-LV.json index 39904e58f1..9f003fb966 100644 --- a/src/assets/translations/lv-LV.json +++ b/src/assets/translations/lv-LV.json @@ -2471,7 +2471,13 @@ "Enable income capitalization": "Iespējot ienākumu kapitalizāciju", "Income capitalization calculation type": "Ienākumu kapitalizācijas aprēķina veids", "Income capitalization strategy": "Ienākumu kapitalizācijas stratēģija", - "Income capitalization type": "Ienākumu kapitalizācijas veids" + "Income capitalization type": "Ienākumu kapitalizācijas veids", + "DEFERRED INCOME RECOGNITION": "Atliktā ienākuma atzīšana", + "Enable Buy down fee": "Iespējot atpirkšanas maksu", + "Buy down fee calculation type": "Atpirkšanas maksas aprēķina veids", + "Buy down fee strategy": "Atpirkšanas maksas stratēģija", + "Buy down fee income type": "Atpirkšanas maksas ienākumu veids", + "Buy down fees": "Iepirkuma maksas" }, "links": { "Community": "kopiena", diff --git a/src/assets/translations/ne-NE.json b/src/assets/translations/ne-NE.json index 58debae852..87ba5a698e 100644 --- a/src/assets/translations/ne-NE.json +++ b/src/assets/translations/ne-NE.json @@ -2471,7 +2471,13 @@ "Enable income capitalization": "आय पूंजीकरण सक्षम गर्नुहोस्", "Income capitalization calculation type": "आय पूंजीकरण गणना प्रकार", "Income capitalization strategy": "आय पूंजीकरण रणनीति", - "Income capitalization type": "आय पूँजीकरण प्रकार" + "Income capitalization type": "आय पूँजीकरण प्रकार", + "DEFERRED INCOME RECOGNITION": "स्थगित आय पहिचान", + "Enable Buy down fee": "बाइ डाउन शुल्क सक्षम गर्नुहोस्", + "Buy down fee calculation type": "बाइ डाउन शुल्क गणना प्रकार", + "Buy down fee strategy": "बाइ डाउन शुल्क रणनीति", + "Buy down fee income type": "बाइ डाउन शुल्क आय प्रकार", + "Buy down fees": "खरिद शुल्क" }, "links": { "Community": "समुदाय", diff --git a/src/assets/translations/pt-PT.json b/src/assets/translations/pt-PT.json index 13044f5c01..01b021085e 100644 --- a/src/assets/translations/pt-PT.json +++ b/src/assets/translations/pt-PT.json @@ -2471,7 +2471,13 @@ "Enable income capitalization": "Habilitar capitalização de renda", "Income capitalization calculation type": "Tipo de cálculo de capitalização de renda", "Income capitalization strategy": "Estratégia de capitalização de renda", - "Income capitalization type": "Tipo de capitalização de renda" + "Income capitalization type": "Tipo de capitalização de renda", + "DEFERRED INCOME RECOGNITION": "Reconhecimento de receita diferida", + "Enable Buy down fee": "Habilitar taxa de aquisição", + "Buy down fee calculation type": "Tipo de cálculo de taxa de aquisição", + "Buy down fee strategy": "Estratégia de taxa de aquisição", + "Buy down fee income type": "Tipo de receita de taxa de aquisição", + "Buy down fees": "Taxas de compra antecipada" }, "links": { "Community": "Comunidade", diff --git a/src/assets/translations/sw-SW.json b/src/assets/translations/sw-SW.json index a401934b11..ea0898ce8c 100644 --- a/src/assets/translations/sw-SW.json +++ b/src/assets/translations/sw-SW.json @@ -2471,7 +2471,13 @@ "Enable income capitalization": "Washa mtaji wa mapato", "Income capitalization calculation type": "Aina ya kukokotoa mtaji wa mapato", "Income capitalization strategy": "Mkakati wa mtaji wa mapato", - "Income capitalization type": "Aina ya mtaji wa mapato" + "Income capitalization type": "Aina ya mtaji wa mapato", + "DEFERRED INCOME RECOGNITION": "Utambuzi wa mapato ulioahirishwa", + "Enable Buy down fee": "Washa ada ya Kununua chini", + "Buy down fee calculation type": "Nunua aina ya hesabu ya ada ya chini", + "Buy down fee strategy": "Nunua mkakati wa ada ya chini", + "Buy down fee income type": "Nunua aina ya mapato ya chini", + "Buy down fees": "Nunua ada za chini" }, "links": { "Community": "Jumuiya",