feat: update RBI reserve return form 1 & 9 UI and FD accounting mapping

This commit is contained in:
2026-09-28 13:36:29 +05:30
parent 6cbb31b5c6
commit eb278978bd
17 changed files with 1116 additions and 366 deletions
@@ -308,6 +308,11 @@ export class FixedDepositProductAccountingStepComponent implements OnInit, OnCha
setRequired('incomeFromPenaltyAccountId', cashOrAccrual);
setRequired('feesReceivableAccountId', accrualOnly);
setRequired('penaltiesReceivableAccountId', accrualOnly);
// Required only on accrual, where there is no posting without it. On cash it stays optional but
// is offered, because interest posting routes through it when the product names one (see
// AccountingProcessorHelper.createInterestPostingJournalEntriesForSavings): the payable carries
// interest declared but not yet credited, and a product that names none collapses straight to
// Savings Control instead.
setRequired('interestPayableAccountId', accrualOnly);
setRequired('escheatLiabilityId', cashOrAccrual && this.isDormancyTrackingEnabled());
@@ -326,8 +331,8 @@ export class FixedDepositProductAccountingStepComponent implements OnInit, OnCha
rows: [
{
key: 'savingsReferenceAccountId',
label: 'Savings Reference Account',
inputLabel: 'Savings reference account',
label: 'Fixed Deposit Reference Account',
inputLabel: 'Fixed deposit reference account',
controlName: 'savingsReferenceAccountId',
options: this.assetAccountOptions,
required: true
@@ -360,8 +365,8 @@ export class FixedDepositProductAccountingStepComponent implements OnInit, OnCha
rows: [
{
key: 'savingsControlAccountId',
label: 'Savings Control Account',
inputLabel: 'Savings control account',
label: 'Fixed Deposit Control Account',
inputLabel: 'Fixed deposit control account',
controlName: 'savingsControlAccountId',
options: this.liabilityAccountOptions,
required: true
@@ -375,12 +380,16 @@ export class FixedDepositProductAccountingStepComponent implements OnInit, OnCha
required: true
},
{
// Offered on cash accounting too, not only accrual: interest posting routes through
// this account whichever basis the product uses, so that interest declared but not yet
// credited to the member reads as the bank's own liability rather than appearing only
// when it is paid. Optional on cash - a product naming none posts straight to Savings
// Control as before.
key: 'interestPayableAccountId',
label: 'Interest Payable Account',
inputLabel: 'Interest payable account',
controlName: 'interestPayableAccountId',
options: this.liabilityAccountOptions,
accrualOnly: true
options: this.liabilityAccountOptions
},
{
key: 'escheatLiabilityId',
@@ -402,8 +411,8 @@ export class FixedDepositProductAccountingStepComponent implements OnInit, OnCha
rows: [
{
key: 'interestOnSavingsAccountId',
label: 'Interest On Savings Account',
inputLabel: 'Interest on savings account',
label: 'Interest On Fixed Deposits',
inputLabel: 'Interest on fixed deposits',
controlName: 'interestOnSavingsAccountId',
options: this.expenseAccountOptions,
required: true
@@ -481,6 +481,7 @@
<mifosx-view-savings-accounting-details
[accountingRule]="accountingRule"
[accountingMappings]="accountingMappings"
productLabel="Fixed deposit"
></mifosx-view-savings-accounting-details>
}
@@ -607,6 +607,7 @@
<mifosx-view-savings-accounting-details
[accountingRule]="fixedDepositProductData.accountingRule"
[accountingMappings]="fixedDepositProductData.accountingMappings"
productLabel="Fixed deposit"
></mifosx-view-savings-accounting-details>
}
</section>