WEB-213: Loan product config - buy down fees accounting

This commit is contained in:
adam.magyari
2025-06-24 17:55:46 +02:00
parent 6dc42838a6
commit 0fff471a21
18 changed files with 101 additions and 13 deletions
@@ -1042,6 +1042,14 @@
[withTitle]="'47%'"
>
</mifosx-gl-account-display>
<mifosx-gl-account-display
class="flex-100"
*ngIf="accountingMappings.incomeFromBuyDownAccount"
[accountTitle]="'Income from Buy down fees'"
[glAccount]="accountingMappings.incomeFromBuyDownAccount"
[withTitle]="'47%'"
>
</mifosx-gl-account-display>
<h4 class="mat-h4 flex-100">{{ 'labels.heading.Expenses' | translate }}</h4>
@@ -1076,6 +1084,14 @@
[withTitle]="'47%'"
>
</mifosx-gl-account-display>
<mifosx-gl-account-display
class="flex-100"
*ngIf="accountingMappings.buyDownExpenseAccount"
[accountTitle]="'Buy down fee Expense'"
[glAccount]="accountingMappings.buyDownExpenseAccount"
[withTitle]="'47%'"
>
</mifosx-gl-account-display>
<h4 class="mat-h4 flex-fill">{{ 'labels.heading.Liabilities' | translate }}</h4>
<mifosx-gl-account-display
@@ -202,11 +202,16 @@ export class LoanProductSummaryComponent implements OnInit, OnChanges {
this.loanProduct.incomeFromCapitalizationAccountId,
incomeAccountData
),
incomeFromBuyDownAccount: this.glAccountLookUp(
this.loanProduct.incomeFromBuyDownAccountId,
incomeAccountData
),
writeOffAccount: this.glAccountLookUp(this.loanProduct.writeOffAccountId, expenseAccountData),
goodwillCreditAccount: this.glAccountLookUp(this.loanProduct.goodwillCreditAccountId, expenseAccountData),
chargeOffExpenseAccount: this.glAccountLookUp(this.loanProduct.writeOffAccountId, expenseAccountData),
chargeOffFraudExpenseAccount: this.glAccountLookUp(this.loanProduct.writeOffAccountId, expenseAccountData),
buyDownExpenseAccount: this.glAccountLookUp(this.loanProduct.buyDownExpenseAccountId, expenseAccountData),
overpaymentLiabilityAccount: this.glAccountLookUp(
this.loanProduct.overpaymentLiabilityAccountId,
@@ -190,6 +190,16 @@
>
</mifosx-gl-account-selector>
<mifosx-gl-account-selector
class="flex-48"
*ngIf="deferredIncomeRecognition?.buyDownFee?.enableBuyDownFee"
[inputFormControl]="loanProductAccountingForm.controls.incomeFromBuyDownAccountId"
[glAccountList]="incomeAccountData"
[required]="true"
[inputLabel]="'Income from Buy down fees'"
>
</mifosx-gl-account-selector>
<mat-divider class="flex-98"></mat-divider>
<h4 class="mat-h4 flex-98">{{ 'labels.heading.Expenses' | translate }}</h4>
@@ -230,6 +240,16 @@
>
</mifosx-gl-account-selector>
<mifosx-gl-account-selector
class="flex-48"
*ngIf="deferredIncomeRecognition?.buyDownFee?.enableBuyDownFee"
[inputFormControl]="loanProductAccountingForm.controls.buyDownExpenseAccountId"
[glAccountList]="expenseAccountData"
[required]="true"
[inputLabel]="'Buy down fee Expense'"
>
</mifosx-gl-account-selector>
<mat-divider class="flex-98"></mat-divider>
<h4 class="mat-h4 flex-98">{{ 'labels.heading.Liabilities' | translate }}</h4>
@@ -155,6 +155,12 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
incomeFromCapitalizationAccountId: accountingMappings.incomeFromCapitalizationAccount.id
});
}
if (this.deferredIncomeRecognition.buyDownFee.enableBuyDownFee) {
this.loanProductAccountingForm.patchValue({
buyDownExpenseAccountId: accountingMappings.buyDownExpenseAccount.id,
incomeFromBuyDownAccountId: accountingMappings.incomeFromBuyDownAccount.id
});
}
}
/* falls through */
case 2:
@@ -607,6 +613,19 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
this.loanProductAccountingForm.removeControl('deferredIncomeLiabilityAccountId');
this.loanProductAccountingForm.removeControl('incomeFromCapitalizationAccountId');
}
if (this.deferredIncomeRecognition.buyDownFee.enableBuyDownFee) {
this.loanProductAccountingForm.addControl(
'buyDownExpenseAccountId',
new UntypedFormControl('', Validators.required)
);
this.loanProductAccountingForm.addControl(
'incomeFromBuyDownAccountId',
new UntypedFormControl('', Validators.required)
);
} else {
this.loanProductAccountingForm.removeControl('buyDownExpenseAccountId');
this.loanProductAccountingForm.removeControl('incomeFromBuyDownAccountId');
}
}
}
}
@@ -121,8 +121,10 @@ export interface LoanProduct {
// Accounting
accountingRule: any;
accountingMappings?: { [key: string]: AccountingMapping };
buyDownExpenseAccountId?: number;
fundSourceAccountId?: number;
goodwillCreditAccountId?: number;
incomeFromBuyDownAccountId?: number;
incomeFromCapitalizationAccountId?: number;
incomeFromChargeOffFeesAccountId?: number;
incomeFromChargeOffInterestAccountId?: number;