WEB-204: Loan product config - buy down fees
This commit is contained in:
@@ -101,6 +101,28 @@
|
||||
<span class="flex-50"> {{ loanDetails.capitalizedIncomeType?.value | translateKey: 'catalogs' }} </span>
|
||||
</div>
|
||||
|
||||
<div class="flex-fill layout-row">
|
||||
<span class="flex-50"> {{ 'labels.inputs.Enable Buy down fee' | translate }}</span>
|
||||
<span class="flex-50"> {{ loanDetails.enableBuyDownFee | yesNo }} </span>
|
||||
</div>
|
||||
|
||||
<div class="flex-fill layout-row" *ngIf="loanDetails.enableBuyDownFee">
|
||||
<span class="flex-50"> {{ 'labels.inputs.Buy down fee calculation type' | translate }}</span>
|
||||
<span class="flex-50">
|
||||
{{ loanDetails.buyDownFeeCalculationType?.value | translateKey: 'catalogs' }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="flex-fill layout-row" *ngIf="loanDetails.enableBuyDownFee">
|
||||
<span class="flex-50"> {{ 'labels.inputs.Buy down fee strategy' | translate }}</span>
|
||||
<span class="flex-50"> {{ loanDetails.buyDownFeeStrategy?.value | translateKey: 'catalogs' }} </span>
|
||||
</div>
|
||||
|
||||
<div class="flex-fill layout-row" *ngIf="loanDetails.enableBuyDownFee">
|
||||
<span class="flex-50"> {{ 'labels.inputs.Buy down fee income type' | translate }}</span>
|
||||
<span class="flex-50"> {{ loanDetails.buyDownFeeIncomeType?.value | translateKey: 'catalogs' }} </span>
|
||||
</div>
|
||||
|
||||
<div class="flex-fill layout-row">
|
||||
<span class="flex-50"> {{ 'labels.inputs.Grace: On Principal Payment' | translate }}</span>
|
||||
<span class="flex-50"> {{ loanDetails.graceOnPrincipalPayment }} </span>
|
||||
|
||||
+24
-3
@@ -875,10 +875,31 @@
|
||||
<span class="flex-47">{{ 'labels.inputs.Income type' | translate }}:</span>
|
||||
<span class="flex-53">{{ loanProduct.capitalizedIncomeType?.value | translateKey: 'catalogs' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div fxFlexFill *ngIf="loanProduct.enableIncomeCapitalization">
|
||||
<span fxFlex="47%">{{ 'labels.inputs.Income type' | translate }}:</span>
|
||||
<span fxFlex="53%">{{ loanProduct.capitalizedIncomeType?.value | translateKey: 'catalogs' }}</span>
|
||||
<div class="flex-100 layout-row-wrap responsive-column" *ngIf="isAdvancedPaymentAllocation">
|
||||
<h3 class="mat-h3 flex-100">{{ 'labels.inputs.Buy down fees' | translate }}</h3>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div class="flex-100 layout-row">
|
||||
<span class="flex-47">{{ 'labels.inputs.Enable Buy down fee' | translate }}:</span>
|
||||
<span class="flex-53">{{ loanProduct.enableBuyDownFee | yesNo }}</span>
|
||||
</div>
|
||||
|
||||
<div class="flex-100 layout-row" *ngIf="loanProduct.enableBuyDownFee">
|
||||
<span class="flex-47">{{ 'labels.inputs.Buy down fee calculation type' | translate }}:</span>
|
||||
<span class="flex-53">{{ loanProduct.buyDownFeeCalculationType?.value | translateKey: 'catalogs' }}</span>
|
||||
</div>
|
||||
|
||||
<div class="flex-100 layout-row" *ngIf="loanProduct.enableBuyDownFee">
|
||||
<span class="flex-47">{{ 'labels.inputs.Buy down fee strategy' | translate }}:</span>
|
||||
<span class="flex-53">{{ loanProduct.buyDownFeeStrategy?.value | translateKey: 'catalogs' }}</span>
|
||||
</div>
|
||||
|
||||
<div class="flex-100 layout-row" *ngIf="loanProduct.enableBuyDownFee">
|
||||
<span class="flex-47">{{ 'labels.inputs.Buy down fee income type' | translate }}:</span>
|
||||
<span class="flex-53">{{ loanProduct.buyDownFeeIncomeType?.value | translateKey: 'catalogs' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
+17
@@ -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
|
||||
|
||||
+10
-5
@@ -54,6 +54,8 @@
|
||||
(supportedInterestRefundTypes)="setSupportedInterestRefundTypes($event)"
|
||||
>
|
||||
</mifosx-loan-product-interest-refund-step>
|
||||
|
||||
<mifosx-stepper-buttons></mifosx-stepper-buttons>
|
||||
</mat-step>
|
||||
|
||||
<mat-step *ngIf="isAdvancedPaymentStrategy">
|
||||
@@ -91,15 +93,18 @@
|
||||
</mifosx-loan-product-charges-step>
|
||||
</mat-step>
|
||||
|
||||
<mat-step *ngIf="isAdvancedPaymentStrategy" [stepControl]="loanIncomeCapitalizationForm" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.INCOME CAPITALIZATION' | translate }}</ng-template>
|
||||
<mat-step *ngIf="isAdvancedPaymentStrategy" [stepControl]="loanDeferredIncomeRecognitionForm" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.DEFERRED INCOME RECOGNITION' | translate }}</ng-template>
|
||||
|
||||
<mifosx-loan-product-capitalized-income-step
|
||||
[capitalizedIncome]="capitalizedIncome"
|
||||
[deferredIncomeRecognition]="deferredIncomeRecognition"
|
||||
[capitalizedIncomeCalculationTypeOptions]="loanProductsTemplate.capitalizedIncomeCalculationTypeOptions"
|
||||
[capitalizedIncomeStrategyOptions]="loanProductsTemplate.capitalizedIncomeStrategyOptions"
|
||||
[capitalizedIncomeTypeOptions]="loanProductsTemplate.capitalizedIncomeTypeOptions"
|
||||
(setCapitalizedIncome)="setCapitalizedIncome($event)"
|
||||
[buyDownFeeCalculationTypeOptions]="loanProductsTemplate.buyDownFeeCalculationTypeOptions"
|
||||
[buyDownFeeStrategyOptions]="loanProductsTemplate.buyDownFeeStrategyOptions"
|
||||
[buyDownFeeIncomeTypeOptions]="loanProductsTemplate.buyDownFeeIncomeTypeOptions"
|
||||
(setDeferredIncomeRecognition)="setDeferredIncomeRecognition($event)"
|
||||
(setViewChildForm)="setViewChildForm($event)"
|
||||
>
|
||||
</mifosx-loan-product-capitalized-income-step>
|
||||
@@ -114,7 +119,7 @@
|
||||
[loanProductsTemplate]="loanProductsTemplate"
|
||||
[accountingRuleData]="accountingRuleData"
|
||||
[loanProductFormValid]="loanProductFormValid"
|
||||
[capitalizedIncome]="capitalizedIncome"
|
||||
[deferredIncomeRecognition]="deferredIncomeRecognition"
|
||||
>
|
||||
</mifosx-loan-product-accounting-step>
|
||||
</mat-step>
|
||||
|
||||
+46
-19
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,14 +94,17 @@
|
||||
</mat-step>
|
||||
|
||||
<mat-step *ngIf="isAdvancedPaymentStrategy" [stepControl]="loanIncomeCapitalizationForm" completed>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.INCOME CAPITALIZATION' | translate }}</ng-template>
|
||||
<ng-template matStepLabel>{{ 'labels.inputs.DEFERRED INCOME RECOGNITION' | translate }}</ng-template>
|
||||
|
||||
<mifosx-loan-product-capitalized-income-step
|
||||
[capitalizedIncome]="capitalizedIncome"
|
||||
[deferredIncomeRecognition]="deferredIncomeRecognition"
|
||||
[capitalizedIncomeCalculationTypeOptions]="loanProductAndTemplate.capitalizedIncomeCalculationTypeOptions"
|
||||
[capitalizedIncomeStrategyOptions]="loanProductAndTemplate.capitalizedIncomeStrategyOptions"
|
||||
[capitalizedIncomeTypeOptions]="loanProductAndTemplate.capitalizedIncomeTypeOptions"
|
||||
(setCapitalizedIncome)="setCapitalizedIncome($event)"
|
||||
[buyDownFeeCalculationTypeOptions]="loanProductAndTemplate.buyDownFeeCalculationTypeOptions"
|
||||
[buyDownFeeStrategyOptions]="loanProductAndTemplate.buyDownFeeStrategyOptions"
|
||||
[buyDownFeeIncomeTypeOptions]="loanProductAndTemplate.buyDownFeeIncomeTypeOptions"
|
||||
(setDeferredIncomeRecognition)="setDeferredIncomeRecognition($event)"
|
||||
(setViewChildForm)="setViewChildForm($event)"
|
||||
>
|
||||
</mifosx-loan-product-capitalized-income-step>
|
||||
@@ -116,7 +119,7 @@
|
||||
[loanProductsTemplate]="loanProductAndTemplate"
|
||||
[accountingRuleData]="accountingRuleData"
|
||||
[loanProductFormValid]="loanProductFormValidAndNotPristine"
|
||||
[capitalizedIncome]="capitalizedIncome"
|
||||
[deferredIncomeRecognition]="deferredIncomeRecognition"
|
||||
>
|
||||
</mifosx-loan-product-accounting-step>
|
||||
</mat-step>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -181,7 +181,7 @@
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector
|
||||
*ngIf="capitalizedIncome?.enableIncomeCapitalization"
|
||||
*ngIf="deferredIncomeRecognition?.capitalizedIncome?.enableIncomeCapitalization"
|
||||
class="flex-48"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.incomeFromCapitalizationAccountId"
|
||||
[glAccountList]="incomeAccountData"
|
||||
@@ -244,7 +244,7 @@
|
||||
</mifosx-gl-account-selector>
|
||||
|
||||
<mifosx-gl-account-selector
|
||||
*ngIf="capitalizedIncome?.enableIncomeCapitalization"
|
||||
*ngIf="deferredIncomeRecognition?.capitalizedIncome?.enableIncomeCapitalization"
|
||||
class="flex-48"
|
||||
[inputFormControl]="loanProductAccountingForm.controls.deferredIncomeLiabilityAccountId"
|
||||
[glAccountList]="liabilityAccountData"
|
||||
|
||||
+26
-22
@@ -16,7 +16,7 @@ import { TranslateService } from '@ngx-translate/core';
|
||||
import { FormfieldBase } from 'app/shared/form-dialog/formfield/model/formfield-base';
|
||||
import { SelectBase } from 'app/shared/form-dialog/formfield/model/select-base';
|
||||
import { ChargeOffReasonToExpenseAccountMapping } from 'app/shared/models/general.model';
|
||||
import { CapitalizedIncome } from '../loan-product-payment-strategy-step/payment-allocation-model';
|
||||
import { DeferredIncomeRecognition } from '../loan-product-payment-strategy-step/payment-allocation-model';
|
||||
import { MatRadioGroup, MatRadioButton } from '@angular/material/radio';
|
||||
import { MatDivider } from '@angular/material/divider';
|
||||
import { MatCheckbox } from '@angular/material/checkbox';
|
||||
@@ -71,7 +71,7 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
||||
@Input() loanProductsTemplate: any;
|
||||
@Input() accountingRuleData: any;
|
||||
@Input() loanProductFormValid: boolean;
|
||||
@Input() capitalizedIncome: CapitalizedIncome;
|
||||
@Input() deferredIncomeRecognition: DeferredIncomeRecognition;
|
||||
|
||||
loanProductAccountingForm: UntypedFormGroup;
|
||||
|
||||
@@ -115,7 +115,7 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
||||
}
|
||||
|
||||
ngOnChanges(changes: SimpleChanges): void {
|
||||
this.setCapitalizedIncomeControls();
|
||||
this.setDeferredIncomeRecognitionControls();
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
@@ -136,7 +136,7 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
||||
});
|
||||
|
||||
const accountingMappings = this.loanProductsTemplate.accountingMappings;
|
||||
this.setCapitalizedIncomeControls();
|
||||
this.setDeferredIncomeRecognitionControls();
|
||||
switch (this.loanProductsTemplate.accountingRule.id) {
|
||||
case 3:
|
||||
case 4:
|
||||
@@ -148,11 +148,13 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
||||
this.loanProductAccountingForm.patchValue({
|
||||
enableAccrualActivityPosting: this.loanProductsTemplate.enableAccrualActivityPosting
|
||||
});
|
||||
if (this.capitalizedIncome && this.capitalizedIncome.enableIncomeCapitalization) {
|
||||
this.loanProductAccountingForm.patchValue({
|
||||
deferredIncomeLiabilityAccountId: accountingMappings.deferredIncomeLiabilityAccount.id,
|
||||
incomeFromCapitalizationAccountId: accountingMappings.incomeFromCapitalizationAccount.id
|
||||
});
|
||||
if (this.deferredIncomeRecognition) {
|
||||
if (this.deferredIncomeRecognition.capitalizedIncome.enableIncomeCapitalization) {
|
||||
this.loanProductAccountingForm.patchValue({
|
||||
deferredIncomeLiabilityAccountId: accountingMappings.deferredIncomeLiabilityAccount.id,
|
||||
incomeFromCapitalizationAccountId: accountingMappings.incomeFromCapitalizationAccount.id
|
||||
});
|
||||
}
|
||||
}
|
||||
/* falls through */
|
||||
case 2:
|
||||
@@ -589,20 +591,22 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
||||
return this.loanProductAccountingForm.value;
|
||||
}
|
||||
|
||||
setCapitalizedIncomeControls() {
|
||||
setDeferredIncomeRecognitionControls() {
|
||||
if (this.isAccountingAccrualBased) {
|
||||
if (this.capitalizedIncome && this.capitalizedIncome.enableIncomeCapitalization) {
|
||||
this.loanProductAccountingForm.addControl(
|
||||
'deferredIncomeLiabilityAccountId',
|
||||
new UntypedFormControl('', Validators.required)
|
||||
);
|
||||
this.loanProductAccountingForm.addControl(
|
||||
'incomeFromCapitalizationAccountId',
|
||||
new UntypedFormControl('', Validators.required)
|
||||
);
|
||||
} else {
|
||||
this.loanProductAccountingForm.removeControl('deferredIncomeLiabilityAccountId');
|
||||
this.loanProductAccountingForm.removeControl('incomeFromCapitalizationAccountId');
|
||||
if (this.deferredIncomeRecognition) {
|
||||
if (this.deferredIncomeRecognition.capitalizedIncome.enableIncomeCapitalization) {
|
||||
this.loanProductAccountingForm.addControl(
|
||||
'deferredIncomeLiabilityAccountId',
|
||||
new UntypedFormControl('', Validators.required)
|
||||
);
|
||||
this.loanProductAccountingForm.addControl(
|
||||
'incomeFromCapitalizationAccountId',
|
||||
new UntypedFormControl('', Validators.required)
|
||||
);
|
||||
} else {
|
||||
this.loanProductAccountingForm.removeControl('deferredIncomeLiabilityAccountId');
|
||||
this.loanProductAccountingForm.removeControl('incomeFromCapitalizationAccountId');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-158
@@ -1,158 +0,0 @@
|
||||
import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';
|
||||
import {
|
||||
UntypedFormBuilder,
|
||||
UntypedFormControl,
|
||||
UntypedFormGroup,
|
||||
Validators,
|
||||
ReactiveFormsModule
|
||||
} from '@angular/forms';
|
||||
import { CapitalizedIncome } 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-capitalized-income-step.component.html',
|
||||
styleUrls: ['./loan-product-capitalized-income-step.component.scss'],
|
||||
imports: [
|
||||
...STANDALONE_SHARED_IMPORTS,
|
||||
MatCheckbox
|
||||
]
|
||||
})
|
||||
export class LoanProductCapitalizedIncomeStepComponent implements OnChanges {
|
||||
@Input() capitalizedIncome: CapitalizedIncome;
|
||||
@Input() capitalizedIncomeCalculationTypeOptions: StringEnumOptionData[];
|
||||
@Input() capitalizedIncomeStrategyOptions: StringEnumOptionData[];
|
||||
@Input() capitalizedIncomeTypeOptions: StringEnumOptionData[];
|
||||
|
||||
loanIncomeCapitalizationForm: UntypedFormGroup;
|
||||
|
||||
enableIncomeCapitalization: boolean;
|
||||
|
||||
@Output() setCapitalizedIncome = new EventEmitter<CapitalizedIncome>();
|
||||
@Output() setViewChildForm = new EventEmitter<UntypedFormGroup>();
|
||||
|
||||
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);
|
||||
});
|
||||
}
|
||||
}
|
||||
+34
-1
@@ -1,4 +1,4 @@
|
||||
<form [formGroup]="loanIncomeCapitalizationForm">
|
||||
<form [formGroup]="loanDeferredIncomeRecognitionForm">
|
||||
<div class="layout-row-wrap gap-2percent layout-column-lt-md">
|
||||
<mat-checkbox class="flex-98" labelPosition="before" formControlName="enableIncomeCapitalization">
|
||||
{{ 'labels.inputs.Enable income capitalization' | translate }}
|
||||
@@ -38,4 +38,37 @@
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
<div class="layout-row-wrap gap-2percent layout-column-lt-md">
|
||||
<mat-checkbox class="flex-98" labelPosition="before" formControlName="enableBuyDownFee">
|
||||
{{ 'labels.inputs.Enable Buy down fee' | translate }}
|
||||
</mat-checkbox>
|
||||
|
||||
<mat-form-field class="flex-48" *ngIf="enableBuyDownFee">
|
||||
<mat-label>{{ 'labels.inputs.Buy down fee calculation type' | translate }}</mat-label>
|
||||
<mat-select formControlName="buyDownFeeCalculationType" required>
|
||||
<mat-option
|
||||
*ngFor="let buyDownFeeCalculationType of buyDownFeeCalculationTypeOptions"
|
||||
[value]="buyDownFeeCalculationType.id"
|
||||
>
|
||||
{{ buyDownFeeCalculationType.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
<mat-form-field class="flex-48" *ngIf="enableBuyDownFee">
|
||||
<mat-label>{{ 'labels.inputs.Buy down fee strategy' | translate }}</mat-label>
|
||||
<mat-select formControlName="buyDownFeeStrategy" required>
|
||||
<mat-option *ngFor="let buyDownFeeStrategy of buyDownFeeStrategyOptions" [value]="buyDownFeeStrategy.id">
|
||||
{{ buyDownFeeStrategy.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
<mat-form-field class="flex-48" *ngIf="enableBuyDownFee">
|
||||
<mat-label>{{ 'labels.inputs.Buy down fee income type' | translate }}</mat-label>
|
||||
<mat-select formControlName="buyDownFeeIncomeType" required>
|
||||
<mat-option *ngFor="let buyDownFeeIncomeType of buyDownFeeIncomeTypeOptions" [value]="buyDownFeeIncomeType.id">
|
||||
{{ buyDownFeeIncomeType.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
</form>
|
||||
+257
@@ -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<DeferredIncomeRecognition>();
|
||||
@Output() setViewChildForm = new EventEmitter<UntypedFormGroup>();
|
||||
|
||||
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
|
||||
});
|
||||
}
|
||||
}
|
||||
+12
@@ -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' };
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {}
|
||||
|
||||
@@ -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í",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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é",
|
||||
|
||||
@@ -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à",
|
||||
|
||||
@@ -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": "지역 사회",
|
||||
|
||||
@@ -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ė",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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": "समुदाय",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user