From 0d2abd3b6001d3d5f7f6cafd779be5a0514930cd Mon Sep 17 00:00:00 2001 From: Pramod Nuthakki Date: Tue, 24 Jun 2014 21:24:47 +0530 Subject: [PATCH] MIFOSX-1341 : added deposit type in savings data --- .../savings/data/SavingsAccountData.java | 84 ++++++++++--------- ...SavingsAccountReadPlatformServiceImpl.java | 42 ++++++---- 2 files changed, 71 insertions(+), 55 deletions(-) diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/data/SavingsAccountData.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/data/SavingsAccountData.java index a9614d51f..85afca2b2 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/data/SavingsAccountData.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/data/SavingsAccountData.java @@ -23,6 +23,7 @@ public class SavingsAccountData { private final Long id; private final String accountNo; + private final EnumOptionData depositType; private final String externalId; private final Long groupId; private final String groupName; @@ -70,14 +71,14 @@ public class SavingsAccountData { @SuppressWarnings("unused") private final SavingsAccountChargeData annualFee; - public static SavingsAccountData instance(final Long id, final String accountNo, final String externalId, final Long groupId, - final String groupName, final Long clientId, final String clientName, final Long productId, final String productName, - final Long fieldOfficerId, final String fieldOfficerName, final SavingsAccountStatusEnumData status, - final SavingsAccountApplicationTimelineData timeline, final CurrencyData currency, final BigDecimal interestRate, - final EnumOptionData interestCompoundingPeriodType, final EnumOptionData interestPostingPeriodType, - final EnumOptionData interestCalculationType, final EnumOptionData interestCalculationDaysInYearType, - final BigDecimal minRequiredOpeningBalance, final Integer lockinPeriodFrequency, - final EnumOptionData lockinPeriodFrequencyType, final boolean withdrawalFeeForTransfers, + public static SavingsAccountData instance(final Long id, final String accountNo, final EnumOptionData depositType, + final String externalId, final Long groupId, final String groupName, final Long clientId, final String clientName, + final Long productId, final String productName, final Long fieldOfficerId, final String fieldOfficerName, + final SavingsAccountStatusEnumData status, final SavingsAccountApplicationTimelineData timeline, final CurrencyData currency, + final BigDecimal interestRate, final EnumOptionData interestCompoundingPeriodType, + final EnumOptionData interestPostingPeriodType, final EnumOptionData interestCalculationType, + final EnumOptionData interestCalculationDaysInYearType, final BigDecimal minRequiredOpeningBalance, + final Integer lockinPeriodFrequency, final EnumOptionData lockinPeriodFrequencyType, final boolean withdrawalFeeForTransfers, final SavingsAccountSummaryData summary, final boolean allowOverdraft, final BigDecimal overdraftLimit) { final Collection productOptions = null; @@ -93,8 +94,8 @@ public class SavingsAccountData { final Collection charges = null; final Collection chargeOptions = null; - return new SavingsAccountData(id, accountNo, externalId, groupId, groupName, clientId, clientName, productId, productName, - fieldOfficerId, fieldOfficerName, status, timeline, currency, interestRate, interestCompoundingPeriodType, + return new SavingsAccountData(id, accountNo, depositType, externalId, groupId, groupName, clientId, clientName, productId, + productName, fieldOfficerId, fieldOfficerName, status, timeline, currency, interestRate, interestCompoundingPeriodType, interestPostingPeriodType, interestCalculationType, interestCalculationDaysInYearType, minRequiredOpeningBalance, lockinPeriodFrequency, lockinPeriodFrequencyType, withdrawalFeeForTransfers, summary, transactions, productOptions, fieldOfficerOptions, interestCompoundingPeriodTypeOptions, interestPostingPeriodTypeOptions, @@ -102,7 +103,7 @@ public class SavingsAccountData { withdrawalFeeTypeOptions, charges, chargeOptions, allowOverdraft, overdraftLimit); } - public static SavingsAccountData lookup(final Long accountId, final String accountNo) { + public static SavingsAccountData lookup(final Long accountId, final String accountNo, final EnumOptionData depositType) { final String externalId = null; final Long productId = null; @@ -148,8 +149,8 @@ public class SavingsAccountData { final Collection charges = null; final Collection chargeOptions = null; - return new SavingsAccountData(accountId, accountNo, externalId, groupId, groupName, clientId, clientName, productId, productName, - fieldOfficerId, fieldOfficerName, status, timeline, currency, nominalAnnualInterestRate, interestPeriodType, + return new SavingsAccountData(accountId, accountNo, depositType, externalId, groupId, groupName, clientId, clientName, productId, + productName, fieldOfficerId, fieldOfficerName, status, timeline, currency, nominalAnnualInterestRate, interestPeriodType, interestPostingPeriodType, interestCalculationType, interestCalculationDaysInYearType, minRequiredOpeningBalance, lockinPeriodFrequency, lockinPeriodFrequencyType, withdrawalFeeForTransfers, summary, transactions, productOptions, fieldOfficerOptions, interestCompoundingPeriodTypeOptions, interestPostingPeriodTypeOptions, @@ -157,8 +158,8 @@ public class SavingsAccountData { withdrawalFeeTypeOptions, charges, chargeOptions, allowOverdraft, overdraftLimit); } - public static SavingsAccountData lookupWithProductDetails(final Long accountId, final String accountNo, final Long productId, - final String productName, final SavingsAccountStatusEnumData status) { + public static SavingsAccountData lookupWithProductDetails(final Long accountId, final String accountNo, + final EnumOptionData depositType, final Long productId, final String productName, final SavingsAccountStatusEnumData status) { final String externalId = null; final Long groupId = null; @@ -201,8 +202,8 @@ public class SavingsAccountData { final Collection charges = null; final Collection chargeOptions = null; - return new SavingsAccountData(accountId, accountNo, externalId, groupId, groupName, clientId, clientName, productId, productName, - fieldOfficerId, fieldOfficerName, status, timeline, currency, nominalAnnualInterestRate, interestPeriodType, + return new SavingsAccountData(accountId, accountNo, depositType, externalId, groupId, groupName, clientId, clientName, productId, + productName, fieldOfficerId, fieldOfficerName, status, timeline, currency, nominalAnnualInterestRate, interestPeriodType, interestPostingPeriodType, interestCalculationType, interestCalculationDaysInYearType, minRequiredOpeningBalance, lockinPeriodFrequency, lockinPeriodFrequencyType, withdrawalFeeForTransfers, summary, transactions, productOptions, fieldOfficerOptions, interestCompoundingPeriodTypeOptions, interestPostingPeriodTypeOptions, @@ -229,13 +230,13 @@ public class SavingsAccountData { lockinPeriodFrequencyTypeOptions, withdrawalFeeTypeOptions, transactions, charges, chargeOptions); } - return new SavingsAccountData(account.id, account.accountNo, account.externalId, account.groupId, account.groupName, - account.clientId, account.clientName, account.savingsProductId, account.savingsProductName, account.fieldOfficerId, - account.fieldOfficerName, account.status, account.timeline, account.currency, account.nominalAnnualInterestRate, - account.interestCompoundingPeriodType, account.interestPostingPeriodType, account.interestCalculationType, - account.interestCalculationDaysInYearType, account.minRequiredOpeningBalance, account.lockinPeriodFrequency, - account.lockinPeriodFrequencyType, account.withdrawalFeeForTransfers, account.summary, transactions, - template.productOptions, template.fieldOfficerOptions, template.interestCompoundingPeriodTypeOptions, + return new SavingsAccountData(account.id, account.accountNo, account.depositType, account.externalId, account.groupId, + account.groupName, account.clientId, account.clientName, account.savingsProductId, account.savingsProductName, + account.fieldOfficerId, account.fieldOfficerName, account.status, account.timeline, account.currency, + account.nominalAnnualInterestRate, account.interestCompoundingPeriodType, account.interestPostingPeriodType, + account.interestCalculationType, account.interestCalculationDaysInYearType, account.minRequiredOpeningBalance, + account.lockinPeriodFrequency, account.lockinPeriodFrequencyType, account.withdrawalFeeForTransfers, account.summary, + transactions, template.productOptions, template.fieldOfficerOptions, template.interestCompoundingPeriodTypeOptions, template.interestPostingPeriodTypeOptions, template.interestCalculationTypeOptions, template.interestCalculationDaysInYearTypeOptions, template.lockinPeriodFrequencyTypeOptions, template.withdrawalFeeTypeOptions, charges, template.chargeOptions, account.allowOverdraft, account.overdraftLimit); @@ -251,13 +252,13 @@ public class SavingsAccountData { final Collection transactions, final Collection charges, final Collection chargeOptions) { - return new SavingsAccountData(account.id, account.accountNo, account.externalId, account.groupId, account.groupName, - account.clientId, account.clientName, account.savingsProductId, account.savingsProductName, account.fieldOfficerId, - account.fieldOfficerName, account.status, account.timeline, account.currency, account.nominalAnnualInterestRate, - account.interestCompoundingPeriodType, account.interestPostingPeriodType, account.interestCalculationType, - account.interestCalculationDaysInYearType, account.minRequiredOpeningBalance, account.lockinPeriodFrequency, - account.lockinPeriodFrequencyType, account.withdrawalFeeForTransfers, account.summary, transactions, productOptions, - fieldOfficerOptions, interestCompoundingPeriodTypeOptions, interestPostingPeriodTypeOptions, + return new SavingsAccountData(account.id, account.accountNo, account.depositType, account.externalId, account.groupId, + account.groupName, account.clientId, account.clientName, account.savingsProductId, account.savingsProductName, + account.fieldOfficerId, account.fieldOfficerName, account.status, account.timeline, account.currency, + account.nominalAnnualInterestRate, account.interestCompoundingPeriodType, account.interestPostingPeriodType, + account.interestCalculationType, account.interestCalculationDaysInYearType, account.minRequiredOpeningBalance, + account.lockinPeriodFrequency, account.lockinPeriodFrequencyType, account.withdrawalFeeForTransfers, account.summary, + transactions, productOptions, fieldOfficerOptions, interestCompoundingPeriodTypeOptions, interestPostingPeriodTypeOptions, interestCalculationTypeOptions, interestCalculationDaysInYearTypeOptions, lockinPeriodFrequencyTypeOptions, withdrawalFeeTypeOptions, charges, chargeOptions, account.allowOverdraft, account.overdraftLimit); } @@ -267,6 +268,7 @@ public class SavingsAccountData { final Long id = null; final String accountNo = null; + final EnumOptionData depositType = null; final String externalId = null; final Long productId = null; final String productName = null; @@ -307,8 +309,8 @@ public class SavingsAccountData { final Collection charges = null; final Collection chargeOptions = null; - return new SavingsAccountData(id, accountNo, externalId, groupId, groupName, clientId, clientName, productId, productName, - fieldOfficerId, fieldOfficerName, status, timeline, currency, nominalAnnualInterestRate, interestPeriodType, + return new SavingsAccountData(id, accountNo, depositType, externalId, groupId, groupName, clientId, clientName, productId, + productName, fieldOfficerId, fieldOfficerName, status, timeline, currency, nominalAnnualInterestRate, interestPeriodType, interestPostingPeriodType, interestCalculationType, interestCalculationDaysInYearType, minRequiredOpeningBalance, lockinPeriodFrequency, lockinPeriodFrequencyType, withdrawalFeeForTransfers, summary, transactions, productOptions, fieldOfficerOptions, interestCompoundingPeriodTypeOptions, interestPostingPeriodTypeOptions, @@ -316,13 +318,14 @@ public class SavingsAccountData { withdrawalFeeTypeOptions, charges, chargeOptions, allowOverdraft, overdraftLimit); } - private SavingsAccountData(final Long id, final String accountNo, final String externalId, final Long groupId, final String groupName, - final Long clientId, final String clientName, final Long productId, final String productName, final Long fieldofficerId, - final String fieldofficerName, final SavingsAccountStatusEnumData status, final SavingsAccountApplicationTimelineData timeline, - final CurrencyData currency, final BigDecimal nominalAnnualInterestRate, final EnumOptionData interestPeriodType, - final EnumOptionData interestPostingPeriodType, final EnumOptionData interestCalculationType, - final EnumOptionData interestCalculationDaysInYearType, final BigDecimal minRequiredOpeningBalance, - final Integer lockinPeriodFrequency, final EnumOptionData lockinPeriodFrequencyType, final boolean withdrawalFeeForTransfers, + private SavingsAccountData(final Long id, final String accountNo, final EnumOptionData depositType, final String externalId, + final Long groupId, final String groupName, final Long clientId, final String clientName, final Long productId, + final String productName, final Long fieldofficerId, final String fieldofficerName, final SavingsAccountStatusEnumData status, + final SavingsAccountApplicationTimelineData timeline, final CurrencyData currency, final BigDecimal nominalAnnualInterestRate, + final EnumOptionData interestPeriodType, final EnumOptionData interestPostingPeriodType, + final EnumOptionData interestCalculationType, final EnumOptionData interestCalculationDaysInYearType, + final BigDecimal minRequiredOpeningBalance, final Integer lockinPeriodFrequency, + final EnumOptionData lockinPeriodFrequencyType, final boolean withdrawalFeeForTransfers, final SavingsAccountSummaryData summary, final Collection transactions, final Collection productOptions, final Collection fieldOfficerOptions, final Collection interestCompoundingPeriodTypeOptions, @@ -334,6 +337,7 @@ public class SavingsAccountData { final BigDecimal overdraftLimit) { this.id = id; this.accountNo = accountNo; + this.depositType = depositType; this.externalId = externalId; this.groupId = groupId; this.groupName = groupName; diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java index 11217704d..08145051d 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java @@ -107,7 +107,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead final Object[] queryParameters = new Object[] { clientId }; return this.jdbcTemplate.query(sqlBuilder.toString(), this.savingAccountMapper, queryParameters); } - + @Override public Collection retrieveActiveForLookup(final Long clientId, DepositAccountType depositAccountType) { @@ -188,6 +188,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead public SavingAccountMapper() { final StringBuilder sqlBuilder = new StringBuilder(400); sqlBuilder.append("sa.id as id, sa.account_no as accountNo, sa.external_id as externalId, "); + sqlBuilder.append("sa.deposit_type_enum as depositType, "); sqlBuilder.append("c.id as clientId, c.display_name as clientName, "); sqlBuilder.append("g.id as groupId, g.display_name as groupName, "); sqlBuilder.append("sp.id as productId, sp.name as productName, "); @@ -275,6 +276,8 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead final Long id = rs.getLong("id"); final String accountNo = rs.getString("accountNo"); final String externalId = rs.getString("externalId"); + final Integer depositTypeId = rs.getInt("depositType"); + final EnumOptionData depositType = SavingsEnumerations.depositType(depositTypeId); final Long groupId = JdbcSupport.getLong(rs, "groupId"); final String groupName = rs.getString("groupName"); @@ -408,10 +411,11 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead totalWithdrawalFees, totalAnnualFees, totalInterestEarned, totalInterestPosted, accountBalance, totalFeeCharge, totalPenaltyCharge); - return SavingsAccountData.instance(id, accountNo, externalId, groupId, groupName, clientId, clientName, productId, productName, - fieldOfficerId, fieldOfficerName, status, timeline, currency, nominalAnnualInterestRate, interestCompoundingPeriodType, - interestPostingPeriodType, interestCalculationType, interestCalculationDaysInYearType, minRequiredOpeningBalance, - lockinPeriodFrequency, lockinPeriodFrequencyType, withdrawalFeeForTransfers, summary, allowOverdraft, overdraftLimit); + return SavingsAccountData.instance(id, accountNo, depositType, externalId, groupId, groupName, clientId, clientName, productId, + productName, fieldOfficerId, fieldOfficerName, status, timeline, currency, nominalAnnualInterestRate, + interestCompoundingPeriodType, interestPostingPeriodType, interestCalculationType, interestCalculationDaysInYearType, + minRequiredOpeningBalance, lockinPeriodFrequency, lockinPeriodFrequencyType, withdrawalFeeForTransfers, summary, + allowOverdraft, overdraftLimit); } } @@ -422,6 +426,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead public SavingAccountMapperForLookup() { final StringBuilder sqlBuilder = new StringBuilder(400); sqlBuilder.append("sa.id as id, sa.account_no as accountNo, "); + sqlBuilder.append("sa.deposit_type_enum as depositType, "); sqlBuilder.append("sp.id as productId, sp.name as productName, "); sqlBuilder.append("sa.status_enum as statusEnum "); @@ -440,6 +445,8 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead final Long id = rs.getLong("id"); final String accountNo = rs.getString("accountNo"); + final Integer depositTypeId = rs.getInt("depositType"); + final EnumOptionData depositType = SavingsEnumerations.depositType(depositTypeId); final Long productId = rs.getLong("productId"); final String productName = rs.getString("productName"); @@ -447,7 +454,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead final Integer statusEnum = JdbcSupport.getInteger(rs, "statusEnum"); final SavingsAccountStatusEnumData status = SavingsEnumerations.status(statusEnum); - return SavingsAccountData.lookupWithProductDetails(id, accountNo, productId, productName, status); + return SavingsAccountData.lookupWithProductDetails(id, accountNo, depositType, productId, productName, status); } } @@ -583,12 +590,14 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead } @Override - public SavingsAccountTransactionData retrieveDepositTransactionTemplate(final Long savingsId, final DepositAccountType depositAccountType) { + public SavingsAccountTransactionData retrieveDepositTransactionTemplate(final Long savingsId, + final DepositAccountType depositAccountType) { try { final String sql = "select " + this.transactionTemplateMapper.schema() + " where sa.id = ? and sa.deposit_type_enum = ?"; - return this.jdbcTemplate.queryForObject(sql, this.transactionTemplateMapper, new Object[] { savingsId, depositAccountType.getValue()}); + return this.jdbcTemplate.queryForObject(sql, this.transactionTemplateMapper, + new Object[] { savingsId, depositAccountType.getValue() }); } catch (final EmptyResultDataAccessException e) { throw new SavingsAccountNotFoundException(savingsId); } @@ -604,11 +613,13 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead } @Override - public SavingsAccountTransactionData retrieveSavingsTransaction(final Long savingsId, final Long transactionId, DepositAccountType depositAccountType) { + public SavingsAccountTransactionData retrieveSavingsTransaction(final Long savingsId, final Long transactionId, + DepositAccountType depositAccountType) { final String sql = "select " + this.transactionsMapper.schema() + " where sa.id = ? and sa.deposit_type_enum = ? and tr.id= ?"; - return this.jdbcTemplate.queryForObject(sql, this.transactionsMapper, new Object[] { savingsId, depositAccountType.getValue(), transactionId }); + return this.jdbcTemplate.queryForObject(sql, this.transactionsMapper, new Object[] { savingsId, depositAccountType.getValue(), + transactionId }); } /* @@ -900,11 +911,12 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead final SavingsAccountSummaryData summary = null; final SavingsAccountApplicationTimelineData timeline = SavingsAccountApplicationTimelineData.templateDefault(); - - return SavingsAccountData.instance(null, null, null, groupId, groupName, clientId, clientName, productId, productName, - fieldOfficerId, fieldOfficerName, status, timeline, currency, nominalAnnualIterestRate, interestCompoundingPeriodType, - interestPostingPeriodType, interestCalculationType, interestCalculationDaysInYearType, minRequiredOpeningBalance, - lockinPeriodFrequency, lockinPeriodFrequencyType, withdrawalFeeForTransfers, summary, allowOverdraft, overdraftLimit); + final EnumOptionData depositType = null; + return SavingsAccountData.instance(null, null, depositType, null, groupId, groupName, clientId, clientName, productId, + productName, fieldOfficerId, fieldOfficerName, status, timeline, currency, nominalAnnualIterestRate, + interestCompoundingPeriodType, interestPostingPeriodType, interestCalculationType, interestCalculationDaysInYearType, + minRequiredOpeningBalance, lockinPeriodFrequency, lockinPeriodFrequencyType, withdrawalFeeForTransfers, summary, + allowOverdraft, overdraftLimit); } }