Skip to content

Commit ff485cd

Browse files
04GomezTedyyy-Albur
authored andcommitted
FINERACT-2312: Adjustment to savings account products by adding a new accounting account interest receivables account.
1 parent 9f53440 commit ff485cd

File tree

9 files changed

+273
-11
lines changed

9 files changed

+273
-11
lines changed

fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingHelper.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ public void mergeProductToAccountMappingChanges(final JsonElement element, final
100100
optionalProductToGLAccountMappingEntries.add("incomeFromGoodwillCreditInterestAccountId");
101101
optionalProductToGLAccountMappingEntries.add("incomeFromGoodwillCreditFeesAccountId");
102102
optionalProductToGLAccountMappingEntries.add("incomeFromGoodwillCreditPenaltyAccountId");
103+
optionalProductToGLAccountMappingEntries.add("interestReceivableAccountId");
103104
optionalProductToGLAccountMappingEntries.add(LoanProductAccountingParams.DEFERRED_INCOME_LIABILITY.getValue());
104105
optionalProductToGLAccountMappingEntries.add(LoanProductAccountingParams.INCOME_FROM_CAPITALIZATION.getValue());
105106
optionalProductToGLAccountMappingEntries.add(LoanProductAccountingParams.BUY_DOWN_EXPENSE.getValue());
@@ -118,6 +119,11 @@ public void mergeProductToAccountMappingChanges(final JsonElement element, final
118119
this.accountMappingRepository.saveAndFlush(accountMapping);
119120
}
120121
}
122+
} else {
123+
final ProductToGLAccountMapping accountMapping = this.accountMappingRepository.findCoreProductToFinAccountMapping(productId,
124+
portfolioProductType.getValue(), accountTypeId);
125+
this.accountMappingRepository.delete(accountMapping);
126+
changes.put(paramName, null);
121127
}
122128
}
123129

fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingReadPlatformServiceImpl.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,8 @@ private Map<String, Object> setAccrualPeriodicSavingsProductToGLAccountMaps(fina
358358
// Assets
359359
if (glAccountForSavings.equals(AccrualAccountsForSavings.SAVINGS_REFERENCE)) {
360360
accountMappingDetails.put(SavingProductAccountingDataParams.SAVINGS_REFERENCE.getValue(), glAccountData);
361+
} else if (glAccountForSavings.equals(AccrualAccountsForSavings.INTEREST_RECEIVABLE)) {
362+
accountMappingDetails.put(SavingProductAccountingDataParams.INTEREST_RECEIVABLE.getValue(), glAccountData);
361363
} else if (glAccountForSavings.equals(AccrualAccountsForSavings.OVERDRAFT_PORTFOLIO_CONTROL)) {
362364
accountMappingDetails.put(SavingProductAccountingDataParams.OVERDRAFT_PORTFOLIO_CONTROL.getValue(), glAccountData);
363365
} else if (glAccountForSavings.equals(AccrualAccountsForSavings.FEES_RECEIVABLE)) {

fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,10 @@ public void handleChangesToSavingsProductToGLAccountMappings(final Long savingsP
263263
savingsProductId, AccrualAccountsForSavings.FEES_RECEIVABLE.getValue(),
264264
AccrualAccountsForSavings.FEES_RECEIVABLE.toString(), changes);
265265

266+
mergeSavingsToAssetAccountMappingChanges(element, SavingProductAccountingParams.INTEREST_RECEIVABLE.getValue(),
267+
savingsProductId, AccrualAccountsForSavings.INTEREST_RECEIVABLE.getValue(),
268+
AccrualAccountsForSavings.INTEREST_RECEIVABLE.toString(), changes);
269+
266270
mergeSavingsToAssetAccountMappingChanges(element, SavingProductAccountingParams.PENALTIES_RECEIVABLE.getValue(),
267271
savingsProductId, AccrualAccountsForSavings.PENALTIES_RECEIVABLE.getValue(),
268272
AccrualAccountsForSavings.PENALTIES_RECEIVABLE.toString(), changes);

fineract-core/src/main/java/org/apache/fineract/accounting/common/AccountingConstants.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,8 @@ public enum AccrualAccountsForSavings {
312312
ESCHEAT_LIABILITY(14), //
313313
FEES_RECEIVABLE(15), //
314314
PENALTIES_RECEIVABLE(16), //
315-
INTEREST_PAYABLE(17);
315+
INTEREST_PAYABLE(17), //
316+
INTEREST_RECEIVABLE(18);
316317

317318
private final Integer value;
318319

@@ -366,6 +367,7 @@ public enum SavingProductAccountingParams {
366367
LOSSES_WRITTEN_OFF("writeOffAccountId"), //
367368
ESCHEAT_LIABILITY("escheatLiabilityId"), //
368369
PENALTIES_RECEIVABLE("penaltiesReceivableAccountId"), //
370+
INTEREST_RECEIVABLE("interestReceivableAccountId"), //
369371
FEES_RECEIVABLE("feesReceivableAccountId"), //
370372
INTEREST_PAYABLE("interestPayableAccountId");
371373

@@ -404,7 +406,8 @@ public enum SavingProductAccountingDataParams {
404406
ESCHEAT_LIABILITY("escheatLiabilityAccount"), //
405407
FEES_RECEIVABLE("feeReceivableAccount"), //
406408
PENALTIES_RECEIVABLE("penaltyReceivableAccount"), //
407-
INTEREST_PAYABLE("interestPayableAccount"); //
409+
INTEREST_PAYABLE("interestPayableAccount"), //
410+
INTEREST_RECEIVABLE("interestReceivableAccount"); //
408411

409412
private final String value;
410413

fineract-provider/src/main/java/org/apache/fineract/accounting/productaccountmapping/service/ProductToGLAccountMappingWritePlatformServiceImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,7 @@ public void createSavingProductToGLAccountMapping(final Long savingProductId, fi
292292
final JsonElement element = this.fromApiJsonHelper.parse(command.json());
293293
final Integer accountingRuleTypeId = this.fromApiJsonHelper.extractIntegerNamed(accountingRuleParamName, element,
294294
Locale.getDefault());
295+
295296
final AccountingRuleType accountingRuleType = AccountingRuleType.fromInt(accountingRuleTypeId);
296297
switch (accountingRuleType) {
297298
case NONE:
@@ -303,6 +304,10 @@ public void createSavingProductToGLAccountMapping(final Long savingProductId, fi
303304
case ACCRUAL_PERIODIC:
304305
saveSavingsBaseAccountMapping(savingProductId, accountType, command, element);
305306
// assets
307+
this.savingsProductToGLAccountMappingHelper.saveSavingsToAssetAccountMapping(element,
308+
SavingProductAccountingParams.INTEREST_RECEIVABLE.getValue(), savingProductId,
309+
AccrualAccountsForSavings.INTEREST_RECEIVABLE.getValue());
310+
306311
this.savingsProductToGLAccountMappingHelper.saveSavingsToAssetAccountMapping(element,
307312
SavingProductAccountingParams.FEES_RECEIVABLE.getValue(), savingProductId,
308313
AccrualAccountsForSavings.FEES_RECEIVABLE.getValue());

fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/SavingsProductsApiResourceSwagger.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ private GetSavingsProductsAccountingMappings() {}
257257
public GetSavingsProductsGlAccount feeReceivableAccount;
258258
public GetSavingsProductsGlAccount penaltyReceivableAccount;
259259
public GetSavingsProductsGlAccount incomeFromFeeAccount;
260+
public GetSavingsProductsGlAccount interestReceivableAccount;
260261
public GetSavingsProductsGlAccount incomeFromPenaltyAccount;
261262
public GetSavingsProductsGlAccount incomeFromInterest;
262263
public GetSavingsProductsGlAccount interestOnSavingsAccount;

fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductDataValidator.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,13 @@ public class SavingsProductDataValidator {
104104
SavingProductAccountingParams.FEES_RECEIVABLE.getValue(), SavingProductAccountingParams.INTEREST_PAYABLE.getValue(),
105105
SavingProductAccountingParams.OVERDRAFT_PORTFOLIO_CONTROL.getValue(),
106106
SavingProductAccountingParams.LOSSES_WRITTEN_OFF.getValue(), SavingProductAccountingParams.INCOME_FROM_INTEREST.getValue(),
107-
SavingProductAccountingParams.ESCHEAT_LIABILITY.getValue(), isDormancyTrackingActiveParamName, daysToDormancyParamName,
108-
daysToInactiveParamName, daysToEscheatParamName, allowOverdraftParamName, overdraftLimitParamName,
109-
nominalAnnualInterestRateOverdraftParamName, minOverdraftForInterestCalculationParamName,
110-
SavingsApiConstants.minRequiredBalanceParamName, SavingsApiConstants.enforceMinRequiredBalanceParamName,
111-
SavingsApiConstants.maxAllowedLienLimitParamName, SavingsApiConstants.lienAllowedParamName,
112-
minBalanceForInterestCalculationParamName, withHoldTaxParamName, taxGroupIdParamName));
107+
SavingProductAccountingParams.ESCHEAT_LIABILITY.getValue(), SavingProductAccountingParams.INTEREST_RECEIVABLE.getValue(),
108+
isDormancyTrackingActiveParamName, daysToDormancyParamName, daysToInactiveParamName, daysToEscheatParamName,
109+
allowOverdraftParamName, overdraftLimitParamName, nominalAnnualInterestRateOverdraftParamName,
110+
minOverdraftForInterestCalculationParamName, SavingsApiConstants.minRequiredBalanceParamName,
111+
SavingsApiConstants.enforceMinRequiredBalanceParamName, SavingsApiConstants.maxAllowedLienLimitParamName,
112+
SavingsApiConstants.lienAllowedParamName, minBalanceForInterestCalculationParamName, withHoldTaxParamName,
113+
taxGroupIdParamName));
113114

114115
public void validateForCreate(final String json) {
115116

0 commit comments

Comments
 (0)