diff --git a/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/data/LoanDTO.java b/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/data/LoanDTO.java index c1c690eac..d32977124 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/data/LoanDTO.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/data/LoanDTO.java @@ -15,19 +15,21 @@ public class LoanDTO { private String currencyCode; private boolean cashBasedAccountingEnabled; - private boolean accrualBasedAccountingEnabled; + final boolean upfrontAccrualBasedAccountingEnabled; + final boolean periodicAccrualBasedAccountingEnabled; private List newLoanTransactions; public LoanDTO(final Long loanId, final Long loanProductId, final Long officeId, final String currencyCode, - final boolean cashBasedAccountingEnabled, final boolean accrualBasedAccountingEnabled, - final List newLoanTransactions) { + final boolean cashBasedAccountingEnabled, final boolean upfrontAccrualBasedAccountingEnabled, + final boolean periodicAccrualBasedAccountingEnabled, final List newLoanTransactions) { this.loanId = loanId; this.loanProductId = loanProductId; this.officeId = officeId; this.cashBasedAccountingEnabled = cashBasedAccountingEnabled; - this.accrualBasedAccountingEnabled = accrualBasedAccountingEnabled; this.newLoanTransactions = newLoanTransactions; this.currencyCode = currencyCode; + this.upfrontAccrualBasedAccountingEnabled = upfrontAccrualBasedAccountingEnabled; + this.periodicAccrualBasedAccountingEnabled = periodicAccrualBasedAccountingEnabled; } public Long getLoanId() { @@ -62,12 +64,12 @@ public class LoanDTO { this.cashBasedAccountingEnabled = cashBasedAccountingEnabled; } - public boolean isAccrualBasedAccountingEnabled() { - return this.accrualBasedAccountingEnabled; + public boolean isUpfrontAccrualBasedAccountingEnabled() { + return this.upfrontAccrualBasedAccountingEnabled; } - public void setAccrualBasedAccountingEnabled(final boolean accrualBasedAccountingEnabled) { - this.accrualBasedAccountingEnabled = accrualBasedAccountingEnabled; + public boolean isPeriodicAccrualBasedAccountingEnabled() { + return this.periodicAccrualBasedAccountingEnabled; } public List getNewLoanTransactions() { diff --git a/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/service/AccountingProcessorForLoanFactory.java b/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/service/AccountingProcessorForLoanFactory.java index 0e6c63c14..40dd87e1c 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/service/AccountingProcessorForLoanFactory.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/service/AccountingProcessorForLoanFactory.java @@ -27,9 +27,10 @@ public class AccountingProcessorForLoanFactory { if (loanDTO.isCashBasedAccountingEnabled()) { accountingProcessorForLoan = this.applicationContext.getBean("cashBasedAccountingProcessorForLoan", AccountingProcessorForLoan.class); - } - - else if (loanDTO.isAccrualBasedAccountingEnabled()) { + } else if (loanDTO.isUpfrontAccrualBasedAccountingEnabled()) { + accountingProcessorForLoan = this.applicationContext.getBean("accrualBasedAccountingProcessorForLoan", + AccountingProcessorForLoan.class); + } else if (loanDTO.isPeriodicAccrualBasedAccountingEnabled()) { accountingProcessorForLoan = this.applicationContext.getBean("accrualBasedAccountingProcessorForLoan", AccountingProcessorForLoan.class); } diff --git a/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/service/AccountingProcessorHelper.java b/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/service/AccountingProcessorHelper.java index b7dae13bf..81874904c 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/service/AccountingProcessorHelper.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/service/AccountingProcessorHelper.java @@ -74,7 +74,7 @@ public class AccountingProcessorHelper { } public LoanDTO populateLoanDtoFromMap(final Map accountingBridgeData, final boolean cashBasedAccountingEnabled, - final boolean accrualBasedAccountingEnabled) { + final boolean upfrontAccrualBasedAccountingEnabled, final boolean periodicAccrualBasedAccountingEnabled) { final Long loanId = (Long) accountingBridgeData.get("loanId"); final Long loanProductId = (Long) accountingBridgeData.get("loanProductId"); final Long officeId = (Long) accountingBridgeData.get("officeId"); @@ -127,8 +127,8 @@ public class AccountingProcessorHelper { } - return new LoanDTO(loanId, loanProductId, officeId, currencyData.code(), cashBasedAccountingEnabled, accrualBasedAccountingEnabled, - newLoanTransactions); + return new LoanDTO(loanId, loanProductId, officeId, currencyData.code(), cashBasedAccountingEnabled, + upfrontAccrualBasedAccountingEnabled, periodicAccrualBasedAccountingEnabled, newLoanTransactions); } public SavingsDTO populateSavingsDtoFromMap(final Map accountingBridgeData, final boolean cashBasedAccountingEnabled, diff --git a/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/service/JournalEntryWritePlatformServiceJpaRepositoryImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/service/JournalEntryWritePlatformServiceJpaRepositoryImpl.java index 432e891a5..38cf9baa0 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/service/JournalEntryWritePlatformServiceJpaRepositoryImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/service/JournalEntryWritePlatformServiceJpaRepositoryImpl.java @@ -310,11 +310,12 @@ public class JournalEntryWritePlatformServiceJpaRepositoryImpl implements Journa public void createJournalEntriesForLoan(final Map accountingBridgeData) { final boolean cashBasedAccountingEnabled = (Boolean) accountingBridgeData.get("cashBasedAccountingEnabled"); - final boolean accrualBasedAccountingEnabled = (Boolean) accountingBridgeData.get("accrualBasedAccountingEnabled"); + final boolean upfrontAccrualBasedAccountingEnabled = (Boolean) accountingBridgeData.get("upfrontAccrualBasedAccountingEnabled"); + final boolean periodicAccrualBasedAccountingEnabled = (Boolean) accountingBridgeData.get("periodicAccrualBasedAccountingEnabled"); - if (cashBasedAccountingEnabled || accrualBasedAccountingEnabled) { + if (cashBasedAccountingEnabled || upfrontAccrualBasedAccountingEnabled || periodicAccrualBasedAccountingEnabled) { final LoanDTO loanDTO = this.helper.populateLoanDtoFromMap(accountingBridgeData, cashBasedAccountingEnabled, - accrualBasedAccountingEnabled); + upfrontAccrualBasedAccountingEnabled, periodicAccrualBasedAccountingEnabled); final AccountingProcessorForLoan accountingProcessorForLoan = this.accountingProcessorForLoanFactory .determineProcessor(loanDTO); accountingProcessorForLoan.createJournalEntriesForLoan(loanDTO);