From 54ad31722711e7ced09071eed32f6abe89b4bf7a Mon Sep 17 00:00:00 2001 From: CieyouRaoul Date: Wed, 30 Jul 2014 12:49:46 +0200 Subject: [PATCH] added support for summittedon_date in saving & loan transaction --- ...__added_subbmittedDate_laontransaction.sql | 3 ++ .../loanaccount/data/LoanTransactionData.java | 33 ++++++++++++++++--- .../loanaccount/domain/LoanTransaction.java | 9 +++++ .../service/LoanReadPlatformServiceImpl.java | 4 ++- .../data/SavingsAccountTransactionData.java | 22 +++++++++++++ ...SavingsAccountReadPlatformServiceImpl.java | 4 ++- 6 files changed, 68 insertions(+), 7 deletions(-) create mode 100644 mifosng-db/migrations/core_db/V168_2__added_subbmittedDate_laontransaction.sql diff --git a/mifosng-db/migrations/core_db/V168_2__added_subbmittedDate_laontransaction.sql b/mifosng-db/migrations/core_db/V168_2__added_subbmittedDate_laontransaction.sql new file mode 100644 index 000000000..fca29d86d --- /dev/null +++ b/mifosng-db/migrations/core_db/V168_2__added_subbmittedDate_laontransaction.sql @@ -0,0 +1,3 @@ +ALTER TABLE `m_loan_transaction` ADD `submitted_on_date` DATE NOT NULL; + +UPDATE `m_loan_transaction` SET `submitted_on_date`= `transaction_date` ; diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/data/LoanTransactionData.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/data/LoanTransactionData.java index bcfad68e6..797e27ff1 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/data/LoanTransactionData.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/data/LoanTransactionData.java @@ -12,6 +12,7 @@ import org.joda.time.LocalDate; import org.mifosplatform.infrastructure.codes.data.CodeValueData; import org.mifosplatform.organisation.monetary.data.CurrencyData; import org.mifosplatform.portfolio.account.data.AccountTransferData; +import org.mifosplatform.portfolio.loanaccount.domain.LoanTransaction; import org.mifosplatform.portfolio.paymentdetail.data.PaymentDetailData; /** @@ -26,6 +27,7 @@ public class LoanTransactionData { private final LoanTransactionEnumData type; private final LocalDate date; + private final LocalDate submittedOnDate; private final CurrencyData currency; private final PaymentDetailData paymentDetailData; @@ -62,11 +64,22 @@ public class LoanTransactionData { } public LoanTransactionData(final Long id, final Long officeId, final String officeName, final LoanTransactionEnumData transactionType, - final PaymentDetailData paymentDetailData, final CurrencyData currency, final LocalDate date, final BigDecimal amount, - final BigDecimal principalPortion, final BigDecimal interestPortion, final BigDecimal feeChargesPortion, - final BigDecimal penaltyChargesPortion, final BigDecimal overpaymentPortion, - final Collection paymentTypeOptions, final String externalId, final AccountTransferData transfer, - final BigDecimal fixedEmiAmount) { + final PaymentDetailData paymentDetailData, final CurrencyData currency, final LocalDate date, final BigDecimal amount, + final BigDecimal principalPortion, final BigDecimal interestPortion, final BigDecimal feeChargesPortion, + final BigDecimal penaltyChargesPortion, final BigDecimal overpaymentPortion, + final Collection paymentTypeOptions, final String externalId, final AccountTransferData transfer, + final BigDecimal fixedEmiAmount) { + + this(id, officeId, officeName, transactionType, paymentDetailData, currency, date, amount, principalPortion, interestPortion, + feeChargesPortion, penaltyChargesPortion, overpaymentPortion, null, externalId, transfer, fixedEmiAmount,null); + } + + public LoanTransactionData(final Long id, final Long officeId, final String officeName, final LoanTransactionEnumData transactionType, + final PaymentDetailData paymentDetailData, final CurrencyData currency, final LocalDate date, final BigDecimal amount, + final BigDecimal principalPortion, final BigDecimal interestPortion, final BigDecimal feeChargesPortion, + final BigDecimal penaltyChargesPortion, final BigDecimal overpaymentPortion, + final Collection paymentTypeOptions, final String externalId, final AccountTransferData transfer, + final BigDecimal fixedEmiAmount,final LocalDate submittedOnDate) { this.id = id; this.officeId = officeId; this.officeName = officeName; @@ -84,6 +97,16 @@ public class LoanTransactionData { this.transfer = transfer; this.overpaymentPortion = overpaymentPortion; this.fixedEmiAmount = fixedEmiAmount; + this.submittedOnDate = submittedOnDate; + } + + public LoanTransactionData(final Long id, final Long officeId, final String officeName, final LoanTransactionEnumData transactionType, + final PaymentDetailData paymentDetailData, final CurrencyData currency, final LocalDate date, final BigDecimal amount, + final BigDecimal principalPortion, final BigDecimal interestPortion, final BigDecimal feeChargesPortion, + final BigDecimal penaltyChargesPortion, final BigDecimal overpaymentPortion, final String externalId, + final AccountTransferData transfer, BigDecimal fixedEmiAmount,LocalDate submittedOnDate) { + this(id, officeId, officeName, transactionType, paymentDetailData, currency, date, amount, principalPortion, interestPortion, + feeChargesPortion, penaltyChargesPortion, overpaymentPortion, null, externalId, transfer, fixedEmiAmount,submittedOnDate); } public LocalDate dateOf() { diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/LoanTransaction.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/LoanTransaction.java index 766f0cab0..0b8761a69 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/LoanTransaction.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/LoanTransaction.java @@ -28,6 +28,7 @@ import javax.persistence.UniqueConstraint; import org.hibernate.annotations.LazyCollection; import org.hibernate.annotations.LazyCollectionOption; import org.joda.time.LocalDate; +import org.mifosplatform.infrastructure.core.service.DateUtils; import org.mifosplatform.organisation.monetary.data.CurrencyData; import org.mifosplatform.organisation.monetary.domain.MonetaryCurrency; import org.mifosplatform.organisation.monetary.domain.Money; @@ -67,6 +68,10 @@ public final class LoanTransaction extends AbstractPersistable { @Column(name = "transaction_date", nullable = false) private final Date dateOf; + @Temporal(TemporalType.DATE) + @Column(name = "submitted_on_date", nullable = false) + private final Date submittedOnDate; + @Column(name = "amount", scale = 6, precision = 19, nullable = false) private BigDecimal amount; @@ -99,6 +104,7 @@ public final class LoanTransaction extends AbstractPersistable { this.loan = null; this.dateOf = null; this.typeOf = null; + this.submittedOnDate = DateUtils.getDateOfTenant(); } public static LoanTransaction disbursement(final Office office, final Money amount, final PaymentDetail paymentDetail, @@ -218,6 +224,7 @@ public final class LoanTransaction extends AbstractPersistable { this.paymentDetail = paymentDetail; this.office = office; this.externalId = externalId; + this.submittedOnDate = DateUtils.getDateOfTenant(); } public static LoanTransaction waiveLoanCharge(final Loan loan, final Office office, final Money waived, final LocalDate waiveDate, @@ -241,6 +248,7 @@ public final class LoanTransaction extends AbstractPersistable { this.dateOf = date.toDateTimeAtStartOfDay().toDate(); this.externalId = externalId; this.office = office; + this.submittedOnDate = DateUtils.getDateOfTenant(); } private LoanTransaction(final Loan loan, final Office office, final LoanTransactionType type, final PaymentDetail paymentDetail, @@ -252,6 +260,7 @@ public final class LoanTransaction extends AbstractPersistable { this.dateOf = date.toDateTimeAtStartOfDay().toDate(); this.externalId = externalId; this.office = office; + this.submittedOnDate = DateUtils.getDateOfTenant(); } public void reverse() { diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java index 2ba837de1..542a8a20b 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java @@ -975,6 +975,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { + " tr.principal_portion_derived as principal, tr.interest_portion_derived as interest, " + " tr.fee_charges_portion_derived as fees, tr.penalty_charges_portion_derived as penalties, " + " tr.overpayment_portion_derived as overpayment, " + + " tr.submitted_on_date as submittedOnDate, " + " pd.payment_type_cv_id as paymentType,pd.account_number as accountNumber,pd.check_number as checkNumber, " + " pd.receipt_number as receiptNumber, pd.bank_number as bankNumber,pd.routing_code as routingCode, " + " l.currency_code as currencyCode, l.currency_digits as currencyDigits, l.currency_multiplesof as inMultiplesOf, rc.`name` as currencyName, " @@ -1029,6 +1030,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { } } final LocalDate date = JdbcSupport.getLocalDate(rs, "date"); + final LocalDate submittedOnDate = JdbcSupport.getLocalDate(rs, "submittedOnDate"); final BigDecimal totalAmount = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "total"); final BigDecimal principalPortion = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "principal"); final BigDecimal interestPortion = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "interest"); @@ -1060,7 +1062,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { return new LoanTransactionData(id, officeId, officeName, transactionType, paymentDetailData, currencyData, date, totalAmount, principalPortion, interestPortion, feeChargesPortion, penaltyChargesPortion, overPaymentPortion, externalId, transfer, - null); + null,submittedOnDate); } } diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/data/SavingsAccountTransactionData.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/data/SavingsAccountTransactionData.java index 9dfce4890..f51a45321 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/data/SavingsAccountTransactionData.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/data/SavingsAccountTransactionData.java @@ -31,6 +31,7 @@ public class SavingsAccountTransactionData { private final BigDecimal runningBalance; private final boolean reversed; private final AccountTransferData transfer; + private final LocalDate submittedOnDate; // templates final Collection paymentTypeOptions; @@ -44,6 +45,15 @@ public class SavingsAccountTransactionData { amount, runningBalance, reversed, transfer, paymentTypeOptions); } + public static SavingsAccountTransactionData create(final Long id, final SavingsAccountTransactionEnumData transactionType, + final PaymentDetailData paymentDetailData, final Long savingsId, final String savingsAccountNo, final LocalDate date, + final CurrencyData currency, final BigDecimal amount, final BigDecimal runningBalance, final boolean reversed, + final AccountTransferData transfer,final LocalDate submittedOnDate) { + final Collection paymentTypeOptions = null; + return new SavingsAccountTransactionData(id, transactionType, paymentDetailData, savingsId, savingsAccountNo, date, currency, + amount, runningBalance, reversed, transfer, paymentTypeOptions,submittedOnDate); + } + public static SavingsAccountTransactionData template(final Long savingsId, final String savingsAccountNo, final LocalDate defaultLocalDate, final CurrencyData currency) { final Long id = null; @@ -70,6 +80,17 @@ public class SavingsAccountTransactionData { final PaymentDetailData paymentDetailData, final Long savingsId, final String savingsAccountNo, final LocalDate date, final CurrencyData currency, final BigDecimal amount, final BigDecimal runningBalance, final boolean reversed, final AccountTransferData transfer, final Collection paymentTypeOptions) { + + this(id,transactionType,paymentDetailData,savingsId, savingsAccountNo,date, + currency,amount,runningBalance, reversed, + transfer, paymentTypeOptions,null); + + } + + private SavingsAccountTransactionData(final Long id, final SavingsAccountTransactionEnumData transactionType, + final PaymentDetailData paymentDetailData, final Long savingsId, final String savingsAccountNo, final LocalDate date, + final CurrencyData currency, final BigDecimal amount, final BigDecimal runningBalance, final boolean reversed, + final AccountTransferData transfer, final Collection paymentTypeOptions,final LocalDate submittedOnDate) { this.id = id; this.transactionType = transactionType; this.paymentDetailData = paymentDetailData; @@ -82,5 +103,6 @@ public class SavingsAccountTransactionData { this.reversed = reversed; this.transfer = transfer; this.paymentTypeOptions = paymentTypeOptions; + this.submittedOnDate = submittedOnDate; } } \ No newline at end of file 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 d118fc565..d78054c42 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 @@ -650,6 +650,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead final StringBuilder sqlBuilder = new StringBuilder(400); sqlBuilder.append("tr.id as transactionId, tr.transaction_type_enum as transactionType, "); sqlBuilder.append("tr.transaction_date as transactionDate, tr.amount as transactionAmount,"); + sqlBuilder.append("tr.created_date as submittedOnDate,"); sqlBuilder.append("tr.running_balance_derived as runningBalance, tr.is_reversed as reversed,"); sqlBuilder.append("fromtran.id as fromTransferId, fromtran.is_reversed as fromTransferReversed,"); sqlBuilder.append("fromtran.transaction_date as fromTransferDate, fromtran.amount as fromTransferAmount,"); @@ -687,6 +688,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead final SavingsAccountTransactionEnumData transactionType = SavingsEnumerations.transactionType(transactionTypeInt); final LocalDate date = JdbcSupport.getLocalDate(rs, "transactionDate"); + final LocalDate submittedOnDate = JdbcSupport.getLocalDate(rs, "submittedOnDate"); final BigDecimal amount = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "transactionAmount"); final BigDecimal runningBalance = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "runningBalance"); final boolean reversed = rs.getBoolean("reversed"); @@ -741,7 +743,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead } return SavingsAccountTransactionData.create(id, transactionType, paymentDetailData, savingsId, accountNo, date, currency, - amount, runningBalance, reversed, transfer); + amount, runningBalance, reversed, transfer,submittedOnDate); } }