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%'" [withTitle]="'47%'"
> >
</mifosx-gl-account-display> </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> <h4 class="mat-h4 flex-100">{{ 'labels.heading.Expenses' | translate }}</h4>
@@ -1076,6 +1084,14 @@
[withTitle]="'47%'" [withTitle]="'47%'"
> >
</mifosx-gl-account-display> </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> <h4 class="mat-h4 flex-fill">{{ 'labels.heading.Liabilities' | translate }}</h4>
<mifosx-gl-account-display <mifosx-gl-account-display
@@ -202,11 +202,16 @@ export class LoanProductSummaryComponent implements OnInit, OnChanges {
this.loanProduct.incomeFromCapitalizationAccountId, this.loanProduct.incomeFromCapitalizationAccountId,
incomeAccountData incomeAccountData
), ),
incomeFromBuyDownAccount: this.glAccountLookUp(
this.loanProduct.incomeFromBuyDownAccountId,
incomeAccountData
),
writeOffAccount: this.glAccountLookUp(this.loanProduct.writeOffAccountId, expenseAccountData), writeOffAccount: this.glAccountLookUp(this.loanProduct.writeOffAccountId, expenseAccountData),
goodwillCreditAccount: this.glAccountLookUp(this.loanProduct.goodwillCreditAccountId, expenseAccountData), goodwillCreditAccount: this.glAccountLookUp(this.loanProduct.goodwillCreditAccountId, expenseAccountData),
chargeOffExpenseAccount: this.glAccountLookUp(this.loanProduct.writeOffAccountId, expenseAccountData), chargeOffExpenseAccount: this.glAccountLookUp(this.loanProduct.writeOffAccountId, expenseAccountData),
chargeOffFraudExpenseAccount: this.glAccountLookUp(this.loanProduct.writeOffAccountId, expenseAccountData), chargeOffFraudExpenseAccount: this.glAccountLookUp(this.loanProduct.writeOffAccountId, expenseAccountData),
buyDownExpenseAccount: this.glAccountLookUp(this.loanProduct.buyDownExpenseAccountId, expenseAccountData),
overpaymentLiabilityAccount: this.glAccountLookUp( overpaymentLiabilityAccount: this.glAccountLookUp(
this.loanProduct.overpaymentLiabilityAccountId, this.loanProduct.overpaymentLiabilityAccountId,
@@ -190,6 +190,16 @@
> >
</mifosx-gl-account-selector> </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> <mat-divider class="flex-98"></mat-divider>
<h4 class="mat-h4 flex-98">{{ 'labels.heading.Expenses' | translate }}</h4> <h4 class="mat-h4 flex-98">{{ 'labels.heading.Expenses' | translate }}</h4>
@@ -230,6 +240,16 @@
> >
</mifosx-gl-account-selector> </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> <mat-divider class="flex-98"></mat-divider>
<h4 class="mat-h4 flex-98">{{ 'labels.heading.Liabilities' | translate }}</h4> <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 incomeFromCapitalizationAccountId: accountingMappings.incomeFromCapitalizationAccount.id
}); });
} }
if (this.deferredIncomeRecognition.buyDownFee.enableBuyDownFee) {
this.loanProductAccountingForm.patchValue({
buyDownExpenseAccountId: accountingMappings.buyDownExpenseAccount.id,
incomeFromBuyDownAccountId: accountingMappings.incomeFromBuyDownAccount.id
});
}
} }
/* falls through */ /* falls through */
case 2: case 2:
@@ -607,6 +613,19 @@ export class LoanProductAccountingStepComponent implements OnInit, OnChanges {
this.loanProductAccountingForm.removeControl('deferredIncomeLiabilityAccountId'); this.loanProductAccountingForm.removeControl('deferredIncomeLiabilityAccountId');
this.loanProductAccountingForm.removeControl('incomeFromCapitalizationAccountId'); 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 // Accounting
accountingRule: any; accountingRule: any;
accountingMappings?: { [key: string]: AccountingMapping }; accountingMappings?: { [key: string]: AccountingMapping };
buyDownExpenseAccountId?: number;
fundSourceAccountId?: number; fundSourceAccountId?: number;
goodwillCreditAccountId?: number; goodwillCreditAccountId?: number;
incomeFromBuyDownAccountId?: number;
incomeFromCapitalizationAccountId?: number; incomeFromCapitalizationAccountId?: number;
incomeFromChargeOffFeesAccountId?: number; incomeFromChargeOffFeesAccountId?: number;
incomeFromChargeOffInterestAccountId?: number; incomeFromChargeOffInterestAccountId?: number;
+3 -1
View File
@@ -2477,7 +2477,9 @@
"Buy down fee calculation type": "Typ výpočtu poplatku 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 strategy": "Strategie poplatku za odkup",
"Buy down fee income type": "Typ příjmu z poplatku za odkup", "Buy down fee income type": "Typ příjmu z poplatku za odkup",
"Buy down fees": "Poplatky za odkup" "Buy down fees": "Poplatky za odkup",
"Income from Buy down fees": "Příjmy z poplatků za odkup",
"Buy down fee Expense": "Náklady na poplatek za odkup"
}, },
"links": { "links": {
"Community": "Společenství", "Community": "Společenství",
+3 -1
View File
@@ -2477,7 +2477,9 @@
"Buy down fee calculation type": "Berechnungsart der Buy-Down-Gebühr", "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 strategy": "Strategie für Buy-Down-Gebühr",
"Buy down fee income type": "Einnahmeart der Buy-Down-Gebühr", "Buy down fee income type": "Einnahmeart der Buy-Down-Gebühr",
"Buy down fees": "Buy-Down-Gebühren" "Buy down fees": "Buy-Down-Gebühren",
"Income from Buy down fees": "Einnahmen aus Buy-Down-Gebühren",
"Buy down fee Expense": "Aufwendungen aus Buy-Down-Gebühren"
}, },
"links": { "links": {
"Community": "Gemeinschaft", "Community": "Gemeinschaft",
+3 -1
View File
@@ -2484,7 +2484,9 @@
"Buy down fee calculation type": "Buy down fee calculation type", "Buy down fee calculation type": "Buy down fee calculation type",
"Buy down fee strategy": "Buy down fee strategy", "Buy down fee strategy": "Buy down fee strategy",
"Buy down fee income type": "Buy down fee income type", "Buy down fee income type": "Buy down fee income type",
"Buy down fees": "Buy down fees" "Buy down fees": "Buy down fees",
"Income from Buy down fees": "Income from Buy down fees",
"Buy down fee Expense": "Buy down fee Expense"
}, },
"links": { "links": {
"Community": "Community", "Community": "Community",
+3 -1
View File
@@ -2477,7 +2477,9 @@
"Buy down fee calculation type": "Tipo de cálculo de 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 strategy": "Estrategia de comisión de compra anticipada",
"Buy down fee income type": "Tipo de ingreso 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" "Buy down fees": "Tarifas de compra anticipada",
"Income from Buy down fees": "Ingresos por comisiones de compra inicial",
"Buy down fee Expense": "Gastos por comisiones de compra inicial"
}, },
"links": { "links": {
"Community": "Comunidad", "Community": "Comunidad",
+3 -1
View File
@@ -2477,7 +2477,9 @@
"Buy down fee calculation type": "Tipo de cálculo de 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 strategy": "Estrategia de comisión de compra anticipada",
"Buy down fee income type": "Tipo de ingreso 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" "Buy down fees": "Tarifas de compra anticipada",
"Income from Buy down fees": "Ingresos por comisiones de compra inicial",
"Buy down fee Expense": "Gastos por comisiones de compra inicial"
}, },
"links": { "links": {
"Community": "Comunidad", "Community": "Comunidad",
+3 -1
View File
@@ -2477,7 +2477,9 @@
"Buy down fee calculation type": "Type de calcul des 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 strategy": "Stratégie des frais de rachat",
"Buy down fee income type": "Type de revenu des frais de rachat", "Buy down fee income type": "Type de revenu des frais de rachat",
"Buy down fees": "Frais d'achat" "Buy down fees": "Frais d'achat",
"Income from Buy down fees": "Revenus des commissions de rachat",
"Buy down fee Expense": "Charges des commissions de rachat"
}, },
"links": { "links": {
"Community": "Communauté", "Community": "Communauté",
+3 -1
View File
@@ -2477,7 +2477,9 @@
"Buy down fee calculation type": "Tipo di calcolo della 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 strategy": "Strategia per la commissione di buy down",
"Buy down fee income type": "Tipo di ricavo da commissione di buy down", "Buy down fee income type": "Tipo di ricavo da commissione di buy down",
"Buy down fees": "Commissioni di acquisto" "Buy down fees": "Commissioni di acquisto",
"Income from Buy down fees": "Proventi da commissioni di buy down",
"Buy down fee Expense": "Spese da commissioni di buy down"
}, },
"links": { "links": {
"Community": "Comunità", "Community": "Comunità",
+3 -1
View File
@@ -2478,7 +2478,9 @@
"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": "매수 수수료",
"Income from Buy down fees": "매입 수수료 수입",
"Buy down fee Expense": "매입 수수료 비용"
}, },
"links": { "links": {
"Community": "지역 사회", "Community": "지역 사회",
+3 -1
View File
@@ -2477,7 +2477,9 @@
"Buy down fee calculation type": "Supirkimo mokesčio skaičiavimo tipas", "Buy down fee calculation type": "Supirkimo mokesčio skaičiavimo tipas",
"Buy down fee strategy": "Supirkimo mokesčio strategija", "Buy down fee strategy": "Supirkimo mokesčio strategija",
"Buy down fee income type": "Supirkimo mokesčio pajamų tipas", "Buy down fee income type": "Supirkimo mokesčio pajamų tipas",
"Buy down fees": "Išpirkimo mokesčiai" "Buy down fees": "Išpirkimo mokesčiai",
"Income from Buy down fees": "Pajamos iš supirkimo mokesčių",
"Buy down fee Expense": "Supirkimo mokesčio išlaidos"
}, },
"links": { "links": {
"Community": "bendruomenė", "Community": "bendruomenė",
+3 -1
View File
@@ -2477,7 +2477,9 @@
"Buy down fee calculation type": "Atpirkšanas maksas aprēķina veids", "Buy down fee calculation type": "Atpirkšanas maksas aprēķina veids",
"Buy down fee strategy": "Atpirkšanas maksas stratēģija", "Buy down fee strategy": "Atpirkšanas maksas stratēģija",
"Buy down fee income type": "Atpirkšanas maksas ienākumu veids", "Buy down fee income type": "Atpirkšanas maksas ienākumu veids",
"Buy down fees": "Iepirkuma maksas" "Buy down fees": "Iepirkuma maksas",
"Income from Buy down fees": "Ienākumi no akciju izpirkšanas komisijas maksām",
"Buy down fee Expense": "Akciju izpirkšanas komisijas izdevumi"
}, },
"links": { "links": {
"Community": "kopiena", "Community": "kopiena",
+3 -1
View File
@@ -2477,7 +2477,9 @@
"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": "खरिद शुल्क",
"Income from Buy down fees": "खरिद शुल्कबाट हुने आम्दानी",
"Buy down fee Expense": "खरीद शुल्क खर्च"
}, },
"links": { "links": {
"Community": "समुदाय", "Community": "समुदाय",
+3 -1
View File
@@ -2477,7 +2477,9 @@
"Buy down fee calculation type": "Tipo de cálculo de 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 strategy": "Estratégia de taxa de aquisição",
"Buy down fee income type": "Tipo de receita 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" "Buy down fees": "Taxas de compra antecipada",
"Income from Buy down fees": "Receita com taxas de recompra",
"Buy down fee Expense": "Despesa com taxas de recompra"
}, },
"links": { "links": {
"Community": "Comunidade", "Community": "Comunidade",
+3 -1
View File
@@ -2477,7 +2477,9 @@
"Buy down fee calculation type": "Nunua aina ya hesabu ya ada ya 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 strategy": "Nunua mkakati wa ada ya chini",
"Buy down fee income type": "Nunua aina ya mapato ya chini", "Buy down fee income type": "Nunua aina ya mapato ya chini",
"Buy down fees": "Nunua ada za chini" "Buy down fees": "Nunua ada za chini",
"Income from Buy down fees": "Mapato kutoka kwa ada ya Kununua",
"Buy down fee Expense": "Kununua ada ya chini Gharama"
}, },
"links": { "links": {
"Community": "Jumuiya", "Community": "Jumuiya",