Merge pull request #2521 from magyari-adam/feature/WEB-204
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>
|
<span class="flex-50"> {{ loanDetails.capitalizedIncomeType?.value | translateKey: 'catalogs' }} </span>
|
||||||
</div>
|
</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">
|
<div class="flex-fill layout-row">
|
||||||
<span class="flex-50"> {{ 'labels.inputs.Grace: On Principal Payment' | translate }}</span>
|
<span class="flex-50"> {{ 'labels.inputs.Grace: On Principal Payment' | translate }}</span>
|
||||||
<span class="flex-50"> {{ loanDetails.graceOnPrincipalPayment }} </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-47">{{ 'labels.inputs.Income type' | translate }}:</span>
|
||||||
<span class="flex-53">{{ loanProduct.capitalizedIncomeType?.value | translateKey: 'catalogs' }}</span>
|
<span class="flex-53">{{ loanProduct.capitalizedIncomeType?.value | translateKey: 'catalogs' }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div fxFlexFill *ngIf="loanProduct.enableIncomeCapitalization">
|
<div class="flex-100 layout-row-wrap responsive-column" *ngIf="isAdvancedPaymentAllocation">
|
||||||
<span fxFlex="47%">{{ 'labels.inputs.Income type' | translate }}:</span>
|
<h3 class="mat-h3 flex-100">{{ 'labels.inputs.Buy down fees' | translate }}</h3>
|
||||||
<span fxFlex="53%">{{ loanProduct.capitalizedIncomeType?.value | translateKey: 'catalogs' }}</span>
|
|
||||||
|
<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>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
+17
@@ -353,6 +353,23 @@ export class LoanProductSummaryComponent implements OnInit, OnChanges {
|
|||||||
);
|
);
|
||||||
this.loanProduct.capitalizedIncomeType = optionValue;
|
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(
|
optionValue = this.optionDataLookUp(
|
||||||
this.loanProduct.interestRateFrequencyType,
|
this.loanProduct.interestRateFrequencyType,
|
||||||
this.loanProductsTemplate.interestRateFrequencyTypeOptions
|
this.loanProductsTemplate.interestRateFrequencyTypeOptions
|
||||||
|
|||||||
+10
-5
@@ -54,6 +54,8 @@
|
|||||||
(supportedInterestRefundTypes)="setSupportedInterestRefundTypes($event)"
|
(supportedInterestRefundTypes)="setSupportedInterestRefundTypes($event)"
|
||||||
>
|
>
|
||||||
</mifosx-loan-product-interest-refund-step>
|
</mifosx-loan-product-interest-refund-step>
|
||||||
|
|
||||||
|
<mifosx-stepper-buttons></mifosx-stepper-buttons>
|
||||||
</mat-step>
|
</mat-step>
|
||||||
|
|
||||||
<mat-step *ngIf="isAdvancedPaymentStrategy">
|
<mat-step *ngIf="isAdvancedPaymentStrategy">
|
||||||
@@ -91,15 +93,18 @@
|
|||||||
</mifosx-loan-product-charges-step>
|
</mifosx-loan-product-charges-step>
|
||||||
</mat-step>
|
</mat-step>
|
||||||
|
|
||||||
<mat-step *ngIf="isAdvancedPaymentStrategy" [stepControl]="loanIncomeCapitalizationForm" completed>
|
<mat-step *ngIf="isAdvancedPaymentStrategy" [stepControl]="loanDeferredIncomeRecognitionForm" 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
|
<mifosx-loan-product-capitalized-income-step
|
||||||
[capitalizedIncome]="capitalizedIncome"
|
[deferredIncomeRecognition]="deferredIncomeRecognition"
|
||||||
[capitalizedIncomeCalculationTypeOptions]="loanProductsTemplate.capitalizedIncomeCalculationTypeOptions"
|
[capitalizedIncomeCalculationTypeOptions]="loanProductsTemplate.capitalizedIncomeCalculationTypeOptions"
|
||||||
[capitalizedIncomeStrategyOptions]="loanProductsTemplate.capitalizedIncomeStrategyOptions"
|
[capitalizedIncomeStrategyOptions]="loanProductsTemplate.capitalizedIncomeStrategyOptions"
|
||||||
[capitalizedIncomeTypeOptions]="loanProductsTemplate.capitalizedIncomeTypeOptions"
|
[capitalizedIncomeTypeOptions]="loanProductsTemplate.capitalizedIncomeTypeOptions"
|
||||||
(setCapitalizedIncome)="setCapitalizedIncome($event)"
|
[buyDownFeeCalculationTypeOptions]="loanProductsTemplate.buyDownFeeCalculationTypeOptions"
|
||||||
|
[buyDownFeeStrategyOptions]="loanProductsTemplate.buyDownFeeStrategyOptions"
|
||||||
|
[buyDownFeeIncomeTypeOptions]="loanProductsTemplate.buyDownFeeIncomeTypeOptions"
|
||||||
|
(setDeferredIncomeRecognition)="setDeferredIncomeRecognition($event)"
|
||||||
(setViewChildForm)="setViewChildForm($event)"
|
(setViewChildForm)="setViewChildForm($event)"
|
||||||
>
|
>
|
||||||
</mifosx-loan-product-capitalized-income-step>
|
</mifosx-loan-product-capitalized-income-step>
|
||||||
@@ -114,7 +119,7 @@
|
|||||||
[loanProductsTemplate]="loanProductsTemplate"
|
[loanProductsTemplate]="loanProductsTemplate"
|
||||||
[accountingRuleData]="accountingRuleData"
|
[accountingRuleData]="accountingRuleData"
|
||||||
[loanProductFormValid]="loanProductFormValid"
|
[loanProductFormValid]="loanProductFormValid"
|
||||||
[capitalizedIncome]="capitalizedIncome"
|
[deferredIncomeRecognition]="deferredIncomeRecognition"
|
||||||
>
|
>
|
||||||
</mifosx-loan-product-accounting-step>
|
</mifosx-loan-product-accounting-step>
|
||||||
</mat-step>
|
</mat-step>
|
||||||
|
|||||||
+46
-19
@@ -17,12 +17,12 @@ import { LoanProducts } from '../loan-products';
|
|||||||
import {
|
import {
|
||||||
AdvancedPaymentAllocation,
|
AdvancedPaymentAllocation,
|
||||||
AdvancedPaymentStrategy,
|
AdvancedPaymentStrategy,
|
||||||
CapitalizedIncome,
|
DeferredIncomeRecognition,
|
||||||
PaymentAllocation
|
PaymentAllocation
|
||||||
} from '../loan-product-stepper/loan-product-payment-strategy-step/payment-allocation-model';
|
} from '../loan-product-stepper/loan-product-payment-strategy-step/payment-allocation-model';
|
||||||
import { Accounting } from 'app/core/utils/accounting';
|
import { Accounting } from 'app/core/utils/accounting';
|
||||||
import { StringEnumOptionData } from '../../../shared/models/option-data.model';
|
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 { UntypedFormGroup } from '@angular/forms';
|
||||||
import { MatStepper, MatStepperIcon, MatStep, MatStepLabel } from '@angular/material/stepper';
|
import { MatStepper, MatStepperIcon, MatStep, MatStepLabel } from '@angular/material/stepper';
|
||||||
import { FaIconComponent } from '@fortawesome/angular-fontawesome';
|
import { FaIconComponent } from '@fortawesome/angular-fontawesome';
|
||||||
@@ -50,7 +50,7 @@ import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
|
|||||||
StepperButtonsComponent,
|
StepperButtonsComponent,
|
||||||
LoanProductTermsStepComponent,
|
LoanProductTermsStepComponent,
|
||||||
LoanProductChargesStepComponent,
|
LoanProductChargesStepComponent,
|
||||||
LoanProductCapitalizedIncomeStepComponent,
|
LoanProductDeferredIncomeRecognitionStepComponent,
|
||||||
LoanProductAccountingStepComponent,
|
LoanProductAccountingStepComponent,
|
||||||
LoanProductPreviewStepComponent
|
LoanProductPreviewStepComponent
|
||||||
]
|
]
|
||||||
@@ -61,8 +61,8 @@ export class CreateLoanProductComponent implements OnInit {
|
|||||||
loanProductCurrencyStep: LoanProductCurrencyStepComponent;
|
loanProductCurrencyStep: LoanProductCurrencyStepComponent;
|
||||||
@ViewChild(LoanProductInterestRefundStepComponent, { static: true })
|
@ViewChild(LoanProductInterestRefundStepComponent, { static: true })
|
||||||
loanProductInterestRefundStep: LoanProductInterestRefundStepComponent;
|
loanProductInterestRefundStep: LoanProductInterestRefundStepComponent;
|
||||||
@ViewChild(LoanProductCapitalizedIncomeStepComponent, { static: true })
|
@ViewChild(LoanProductDeferredIncomeRecognitionStepComponent, { static: true })
|
||||||
loanProductCapitalizedIncomeStep: LoanProductCapitalizedIncomeStepComponent;
|
loanProductDeferredIncomeRecognitionStep: LoanProductDeferredIncomeRecognitionStepComponent;
|
||||||
@ViewChild(LoanProductTermsStepComponent, { static: true }) loanProductTermsStep: LoanProductTermsStepComponent;
|
@ViewChild(LoanProductTermsStepComponent, { static: true }) loanProductTermsStep: LoanProductTermsStepComponent;
|
||||||
@ViewChild(LoanProductSettingsStepComponent, { static: true })
|
@ViewChild(LoanProductSettingsStepComponent, { static: true })
|
||||||
loanProductSettingsStep: LoanProductSettingsStepComponent;
|
loanProductSettingsStep: LoanProductSettingsStepComponent;
|
||||||
@@ -81,8 +81,8 @@ export class CreateLoanProductComponent implements OnInit {
|
|||||||
advancedPaymentAllocations: AdvancedPaymentAllocation[] = [];
|
advancedPaymentAllocations: AdvancedPaymentAllocation[] = [];
|
||||||
advancedCreditAllocations: AdvancedPaymentAllocation[] = [];
|
advancedCreditAllocations: AdvancedPaymentAllocation[] = [];
|
||||||
|
|
||||||
capitalizedIncome: CapitalizedIncome | null = null;
|
deferredIncomeRecognition: DeferredIncomeRecognition | null = null;
|
||||||
loanIncomeCapitalizationForm: UntypedFormGroup;
|
loanDeferredIncomeRecognitionForm: UntypedFormGroup;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {ActivatedRoute} route Activated Route.
|
* @param {ActivatedRoute} route Activated Route.
|
||||||
@@ -139,18 +139,33 @@ export class CreateLoanProductComponent implements OnInit {
|
|||||||
advancePaymentStrategy(value: string) {
|
advancePaymentStrategy(value: string) {
|
||||||
this.isAdvancedPaymentStrategy = LoanProducts.isAdvancedPaymentAllocationStrategy(value);
|
this.isAdvancedPaymentStrategy = LoanProducts.isAdvancedPaymentAllocationStrategy(value);
|
||||||
if (this.isAdvancedPaymentStrategy) {
|
if (this.isAdvancedPaymentStrategy) {
|
||||||
|
if (this.deferredIncomeRecognition == null) {
|
||||||
|
this.deferredIncomeRecognition = {};
|
||||||
|
}
|
||||||
if (this.loanProductsTemplate.enableIncomeCapitalization) {
|
if (this.loanProductsTemplate.enableIncomeCapitalization) {
|
||||||
this.capitalizedIncome = {
|
this.deferredIncomeRecognition.capitalizedIncome = {
|
||||||
enableIncomeCapitalization: true,
|
enableIncomeCapitalization: true,
|
||||||
capitalizedIncomeCalculationType: this.loanProductsTemplate.capitalizedIncomeCalculationTypeOptions[0],
|
capitalizedIncomeCalculationType: this.loanProductsTemplate.capitalizedIncomeCalculationTypeOptions[0],
|
||||||
capitalizedIncomeStrategy: this.loanProductsTemplate.capitalizedIncomeStrategyOptions[0],
|
capitalizedIncomeStrategy: this.loanProductsTemplate.capitalizedIncomeStrategyOptions[0],
|
||||||
capitalizedIncomeType: this.loanProductsTemplate.capitalizedIncomeTypeOptions[0]
|
capitalizedIncomeType: this.loanProductsTemplate.capitalizedIncomeTypeOptions[0]
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
this.capitalizedIncome = {
|
this.deferredIncomeRecognition.capitalizedIncome = {
|
||||||
enableIncomeCapitalization: false
|
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;
|
this.supportedInterestRefundTypes = supportedInterestRefundTypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
setCapitalizedIncome(capitalizedIncome: CapitalizedIncome): void {
|
setDeferredIncomeRecognition(deferredIncomeRecognition: DeferredIncomeRecognition): void {
|
||||||
if (this.isAdvancedPaymentStrategy) {
|
if (this.isAdvancedPaymentStrategy) {
|
||||||
this.capitalizedIncome = capitalizedIncome;
|
this.deferredIncomeRecognition = deferredIncomeRecognition;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setViewChildForm(viewChildForm: UntypedFormGroup): void {
|
setViewChildForm(viewChildForm: UntypedFormGroup): void {
|
||||||
this.loanIncomeCapitalizationForm = viewChildForm;
|
this.loanDeferredIncomeRecognitionForm = viewChildForm;
|
||||||
}
|
}
|
||||||
|
|
||||||
get loanProductSettingsForm() {
|
get loanProductSettingsForm() {
|
||||||
@@ -197,7 +212,7 @@ export class CreateLoanProductComponent implements OnInit {
|
|||||||
this.loanProductCurrencyForm.valid &&
|
this.loanProductCurrencyForm.valid &&
|
||||||
this.loanProductTermsForm.valid &&
|
this.loanProductTermsForm.valid &&
|
||||||
this.loanProductSettingsForm.valid &&
|
this.loanProductSettingsForm.valid &&
|
||||||
this.loanIncomeCapitalizationForm.valid &&
|
this.loanDeferredIncomeRecognitionForm.valid &&
|
||||||
this.loanProductAccountingForm.valid
|
this.loanProductAccountingForm.valid
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
@@ -224,12 +239,24 @@ export class CreateLoanProductComponent implements OnInit {
|
|||||||
loanProduct['paymentAllocation'] = this.paymentAllocation;
|
loanProduct['paymentAllocation'] = this.paymentAllocation;
|
||||||
loanProduct['creditAllocation'] = this.creditAllocation;
|
loanProduct['creditAllocation'] = this.creditAllocation;
|
||||||
loanProduct['supportedInterestRefundTypes'] = this.supportedInterestRefundTypes;
|
loanProduct['supportedInterestRefundTypes'] = this.supportedInterestRefundTypes;
|
||||||
if (this.capitalizedIncome != null) {
|
if (this.deferredIncomeRecognition.capitalizedIncome != null) {
|
||||||
loanProduct['enableIncomeCapitalization'] = this.capitalizedIncome.enableIncomeCapitalization;
|
loanProduct['enableIncomeCapitalization'] =
|
||||||
if (this.capitalizedIncome.enableIncomeCapitalization) {
|
this.deferredIncomeRecognition.capitalizedIncome.enableIncomeCapitalization;
|
||||||
loanProduct['capitalizedIncomeCalculationType'] = this.capitalizedIncome.capitalizedIncomeCalculationType;
|
if (this.deferredIncomeRecognition.capitalizedIncome.enableIncomeCapitalization) {
|
||||||
loanProduct['capitalizedIncomeStrategy'] = this.capitalizedIncome.capitalizedIncomeStrategy;
|
loanProduct['capitalizedIncomeCalculationType'] =
|
||||||
loanProduct['capitalizedIncomeType'] = this.capitalizedIncome.capitalizedIncomeType;
|
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>
|
||||||
|
|
||||||
<mat-step *ngIf="isAdvancedPaymentStrategy" [stepControl]="loanIncomeCapitalizationForm" completed>
|
<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
|
<mifosx-loan-product-capitalized-income-step
|
||||||
[capitalizedIncome]="capitalizedIncome"
|
[deferredIncomeRecognition]="deferredIncomeRecognition"
|
||||||
[capitalizedIncomeCalculationTypeOptions]="loanProductAndTemplate.capitalizedIncomeCalculationTypeOptions"
|
[capitalizedIncomeCalculationTypeOptions]="loanProductAndTemplate.capitalizedIncomeCalculationTypeOptions"
|
||||||
[capitalizedIncomeStrategyOptions]="loanProductAndTemplate.capitalizedIncomeStrategyOptions"
|
[capitalizedIncomeStrategyOptions]="loanProductAndTemplate.capitalizedIncomeStrategyOptions"
|
||||||
[capitalizedIncomeTypeOptions]="loanProductAndTemplate.capitalizedIncomeTypeOptions"
|
[capitalizedIncomeTypeOptions]="loanProductAndTemplate.capitalizedIncomeTypeOptions"
|
||||||
(setCapitalizedIncome)="setCapitalizedIncome($event)"
|
[buyDownFeeCalculationTypeOptions]="loanProductAndTemplate.buyDownFeeCalculationTypeOptions"
|
||||||
|
[buyDownFeeStrategyOptions]="loanProductAndTemplate.buyDownFeeStrategyOptions"
|
||||||
|
[buyDownFeeIncomeTypeOptions]="loanProductAndTemplate.buyDownFeeIncomeTypeOptions"
|
||||||
|
(setDeferredIncomeRecognition)="setDeferredIncomeRecognition($event)"
|
||||||
(setViewChildForm)="setViewChildForm($event)"
|
(setViewChildForm)="setViewChildForm($event)"
|
||||||
>
|
>
|
||||||
</mifosx-loan-product-capitalized-income-step>
|
</mifosx-loan-product-capitalized-income-step>
|
||||||
@@ -116,7 +119,7 @@
|
|||||||
[loanProductsTemplate]="loanProductAndTemplate"
|
[loanProductsTemplate]="loanProductAndTemplate"
|
||||||
[accountingRuleData]="accountingRuleData"
|
[accountingRuleData]="accountingRuleData"
|
||||||
[loanProductFormValid]="loanProductFormValidAndNotPristine"
|
[loanProductFormValid]="loanProductFormValidAndNotPristine"
|
||||||
[capitalizedIncome]="capitalizedIncome"
|
[deferredIncomeRecognition]="deferredIncomeRecognition"
|
||||||
>
|
>
|
||||||
</mifosx-loan-product-accounting-step>
|
</mifosx-loan-product-accounting-step>
|
||||||
</mat-step>
|
</mat-step>
|
||||||
|
|||||||
@@ -18,14 +18,14 @@ import {
|
|||||||
AdvancedCreditAllocation,
|
AdvancedCreditAllocation,
|
||||||
AdvancedPaymentAllocation,
|
AdvancedPaymentAllocation,
|
||||||
AdvancedPaymentStrategy,
|
AdvancedPaymentStrategy,
|
||||||
CapitalizedIncome,
|
DeferredIncomeRecognition,
|
||||||
CreditAllocation,
|
CreditAllocation,
|
||||||
PaymentAllocation
|
PaymentAllocation
|
||||||
} from '../loan-product-stepper/loan-product-payment-strategy-step/payment-allocation-model';
|
} from '../loan-product-stepper/loan-product-payment-strategy-step/payment-allocation-model';
|
||||||
import { Accounting } from 'app/core/utils/accounting';
|
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 { 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 { 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 { UntypedFormGroup } from '@angular/forms';
|
||||||
import { MatStepper, MatStepperIcon, MatStep, MatStepLabel } from '@angular/material/stepper';
|
import { MatStepper, MatStepperIcon, MatStep, MatStepLabel } from '@angular/material/stepper';
|
||||||
import { FaIconComponent } from '@fortawesome/angular-fontawesome';
|
import { FaIconComponent } from '@fortawesome/angular-fontawesome';
|
||||||
@@ -53,7 +53,7 @@ import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
|
|||||||
LoanProductPaymentStrategyStepComponent,
|
LoanProductPaymentStrategyStepComponent,
|
||||||
LoanProductTermsStepComponent,
|
LoanProductTermsStepComponent,
|
||||||
LoanProductChargesStepComponent,
|
LoanProductChargesStepComponent,
|
||||||
LoanProductCapitalizedIncomeStepComponent,
|
LoanProductDeferredIncomeRecognitionStepComponent,
|
||||||
LoanProductAccountingStepComponent,
|
LoanProductAccountingStepComponent,
|
||||||
LoanProductPreviewStepComponent
|
LoanProductPreviewStepComponent
|
||||||
]
|
]
|
||||||
@@ -64,8 +64,8 @@ export class EditLoanProductComponent implements OnInit {
|
|||||||
loanProductCurrencyStep: LoanProductCurrencyStepComponent;
|
loanProductCurrencyStep: LoanProductCurrencyStepComponent;
|
||||||
@ViewChild(LoanProductInterestRefundStepComponent, { static: true })
|
@ViewChild(LoanProductInterestRefundStepComponent, { static: true })
|
||||||
loanProductInterestRefundStep: LoanProductInterestRefundStepComponent;
|
loanProductInterestRefundStep: LoanProductInterestRefundStepComponent;
|
||||||
@ViewChild(LoanProductCapitalizedIncomeStepComponent, { static: true })
|
@ViewChild(LoanProductDeferredIncomeRecognitionStepComponent, { static: true })
|
||||||
loanProductCapitalizedIncomeStep: LoanProductCapitalizedIncomeStepComponent;
|
loanProductCapitalizedIncomeStep: LoanProductDeferredIncomeRecognitionStepComponent;
|
||||||
@ViewChild(LoanProductTermsStepComponent, { static: true }) loanProductTermsStep: LoanProductTermsStepComponent;
|
@ViewChild(LoanProductTermsStepComponent, { static: true }) loanProductTermsStep: LoanProductTermsStepComponent;
|
||||||
@ViewChild(LoanProductSettingsStepComponent, { static: true })
|
@ViewChild(LoanProductSettingsStepComponent, { static: true })
|
||||||
loanProductSettingsStep: LoanProductSettingsStepComponent;
|
loanProductSettingsStep: LoanProductSettingsStepComponent;
|
||||||
@@ -85,7 +85,7 @@ export class EditLoanProductComponent implements OnInit {
|
|||||||
advancedCreditAllocations: AdvancedCreditAllocation[] = [];
|
advancedCreditAllocations: AdvancedCreditAllocation[] = [];
|
||||||
supportedInterestRefundTypes: StringEnumOptionData[] = [];
|
supportedInterestRefundTypes: StringEnumOptionData[] = [];
|
||||||
|
|
||||||
capitalizedIncome: CapitalizedIncome | null = null;
|
deferredIncomeRecognition: DeferredIncomeRecognition | null = null;
|
||||||
loanIncomeCapitalizationForm: UntypedFormGroup | null = null;
|
loanIncomeCapitalizationForm: UntypedFormGroup | null = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -123,18 +123,33 @@ export class EditLoanProductComponent implements OnInit {
|
|||||||
this.paymentAllocation = this.loanProductAndTemplate.paymentAllocation;
|
this.paymentAllocation = this.loanProductAndTemplate.paymentAllocation;
|
||||||
this.creditAllocation = this.loanProductAndTemplate.creditAllocation;
|
this.creditAllocation = this.loanProductAndTemplate.creditAllocation;
|
||||||
this.supportedInterestRefundTypes = this.loanProductAndTemplate.supportedInterestRefundTypes;
|
this.supportedInterestRefundTypes = this.loanProductAndTemplate.supportedInterestRefundTypes;
|
||||||
|
if (this.deferredIncomeRecognition == null) {
|
||||||
|
this.deferredIncomeRecognition = {};
|
||||||
|
}
|
||||||
if (this.loanProductAndTemplate.enableIncomeCapitalization) {
|
if (this.loanProductAndTemplate.enableIncomeCapitalization) {
|
||||||
this.capitalizedIncome = {
|
this.deferredIncomeRecognition.capitalizedIncome = {
|
||||||
enableIncomeCapitalization: true,
|
enableIncomeCapitalization: true,
|
||||||
capitalizedIncomeCalculationType: this.loanProductAndTemplate.capitalizedIncomeCalculationType.id,
|
capitalizedIncomeCalculationType: this.loanProductAndTemplate.capitalizedIncomeCalculationType.id,
|
||||||
capitalizedIncomeStrategy: this.loanProductAndTemplate.capitalizedIncomeStrategy.id,
|
capitalizedIncomeStrategy: this.loanProductAndTemplate.capitalizedIncomeStrategy.id,
|
||||||
capitalizedIncomeType: this.loanProductAndTemplate.capitalizedIncomeType.id
|
capitalizedIncomeType: this.loanProductAndTemplate.capitalizedIncomeType.id
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
this.capitalizedIncome = {
|
this.deferredIncomeRecognition.capitalizedIncome = {
|
||||||
enableIncomeCapitalization: false
|
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;
|
this.wasPaymentAllocationChanged = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
setCapitalizedIncome(capitalizedIncome: CapitalizedIncome): void {
|
setDeferredIncomeRecognition(deferredIncomeRecognition: DeferredIncomeRecognition): void {
|
||||||
if (this.isAdvancedPaymentStrategy) {
|
if (this.isAdvancedPaymentStrategy) {
|
||||||
this.capitalizedIncome = capitalizedIncome;
|
this.deferredIncomeRecognition = deferredIncomeRecognition;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -259,12 +274,27 @@ export class EditLoanProductComponent implements OnInit {
|
|||||||
loanProduct['paymentAllocation'] = this.paymentAllocation;
|
loanProduct['paymentAllocation'] = this.paymentAllocation;
|
||||||
loanProduct['creditAllocation'] = this.creditAllocation;
|
loanProduct['creditAllocation'] = this.creditAllocation;
|
||||||
loanProduct['supportedInterestRefundTypes'] = this.supportedInterestRefundTypes;
|
loanProduct['supportedInterestRefundTypes'] = this.supportedInterestRefundTypes;
|
||||||
if (this.capitalizedIncome != null) {
|
if (this.deferredIncomeRecognition != null) {
|
||||||
loanProduct['enableIncomeCapitalization'] = this.capitalizedIncome.enableIncomeCapitalization;
|
if (this.deferredIncomeRecognition.capitalizedIncome != null) {
|
||||||
if (this.capitalizedIncome.enableIncomeCapitalization) {
|
loanProduct['enableIncomeCapitalization'] =
|
||||||
loanProduct['capitalizedIncomeCalculationType'] = this.capitalizedIncome.capitalizedIncomeCalculationType;
|
this.deferredIncomeRecognition.capitalizedIncome.enableIncomeCapitalization;
|
||||||
loanProduct['capitalizedIncomeStrategy'] = this.capitalizedIncome.capitalizedIncomeStrategy;
|
if (this.deferredIncomeRecognition.capitalizedIncome.enableIncomeCapitalization) {
|
||||||
loanProduct['capitalizedIncomeType'] = this.capitalizedIncome.capitalizedIncomeType;
|
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>
|
||||||
|
|
||||||
<mifosx-gl-account-selector
|
<mifosx-gl-account-selector
|
||||||
*ngIf="capitalizedIncome?.enableIncomeCapitalization"
|
*ngIf="deferredIncomeRecognition?.capitalizedIncome?.enableIncomeCapitalization"
|
||||||
class="flex-48"
|
class="flex-48"
|
||||||
[inputFormControl]="loanProductAccountingForm.controls.incomeFromCapitalizationAccountId"
|
[inputFormControl]="loanProductAccountingForm.controls.incomeFromCapitalizationAccountId"
|
||||||
[glAccountList]="incomeAccountData"
|
[glAccountList]="incomeAccountData"
|
||||||
@@ -244,7 +244,7 @@
|
|||||||
</mifosx-gl-account-selector>
|
</mifosx-gl-account-selector>
|
||||||
|
|
||||||
<mifosx-gl-account-selector
|
<mifosx-gl-account-selector
|
||||||
*ngIf="capitalizedIncome?.enableIncomeCapitalization"
|
*ngIf="deferredIncomeRecognition?.capitalizedIncome?.enableIncomeCapitalization"
|
||||||
class="flex-48"
|
class="flex-48"
|
||||||
[inputFormControl]="loanProductAccountingForm.controls.deferredIncomeLiabilityAccountId"
|
[inputFormControl]="loanProductAccountingForm.controls.deferredIncomeLiabilityAccountId"
|
||||||
[glAccountList]="liabilityAccountData"
|
[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 { FormfieldBase } from 'app/shared/form-dialog/formfield/model/formfield-base';
|
||||||
import { SelectBase } from 'app/shared/form-dialog/formfield/model/select-base';
|
import { SelectBase } from 'app/shared/form-dialog/formfield/model/select-base';
|
||||||
import { ChargeOffReasonToExpenseAccountMapping } from 'app/shared/models/general.model';
|
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 { MatRadioGroup, MatRadioButton } from '@angular/material/radio';
|
||||||
import { MatDivider } from '@angular/material/divider';
|
import { MatDivider } from '@angular/material/divider';
|
||||||
import { MatCheckbox } from '@angular/material/checkbox';
|
import { MatCheckbox } from '@angular/material/checkbox';
|
||||||
@@ -71,7 +71,7 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
|||||||
@Input() loanProductsTemplate: any;
|
@Input() loanProductsTemplate: any;
|
||||||
@Input() accountingRuleData: any;
|
@Input() accountingRuleData: any;
|
||||||
@Input() loanProductFormValid: boolean;
|
@Input() loanProductFormValid: boolean;
|
||||||
@Input() capitalizedIncome: CapitalizedIncome;
|
@Input() deferredIncomeRecognition: DeferredIncomeRecognition;
|
||||||
|
|
||||||
loanProductAccountingForm: UntypedFormGroup;
|
loanProductAccountingForm: UntypedFormGroup;
|
||||||
|
|
||||||
@@ -115,7 +115,7 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ngOnChanges(changes: SimpleChanges): void {
|
ngOnChanges(changes: SimpleChanges): void {
|
||||||
this.setCapitalizedIncomeControls();
|
this.setDeferredIncomeRecognitionControls();
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
@@ -136,7 +136,7 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const accountingMappings = this.loanProductsTemplate.accountingMappings;
|
const accountingMappings = this.loanProductsTemplate.accountingMappings;
|
||||||
this.setCapitalizedIncomeControls();
|
this.setDeferredIncomeRecognitionControls();
|
||||||
switch (this.loanProductsTemplate.accountingRule.id) {
|
switch (this.loanProductsTemplate.accountingRule.id) {
|
||||||
case 3:
|
case 3:
|
||||||
case 4:
|
case 4:
|
||||||
@@ -148,11 +148,13 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
|||||||
this.loanProductAccountingForm.patchValue({
|
this.loanProductAccountingForm.patchValue({
|
||||||
enableAccrualActivityPosting: this.loanProductsTemplate.enableAccrualActivityPosting
|
enableAccrualActivityPosting: this.loanProductsTemplate.enableAccrualActivityPosting
|
||||||
});
|
});
|
||||||
if (this.capitalizedIncome && this.capitalizedIncome.enableIncomeCapitalization) {
|
if (this.deferredIncomeRecognition) {
|
||||||
this.loanProductAccountingForm.patchValue({
|
if (this.deferredIncomeRecognition.capitalizedIncome.enableIncomeCapitalization) {
|
||||||
deferredIncomeLiabilityAccountId: accountingMappings.deferredIncomeLiabilityAccount.id,
|
this.loanProductAccountingForm.patchValue({
|
||||||
incomeFromCapitalizationAccountId: accountingMappings.incomeFromCapitalizationAccount.id
|
deferredIncomeLiabilityAccountId: accountingMappings.deferredIncomeLiabilityAccount.id,
|
||||||
});
|
incomeFromCapitalizationAccountId: accountingMappings.incomeFromCapitalizationAccount.id
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/* falls through */
|
/* falls through */
|
||||||
case 2:
|
case 2:
|
||||||
@@ -589,20 +591,22 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
|
|||||||
return this.loanProductAccountingForm.value;
|
return this.loanProductAccountingForm.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
setCapitalizedIncomeControls() {
|
setDeferredIncomeRecognitionControls() {
|
||||||
if (this.isAccountingAccrualBased) {
|
if (this.isAccountingAccrualBased) {
|
||||||
if (this.capitalizedIncome && this.capitalizedIncome.enableIncomeCapitalization) {
|
if (this.deferredIncomeRecognition) {
|
||||||
this.loanProductAccountingForm.addControl(
|
if (this.deferredIncomeRecognition.capitalizedIncome.enableIncomeCapitalization) {
|
||||||
'deferredIncomeLiabilityAccountId',
|
this.loanProductAccountingForm.addControl(
|
||||||
new UntypedFormControl('', Validators.required)
|
'deferredIncomeLiabilityAccountId',
|
||||||
);
|
new UntypedFormControl('', Validators.required)
|
||||||
this.loanProductAccountingForm.addControl(
|
);
|
||||||
'incomeFromCapitalizationAccountId',
|
this.loanProductAccountingForm.addControl(
|
||||||
new UntypedFormControl('', Validators.required)
|
'incomeFromCapitalizationAccountId',
|
||||||
);
|
new UntypedFormControl('', Validators.required)
|
||||||
} else {
|
);
|
||||||
this.loanProductAccountingForm.removeControl('deferredIncomeLiabilityAccountId');
|
} else {
|
||||||
this.loanProductAccountingForm.removeControl('incomeFromCapitalizationAccountId');
|
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">
|
<div class="layout-row-wrap gap-2percent layout-column-lt-md">
|
||||||
<mat-checkbox class="flex-98" labelPosition="before" formControlName="enableIncomeCapitalization">
|
<mat-checkbox class="flex-98" labelPosition="before" formControlName="enableIncomeCapitalization">
|
||||||
{{ 'labels.inputs.Enable income capitalization' | translate }}
|
{{ 'labels.inputs.Enable income capitalization' | translate }}
|
||||||
@@ -38,4 +38,37 @@
|
|||||||
</mat-select>
|
</mat-select>
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
</div>
|
</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>
|
</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;
|
capitalizedIncomeType?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface BuyDownFee {
|
||||||
|
enableBuyDownFee: boolean;
|
||||||
|
buyDownFeeCalculationType?: string;
|
||||||
|
buyDownFeeStrategy?: string;
|
||||||
|
buyDownFeeIncomeType?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface DeferredIncomeRecognition {
|
||||||
|
capitalizedIncome?: CapitalizedIncome;
|
||||||
|
buyDownFee?: BuyDownFee;
|
||||||
|
}
|
||||||
|
|
||||||
export class PaymentAllocationTransactionTypes {
|
export class PaymentAllocationTransactionTypes {
|
||||||
public static DEFAULT_TRANSACTION: PaymentAllocationTransactionType = { id: 1, value: 'Default', code: 'DEFAULT' };
|
public static DEFAULT_TRANSACTION: PaymentAllocationTransactionType = { id: 1, value: 'Default', code: 'DEFAULT' };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,11 @@ export interface LoanProduct {
|
|||||||
capitalizedIncomeStrategy?: OptionData;
|
capitalizedIncomeStrategy?: OptionData;
|
||||||
capitalizedIncomeType?: OptionData;
|
capitalizedIncomeType?: OptionData;
|
||||||
|
|
||||||
|
enableBuyDownFee?: boolean;
|
||||||
|
buyDownFeeCalculationType?: OptionData;
|
||||||
|
buyDownFeeStrategy?: OptionData;
|
||||||
|
buyDownFeeIncomeType?: OptionData;
|
||||||
|
|
||||||
canDefineInstallmentAmount: boolean;
|
canDefineInstallmentAmount: boolean;
|
||||||
graceOnArrearsAgeing?: number;
|
graceOnArrearsAgeing?: number;
|
||||||
overdueDaysForNPA?: 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 { 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 { 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 { 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
|
* Products Module
|
||||||
@@ -249,7 +249,7 @@ import { LoanProductCapitalizedIncomeStepComponent } from './loan-products/loan-
|
|||||||
ViewAdvancePaymenyAllocationComponent,
|
ViewAdvancePaymenyAllocationComponent,
|
||||||
AdvancePaymentAllocationTabComponent,
|
AdvancePaymentAllocationTabComponent,
|
||||||
LoanProductSummaryComponent,
|
LoanProductSummaryComponent,
|
||||||
LoanProductCapitalizedIncomeStepComponent
|
LoanProductDeferredIncomeRecognitionStepComponent
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class ProductsModule {}
|
export class ProductsModule {}
|
||||||
|
|||||||
@@ -2471,7 +2471,13 @@
|
|||||||
"Enable income capitalization": "Povolit kapitalizaci příjmu",
|
"Enable income capitalization": "Povolit kapitalizaci příjmu",
|
||||||
"Income capitalization calculation type": "Typ výpočtu kapitalizace příjmu",
|
"Income capitalization calculation type": "Typ výpočtu kapitalizace příjmu",
|
||||||
"Income capitalization strategy": "Strategie 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": {
|
"links": {
|
||||||
"Community": "Společenství",
|
"Community": "Společenství",
|
||||||
|
|||||||
@@ -2471,7 +2471,13 @@
|
|||||||
"Enable income capitalization": "Aktivieren Sie die Einkommenskapitalisierung",
|
"Enable income capitalization": "Aktivieren Sie die Einkommenskapitalisierung",
|
||||||
"Income capitalization calculation type": "Berechnungsart der Einkommenskapitalisierung",
|
"Income capitalization calculation type": "Berechnungsart der Einkommenskapitalisierung",
|
||||||
"Income capitalization strategy": "Strategie zur Ertragskapitalisierung",
|
"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": {
|
"links": {
|
||||||
"Community": "Gemeinschaft",
|
"Community": "Gemeinschaft",
|
||||||
|
|||||||
@@ -2478,7 +2478,13 @@
|
|||||||
"Enable income capitalization": "Enable income capitalization",
|
"Enable income capitalization": "Enable income capitalization",
|
||||||
"Income capitalization calculation type": "Income capitalization calculation type",
|
"Income capitalization calculation type": "Income capitalization calculation type",
|
||||||
"Income capitalization strategy": "Income capitalization strategy",
|
"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": {
|
"links": {
|
||||||
"Community": "Community",
|
"Community": "Community",
|
||||||
|
|||||||
@@ -2471,7 +2471,13 @@
|
|||||||
"Enable income capitalization": "Habilitar capitalización de ingresos",
|
"Enable income capitalization": "Habilitar capitalización de ingresos",
|
||||||
"Income capitalization calculation type": "Tipo de cálculo de 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 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": {
|
"links": {
|
||||||
"Community": "Comunidad",
|
"Community": "Comunidad",
|
||||||
|
|||||||
@@ -2471,7 +2471,13 @@
|
|||||||
"Enable income capitalization": "Habilitar capitalización de ingresos",
|
"Enable income capitalization": "Habilitar capitalización de ingresos",
|
||||||
"Income capitalization calculation type": "Tipo de cálculo de 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 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": {
|
"links": {
|
||||||
"Community": "Comunidad",
|
"Community": "Comunidad",
|
||||||
|
|||||||
@@ -2471,7 +2471,13 @@
|
|||||||
"Enable income capitalization": "Activer la capitalisation des revenus",
|
"Enable income capitalization": "Activer la capitalisation des revenus",
|
||||||
"Income capitalization calculation type": "Type de calcul de 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 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": {
|
"links": {
|
||||||
"Community": "Communauté",
|
"Community": "Communauté",
|
||||||
|
|||||||
@@ -2471,7 +2471,13 @@
|
|||||||
"Enable income capitalization": "Abilita la capitalizzazione del reddito",
|
"Enable income capitalization": "Abilita la capitalizzazione del reddito",
|
||||||
"Income capitalization calculation type": "Tipo di calcolo della capitalizzazione del reddito",
|
"Income capitalization calculation type": "Tipo di calcolo della capitalizzazione del reddito",
|
||||||
"Income capitalization strategy": "Strategia di 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": {
|
"links": {
|
||||||
"Community": "Comunità",
|
"Community": "Comunità",
|
||||||
|
|||||||
@@ -2472,7 +2472,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": "소득 자본화 유형",
|
||||||
|
"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": {
|
"links": {
|
||||||
"Community": "지역 사회",
|
"Community": "지역 사회",
|
||||||
|
|||||||
@@ -2471,7 +2471,13 @@
|
|||||||
"Enable income capitalization": "Įgalinti pajamų kapitalizaciją",
|
"Enable income capitalization": "Įgalinti pajamų kapitalizaciją",
|
||||||
"Income capitalization calculation type": "Pajamų kapitalizavimo skaičiavimo tipas",
|
"Income capitalization calculation type": "Pajamų kapitalizavimo skaičiavimo tipas",
|
||||||
"Income capitalization strategy": "Pajamų kapitalizavimo strategija",
|
"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": {
|
"links": {
|
||||||
"Community": "bendruomenė",
|
"Community": "bendruomenė",
|
||||||
|
|||||||
@@ -2471,7 +2471,13 @@
|
|||||||
"Enable income capitalization": "Iespējot ienākumu kapitalizāciju",
|
"Enable income capitalization": "Iespējot ienākumu kapitalizāciju",
|
||||||
"Income capitalization calculation type": "Ienākumu kapitalizācijas aprēķina veids",
|
"Income capitalization calculation type": "Ienākumu kapitalizācijas aprēķina veids",
|
||||||
"Income capitalization strategy": "Ienākumu kapitalizācijas stratēģija",
|
"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": {
|
"links": {
|
||||||
"Community": "kopiena",
|
"Community": "kopiena",
|
||||||
|
|||||||
@@ -2471,7 +2471,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": "आय पूँजीकरण प्रकार",
|
||||||
|
"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": {
|
"links": {
|
||||||
"Community": "समुदाय",
|
"Community": "समुदाय",
|
||||||
|
|||||||
@@ -2471,7 +2471,13 @@
|
|||||||
"Enable income capitalization": "Habilitar capitalização de renda",
|
"Enable income capitalization": "Habilitar capitalização de renda",
|
||||||
"Income capitalization calculation type": "Tipo de cálculo de 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 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": {
|
"links": {
|
||||||
"Community": "Comunidade",
|
"Community": "Comunidade",
|
||||||
|
|||||||
@@ -2471,7 +2471,13 @@
|
|||||||
"Enable income capitalization": "Washa mtaji wa mapato",
|
"Enable income capitalization": "Washa mtaji wa mapato",
|
||||||
"Income capitalization calculation type": "Aina ya kukokotoa mtaji wa mapato",
|
"Income capitalization calculation type": "Aina ya kukokotoa mtaji wa mapato",
|
||||||
"Income capitalization strategy": "Mkakati wa 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": {
|
"links": {
|
||||||
"Community": "Jumuiya",
|
"Community": "Jumuiya",
|
||||||
|
|||||||
Reference in New Issue
Block a user