Repository: fineract Updated Branches: refs/heads/develop 06c959ebb -> cbfdfa001
saving for collection sheet and 347,251,360 Project: http://git-wip-us.apache.org/repos/asf/fineract/repo Commit: http://git-wip-us.apache.org/repos/asf/fineract/commit/f537bae6 Tree: http://git-wip-us.apache.org/repos/asf/fineract/tree/f537bae6 Diff: http://git-wip-us.apache.org/repos/asf/fineract/diff/f537bae6 Branch: refs/heads/develop Commit: f537bae699d51593d05fa43e52734e36d3568146 Parents: 3ddde49 Author: nazeer shaik <nazeer.sh...@confluxtechnologies.com> Authored: Fri Jun 9 15:38:41 2017 +0530 Committer: nazeer shaik <nazeer.sh...@confluxtechnologies.com> Committed: Fri Jun 9 15:38:41 2017 +0530 ---------------------------------------------------------------------- .../CollectionSheetConstants.java | 1 + ...CollectionSheetTransactionDataValidator.java | 3 ++- .../collectionsheet/data/SavingsDueData.java | 13 ++++++--- .../CollectionSheetReadPlatformServiceImpl.java | 22 ++++++++------- .../data/SavingsAccountTransactionDTO.java | 13 +++++++-- .../savings/data/SavingsProductData.java | 11 ++++++++ .../savings/domain/DepositAccountAssembler.java | 5 +++- .../domain/DepositAccountDomainService.java | 3 +++ .../domain/DepositAccountDomainServiceJpa.java | 15 +++++++++++ .../savings/domain/RecurringDepositAccount.java | 2 +- .../domain/SavingsAccountDomainServiceJpa.java | 6 +++-- ...ntWritePlatformServiceJpaRepositoryImpl.java | 28 +++++++++++++++----- ...ntWritePlatformServiceJpaRepositoryImpl.java | 3 ++- 13 files changed, 98 insertions(+), 27 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/fineract/blob/f537bae6/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/CollectionSheetConstants.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/CollectionSheetConstants.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/CollectionSheetConstants.java index 7021849..bb4e9b0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/CollectionSheetConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/CollectionSheetConstants.java @@ -50,6 +50,7 @@ public class CollectionSheetConstants { public static final String loanIdParamName = "loanId"; public static final String savingsIdParamName = "savingsId"; public static final String transactionAmountParamName = "transactionAmount"; + public static final String depositAccountTypeParamName = "depositAccountType"; public static final Set<String> COLLECTIONSHEET_REQUEST_DATA_PARAMETERS = new HashSet<>(Arrays.asList(localeParamName, dateFormatParamName, transactionDateParamName, actualDisbursementDateParamName, bulkRepaymentTransactionsParamName, http://git-wip-us.apache.org/repos/asf/fineract/blob/f537bae6/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/CollectionSheetTransactionDataValidator.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/CollectionSheetTransactionDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/CollectionSheetTransactionDataValidator.java index 39200e7..56edceb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/CollectionSheetTransactionDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/CollectionSheetTransactionDataValidator.java @@ -48,6 +48,7 @@ import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder; import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; +import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.portfolio.paymentdetail.PaymentDetailConstants; import org.joda.time.LocalDate; import org.springframework.beans.factory.annotation.Autowired; @@ -119,7 +120,7 @@ public class CollectionSheetTransactionDataValidator { final JsonElement element = this.fromApiJsonHelper.parse(json); final LocalDate transactionDate = this.fromApiJsonHelper.extractLocalDateNamed(transactionDateParamName, element); - baseDataValidator.reset().parameter(transactionDateParamName).value(transactionDate).notNull(); + baseDataValidator.reset().parameter(transactionDateParamName).value(transactionDate).notNull().validateDateBeforeOrEqual(DateUtils.getLocalDateOfTenant()); final String note = this.fromApiJsonHelper.extractStringNamed(noteParamName, element); if (StringUtils.isNotBlank(note)) { http://git-wip-us.apache.org/repos/asf/fineract/blob/f537bae6/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/SavingsDueData.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/SavingsDueData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/SavingsDueData.java index c084b3e..e09c290 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/SavingsDueData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/SavingsDueData.java @@ -40,14 +40,16 @@ public class SavingsDueData { private final CurrencyData currency; @SuppressWarnings("unused") private BigDecimal dueAmount = BigDecimal.ZERO; + @SuppressWarnings("unused") + private String depositAccountType; public static SavingsDueData instance(final Long savingsId, final String accountId, final Integer accountStatusId, - final String productName, final Long productId, final CurrencyData currency, final BigDecimal dueAmount) { - return new SavingsDueData(savingsId, accountId, accountStatusId, productName, productId, currency, dueAmount); + final String productName, final Long productId, final CurrencyData currency, final BigDecimal dueAmount, final String depositAccountType) { + return new SavingsDueData(savingsId, accountId, accountStatusId, productName, productId, currency, dueAmount, depositAccountType); } private SavingsDueData(final Long savingsId, final String accountId, final Integer accountStatusId, final String productName, - final Long productId, final CurrencyData currency, final BigDecimal dueAmount) { + final Long productId, final CurrencyData currency, final BigDecimal dueAmount, final String depositAccountType) { this.savingsId = savingsId; this.accountId = accountId; this.accountStatusId = accountStatusId; @@ -55,6 +57,7 @@ public class SavingsDueData { this.productId = productId; this.currency = currency; this.dueAmount = dueAmount; + this.depositAccountType = depositAccountType; } public String productName() { @@ -64,5 +67,9 @@ public class SavingsDueData { public Long productId() { return this.productId; } + + public String getDepositAccountType() { + return depositAccountType; + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/fineract/blob/f537bae6/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/service/CollectionSheetReadPlatformServiceImpl.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/service/CollectionSheetReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/service/CollectionSheetReadPlatformServiceImpl.java index 8432d36..18be4d0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/service/CollectionSheetReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/service/CollectionSheetReadPlatformServiceImpl.java @@ -235,7 +235,7 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe .append("if(ln.loan_status_id = 200 , ln.principal_amount , null) As disbursementAmount, ") .append("sum(ifnull(if(ln.loan_status_id = 300, ls.principal_amount, 0.0), 0.0) - ifnull(if(ln.loan_status_id = 300, ls.principal_completed_derived, 0.0), 0.0)) As principalDue, ") .append("ln.principal_repaid_derived As principalPaid, ") - .append("sum(ifnull(if(ln.loan_status_id = 300, ls.interest_amount, 0.0), 0.0) - ifnull(if(ln.loan_status_id = 300, ls.interest_completed_derived, 0.0), 0.0)) As interestDue, ") + .append("sum(ifnull(if(ln.loan_status_id = 300, ls.interest_amount, 0.0), 0.0) - ifnull(if(ln.loan_status_id = 300, ls.interest_completed_derived, 0.0), 0.0) - IFNULL(IF(ln.loan_status_id = 300, ls.interest_waived_derived, 0.0), 0.0)) As interestDue, ") .append("ln.interest_repaid_derived As interestPaid, ") .append("sum(ifnull(if(ln.loan_status_id = 300, ls.fee_charges_amount, 0.0), 0.0) - ifnull(if(ln.loan_status_id = 300, ls.fee_charges_completed_derived, 0.0), 0.0)) As feeDue, ") .append("ln.fee_charges_repaid_derived As feePaid, ") @@ -439,6 +439,7 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe for (SavingsDueData savingsDueData : savingsDatas) { final SavingsProductData savingsProduct = SavingsProductData.lookup(savingsDueData.productId(), savingsDueData.productName()); + savingsProduct.setDepositAccountType(savingsDueData.getDepositAccountType()); if (!savingsProducts.contains(savingsProduct)) { savingsProducts.add(savingsProduct); } @@ -515,6 +516,7 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe .append("sa.currency_multiplesof as inMultiplesOf, ") .append("rc.`name` as currencyName, ") .append("rc.display_symbol as currencyDisplaySymbol, ") + .append("if(sa.deposit_type_enum=100,'Saving Deposit',if(sa.deposit_type_enum=300,'Recurring Deposit','Current Deposit')) as depositAccountType, ") .append("rc.internationalized_name_code as currencyNameCode, ") .append("sum(ifnull(mss.deposit_amount,0) - ifnull(mss.deposit_amount_completed_derived,0)) as dueAmount ") @@ -526,8 +528,8 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe .append("JOIN m_client cl ON cl.id = gc.client_id ") .append("JOIN m_savings_account sa ON sa.client_id=cl.id and sa.status_enum=300 ") .append("JOIN m_savings_product sp ON sa.product_id=sp.id ") - .append("JOIN m_deposit_account_recurring_detail dard ON sa.id = dard.savings_account_id AND dard.is_mandatory = true AND dard.is_calendar_inherited = true ") - .append("JOIN m_mandatory_savings_schedule mss ON mss.savings_account_id=sa.id AND mss.duedate <= :dueDate ") + .append("LEFT JOIN m_deposit_account_recurring_detail dard ON sa.id = dard.savings_account_id AND dard.is_mandatory = true AND dard.is_calendar_inherited = true ") + .append("LEFT JOIN m_mandatory_savings_schedule mss ON mss.savings_account_id=sa.id AND mss.duedate <= :dueDate ") .append("LEFT JOIN m_currency rc on rc.`code` = sa.currency_code "); if (isCenterCollection) { @@ -655,25 +657,25 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe private SavingsDueDataMapper() {} @Override - public SavingsDueData mapRow(ResultSet rs, @SuppressWarnings("unused") int rowNum) throws SQLException { + public SavingsDueData mapRow(ResultSet rs, int rowNum) throws SQLException { final Long savingsId = rs.getLong("savingsId"); final String accountId = rs.getString("accountId"); final Integer accountStatusId = JdbcSupport.getInteger(rs, "accountStatusId"); final String productName = rs.getString("productShortName"); final Long productId = rs.getLong("productId"); final BigDecimal dueAmount = rs.getBigDecimal("dueAmount"); - final String currencyCode = rs.getString("currencyCode"); final String currencyName = rs.getString("currencyName"); final String currencyNameCode = rs.getString("currencyNameCode"); final String currencyDisplaySymbol = rs.getString("currencyDisplaySymbol"); final Integer currencyDigits = JdbcSupport.getInteger(rs, "currencyDigits"); final Integer inMultiplesOf = JdbcSupport.getInteger(rs, "inMultiplesOf"); + final String depositAccountType = rs.getString("depositAccountType"); // currency final CurrencyData currency = new CurrencyData(currencyCode, currencyName, currencyDigits, inMultiplesOf, currencyDisplaySymbol, currencyNameCode); - return SavingsDueData.instance(savingsId, accountId, accountStatusId, productName, productId, currency, dueAmount); + return SavingsDueData.instance(savingsId, accountId, accountStatusId, productName, productId, currency, dueAmount, depositAccountType); } } @@ -818,7 +820,7 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe public IndividualMandatorySavingsCollectionsheetExtractor(final boolean checkForOfficeId, final boolean checkforStaffId) { final StringBuffer sb = new StringBuffer(400); - sb.append("SELECT cl.display_name As clientName, cl.id As clientId, "); + sb.append("SELECT if(sa.deposit_type_enum=100,'Saving Deposit',if(sa.deposit_type_enum=300,'Recurring Deposit','Current Deposit')) as depositAccountType, cl.display_name As clientName, cl.id As clientId, "); sb.append("sa.id As savingsId, sa.account_no As accountId, sa.status_enum As accountStatusId, "); sb.append("sp.short_name As productShortName, sp.id As productId, "); sb.append("sa.currency_code as currencyCode, sa.currency_digits as currencyDigits, sa.currency_multiplesof as inMultiplesOf, "); @@ -827,11 +829,11 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe sb.append("FROM m_savings_account sa "); sb.append("JOIN m_client cl ON cl.id = sa.client_id "); sb.append("JOIN m_savings_product sp ON sa.product_id=sp.id "); - sb.append("JOIN m_deposit_account_recurring_detail dard ON sa.id = dard.savings_account_id AND dard.is_mandatory = true AND dard.is_calendar_inherited = false "); - sb.append("JOIN m_mandatory_savings_schedule mss ON mss.savings_account_id=sa.id AND mss.completed_derived = 0 AND mss.duedate <= :dueDate "); + sb.append("LEFT JOIN m_deposit_account_recurring_detail dard ON sa.id = dard.savings_account_id AND dard.is_mandatory = true AND dard.is_calendar_inherited = false "); + sb.append("LEFT JOIN m_mandatory_savings_schedule mss ON mss.savings_account_id=sa.id AND mss.completed_derived = 0 AND mss.duedate <= :dueDate "); sb.append("LEFT JOIN m_office of ON of.id = cl.office_id AND of.hierarchy like :officeHierarchy "); sb.append("LEFT JOIN m_currency rc on rc.`code` = sa.currency_code "); - sb.append("WHERE sa.status_enum=300 and sa.group_id is null "); + sb.append("WHERE sa.status_enum=300 and sa.group_id is null and sa.deposit_type_enum in (100,300,400) "); sb.append("and (cl.status_enum = 300 or (cl.status_enum = 600 and cl.closedon_date >= :dueDate)) "); if (checkForOfficeId) { sb.append("and of.id = :officeId "); http://git-wip-us.apache.org/repos/asf/fineract/blob/f537bae6/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionDTO.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionDTO.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionDTO.java index fb91c85..4cfaa30 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionDTO.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionDTO.java @@ -35,9 +35,10 @@ public class SavingsAccountTransactionDTO { private final Date createdDate; private final Long savingsAccountId; private final AppUser appUser; + private final Integer depositAccountType; public SavingsAccountTransactionDTO(final DateTimeFormatter formatter, final LocalDate transactionDate, - final BigDecimal transactionAmount, final PaymentDetail paymentDetail, final Date createdDate, final AppUser appUser) { + final BigDecimal transactionAmount, final PaymentDetail paymentDetail, final Date createdDate, final AppUser appUser, final Integer depositAccountType) { this.formatter = formatter; this.transactionDate = transactionDate; this.transactionAmount = transactionAmount; @@ -45,6 +46,7 @@ public class SavingsAccountTransactionDTO { this.createdDate = createdDate; this.savingsAccountId = null; this.appUser = appUser; + this.depositAccountType = depositAccountType; } /** @@ -58,7 +60,7 @@ public class SavingsAccountTransactionDTO { * @param savingsAccountId */ public SavingsAccountTransactionDTO(DateTimeFormatter formatter, LocalDate transactionDate, BigDecimal transactionAmount, - PaymentDetail paymentDetail, Date createdDate, Long savingsAccountId, AppUser appUser) { + PaymentDetail paymentDetail, Date createdDate, Long savingsAccountId, AppUser appUser, final Integer depositAccountType) { this.formatter = formatter; this.transactionDate = transactionDate; this.transactionAmount = transactionAmount; @@ -66,6 +68,7 @@ public class SavingsAccountTransactionDTO { this.createdDate = createdDate; this.savingsAccountId = savingsAccountId; this.appUser = appUser; + this.depositAccountType = depositAccountType; } public DateTimeFormatter getFormatter() { @@ -95,4 +98,10 @@ public class SavingsAccountTransactionDTO { public AppUser getAppUser() { return this.appUser; } + + public Integer getAccountType() { + return this.depositAccountType; + } + + } http://git-wip-us.apache.org/repos/asf/fineract/blob/f537bae6/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java index f8bba20..277126e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java @@ -61,6 +61,7 @@ public class SavingsProductData { private final BigDecimal minOverdraftForInterestCalculation; private final boolean withHoldTax; private final TaxGroupData taxGroup; + private String depositAccountType = null; // accounting private final EnumOptionData accountingRule; @@ -436,4 +437,14 @@ public class SavingsProductData { public String getName() { return this.name; } + + public String getDepositAccountType() { + return depositAccountType; + } + + public void setDepositAccountType(String depositAccountType) { + this.depositAccountType = depositAccountType; + } + + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/fineract/blob/f537bae6/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountAssembler.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountAssembler.java index efc2e58..80025bb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountAssembler.java @@ -73,6 +73,7 @@ import org.apache.fineract.portfolio.accountdetails.domain.AccountType; import org.apache.fineract.portfolio.client.domain.Client; import org.apache.fineract.portfolio.client.domain.ClientRepositoryWrapper; import org.apache.fineract.portfolio.client.exception.ClientNotActiveException; +import org.apache.fineract.portfolio.collectionsheet.CollectionSheetConstants; import org.apache.fineract.portfolio.group.domain.Group; import org.apache.fineract.portfolio.group.domain.GroupRepositoryWrapper; import org.apache.fineract.portfolio.group.exception.CenterNotActiveException; @@ -444,12 +445,14 @@ public class DepositAccountAssembler { final Long savingsId = this.fromApiJsonHelper.extractLongNamed(savingsIdParamName, savingsTransactionElement); final BigDecimal dueAmount = this.fromApiJsonHelper.extractBigDecimalNamed(transactionAmountParamName, savingsTransactionElement, locale); + final Integer depositAccountType = this.fromApiJsonHelper.extractIntegerNamed( + CollectionSheetConstants.depositAccountTypeParamName, savingsTransactionElement, locale); PaymentDetail detail = paymentDetail; if (paymentDetail == null) { detail = this.paymentDetailAssembler.fetchPaymentDetail(savingsTransactionElement); } final SavingsAccountTransactionDTO savingsAccountTransactionDTO = new SavingsAccountTransactionDTO(formatter, - transactionDate, dueAmount, detail, new Date(), savingsId, user); + transactionDate, dueAmount, detail, new Date(), savingsId, user, depositAccountType); savingsAccountTransactions.add(savingsAccountTransactionDTO); } } http://git-wip-us.apache.org/repos/asf/fineract/blob/f537bae6/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainService.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainService.java index 9df5b63..f97ed49 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainService.java @@ -37,6 +37,9 @@ public interface DepositAccountDomainService { SavingsAccountTransaction handleRDDeposit(RecurringDepositAccount account, DateTimeFormatter fmt, LocalDate transactionDate, BigDecimal transactionAmount, PaymentDetail paymentDetail, boolean isRegularTransaction); + + SavingsAccountTransaction handleSavingDeposit(SavingsAccount account, DateTimeFormatter fmt, LocalDate transactionDate, + BigDecimal transactionAmount, PaymentDetail paymentDetail, boolean isRegularTransaction); Long handleFDAccountClosure(FixedDepositAccount account, PaymentDetail paymentDetail, AppUser user, JsonCommand command, LocalDate tenantsTodayDate, Map<String, Object> changes); http://git-wip-us.apache.org/repos/asf/fineract/blob/f537bae6/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainServiceJpa.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainServiceJpa.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainServiceJpa.java index ac277fb..2b023c3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainServiceJpa.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainServiceJpa.java @@ -163,6 +163,21 @@ public class DepositAccountDomainServiceJpa implements DepositAccountDomainServi } return deposit; } + + @Transactional + @Override + public SavingsAccountTransaction handleSavingDeposit(final SavingsAccount account, final DateTimeFormatter fmt, + final LocalDate transactionDate, final BigDecimal transactionAmount, final PaymentDetail paymentDetail, + final boolean isRegularTransaction) { + boolean isAccountTransfer = false; + final SavingsAccountTransaction deposit = this.savingsAccountDomainService.handleDeposit(account, fmt, transactionDate, + transactionAmount, paymentDetail, isAccountTransfer, isRegularTransaction); + final Set<Long> existingTransactionIds = new HashSet<>(); + final Set<Long> existingReversedTransactionIds = new HashSet<>(); + updateExistingTransactionsDetails(account, existingTransactionIds, existingReversedTransactionIds); + postJournalEntries(account, existingTransactionIds, existingReversedTransactionIds, isAccountTransfer); + return deposit; + } private boolean isAnyActivationChargesDue(final RecurringDepositAccount account) { for (final SavingsAccountCharge savingsAccountCharge : account.charges()) { http://git-wip-us.apache.org/repos/asf/fineract/blob/f537bae6/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositAccount.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositAccount.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositAccount.java index 9b02027..8e276a9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositAccount.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositAccount.java @@ -523,7 +523,7 @@ public class RecurringDepositAccount extends SavingsAccount { final Money minRequiredOpeningBalance = Money.of(this.currency, this.minRequiredOpeningBalance); if (minRequiredOpeningBalance.isGreaterThanZero()) { final SavingsAccountTransactionDTO transactionDTO = new SavingsAccountTransactionDTO(fmt, getActivationLocalDate(), - minRequiredOpeningBalance.getAmount(), null, new Date(), user); + minRequiredOpeningBalance.getAmount(), null, new Date(), user, accountType); deposit(transactionDTO); // update existing transactions so derived balance fields are http://git-wip-us.apache.org/repos/asf/fineract/blob/f537bae6/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountDomainServiceJpa.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountDomainServiceJpa.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountDomainServiceJpa.java index dd72aea..32fdcd2 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountDomainServiceJpa.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountDomainServiceJpa.java @@ -95,8 +95,9 @@ public class SavingsAccountDomainServiceJpa implements SavingsAccountDomainServi final LocalDate postInterestOnDate = null; final Set<Long> existingReversedTransactionIds = new HashSet<>(); updateExistingTransactionsDetails(account, existingTransactionIds, existingReversedTransactionIds); + Integer accountType = null; final SavingsAccountTransactionDTO transactionDTO = new SavingsAccountTransactionDTO(fmt, transactionDate, transactionAmount, - paymentDetail, new Date(), user); + paymentDetail, new Date(), user, accountType); final SavingsAccountTransaction withdrawal = account.withdraw(transactionDTO, transactionBooleanValues.isApplyWithdrawFee()); final MathContext mc = MathContext.DECIMAL64; if (account.isBeforeLastPostingPeriod(transactionDate)) { @@ -157,8 +158,9 @@ public class SavingsAccountDomainServiceJpa implements SavingsAccountDomainServi final Set<Long> existingTransactionIds = new HashSet<>(); final Set<Long> existingReversedTransactionIds = new HashSet<>(); updateExistingTransactionsDetails(account, existingTransactionIds, existingReversedTransactionIds); + Integer accountType = null; final SavingsAccountTransactionDTO transactionDTO = new SavingsAccountTransactionDTO(fmt, transactionDate, transactionAmount, - paymentDetail, new Date(), user); + paymentDetail, new Date(), user, accountType); final SavingsAccountTransaction deposit = account.deposit(transactionDTO, savingsAccountTransactionType); final LocalDate postInterestOnDate = null; final MathContext mc = MathContext.DECIMAL64; http://git-wip-us.apache.org/repos/asf/fineract/blob/f537bae6/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformServiceJpaRepositoryImpl.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformServiceJpaRepositoryImpl.java index 6b0402e..8726bdd 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformServiceJpaRepositoryImpl.java @@ -699,13 +699,14 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo account.undoTransaction(transactionId); SavingsAccountTransaction transaction = null; + Integer accountType = null; if (savingsAccountTransaction.isDeposit()) { final SavingsAccountTransactionDTO transactionDTO = new SavingsAccountTransactionDTO(fmt, transactionDate, transactionAmount, - paymentDetail, savingsAccountTransaction.createdDate(), user); + paymentDetail, savingsAccountTransaction.createdDate(), user, accountType); transaction = account.deposit(transactionDTO); } else { final SavingsAccountTransactionDTO transactionDTO = new SavingsAccountTransactionDTO(fmt, transactionDate, transactionAmount, - paymentDetail, savingsAccountTransaction.createdDate(), user); + paymentDetail, savingsAccountTransaction.createdDate(), user, accountType); transaction = account.withdraw(transactionDTO, true); } final Long newtransactionId = saveTransactionToGenerateTransactionId(transaction); @@ -1353,22 +1354,37 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo existingTransactionIds, existingReversedTransactionIds, isAccountTransfer); this.journalEntryWritePlatformService.createJournalEntriesForSavings(accountingBridgeData); } - + @Transactional @Override public SavingsAccountTransaction mandatorySavingsAccountDeposit(final SavingsAccountTransactionDTO accountTransactionDTO) { boolean isRegularTransaction = false; - final RecurringDepositAccount account = (RecurringDepositAccount) this.depositAccountAssembler.assembleFrom( - accountTransactionDTO.getSavingsAccountId(), DepositAccountType.RECURRING_DEPOSIT); final PaymentDetail paymentDetail = accountTransactionDTO.getPaymentDetail(); if (paymentDetail != null && paymentDetail.getId() == null) { this.paymentDetailWritePlatformService.persistPaymentDetail(paymentDetail); } - return this.depositAccountDomainService.handleRDDeposit(account, accountTransactionDTO.getFormatter(), + if (accountTransactionDTO.getAccountType().equals(DepositAccountType.RECURRING_DEPOSIT.getValue())) { + RecurringDepositAccount account = (RecurringDepositAccount) this.depositAccountAssembler.assembleFrom( + accountTransactionDTO.getSavingsAccountId(), DepositAccountType.RECURRING_DEPOSIT); + return this.depositAccountDomainService.handleRDDeposit(account, accountTransactionDTO.getFormatter(), + accountTransactionDTO.getTransactionDate(), accountTransactionDTO.getTransactionAmount(), paymentDetail, + isRegularTransaction); + } + SavingsAccount account = null; + if (accountTransactionDTO.getAccountType().equals(DepositAccountType.SAVINGS_DEPOSIT.getValue())) { + account = this.depositAccountAssembler.assembleFrom(accountTransactionDTO.getSavingsAccountId(), + DepositAccountType.SAVINGS_DEPOSIT); + } else { + account = this.depositAccountAssembler.assembleFrom(accountTransactionDTO.getSavingsAccountId(), + DepositAccountType.CURRENT_DEPOSIT); + } + return this.depositAccountDomainService.handleSavingDeposit(account, accountTransactionDTO.getFormatter(), accountTransactionDTO.getTransactionDate(), accountTransactionDTO.getTransactionAmount(), paymentDetail, isRegularTransaction); + } + private AppUser getAppUserIfPresent() { AppUser user = null; if (this.context != null) { http://git-wip-us.apache.org/repos/asf/fineract/blob/f537bae6/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java index 2064f57..afc46fd 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java @@ -550,8 +550,9 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi SavingsAccountTransaction transaction = null; boolean isInterestTransfer = false; + Integer accountType = null; final SavingsAccountTransactionDTO transactionDTO = new SavingsAccountTransactionDTO(fmt, transactionDate, transactionAmount, - paymentDetail, savingsAccountTransaction.createdDate(), user); + paymentDetail, savingsAccountTransaction.createdDate(), user, accountType); if (savingsAccountTransaction.isDeposit()) { transaction = account.deposit(transactionDTO); } else {