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 89eaccede..ebe11cf51 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 @@ -40,6 +40,8 @@ public class LoanTransactionData { private final AccountTransferData transfer; private final BigDecimal fixedEmiAmount; private final BigDecimal outstandingLoanBalance; + @SuppressWarnings("unused") + private final LocalDate submittedOnDate; // templates final Collection paymentTypeOptions; @@ -70,6 +72,27 @@ public class LoanTransactionData { final BigDecimal penaltyChargesPortion, final BigDecimal overpaymentPortion, final Collection paymentTypeOptions, final String externalId, final AccountTransferData transfer, final BigDecimal fixedEmiAmount, BigDecimal outstandingLoanBalance) { + this(id, officeId, officeName, transactionType, paymentDetailData, currency, date, amount, principalPortion, interestPortion, + feeChargesPortion, penaltyChargesPortion, overpaymentPortion, paymentTypeOptions, externalId, transfer, fixedEmiAmount, + outstandingLoanBalance, 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 String externalId, + final AccountTransferData transfer, BigDecimal fixedEmiAmount, BigDecimal outstandingLoanBalance, LocalDate submittedOnDate) { + this(id, officeId, officeName, transactionType, paymentDetailData, currency, date, amount, principalPortion, interestPortion, + feeChargesPortion, penaltyChargesPortion, overpaymentPortion, null, externalId, transfer, fixedEmiAmount, + outstandingLoanBalance, 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 Collection paymentTypeOptions, final String externalId, final AccountTransferData transfer, + final BigDecimal fixedEmiAmount, BigDecimal outstandingLoanBalance, final LocalDate submittedOnDate) { this.id = id; this.officeId = officeId; this.officeName = officeName; @@ -88,6 +111,7 @@ public class LoanTransactionData { this.overpaymentPortion = overpaymentPortion; this.fixedEmiAmount = fixedEmiAmount; this.outstandingLoanBalance = outstandingLoanBalance; + this.submittedOnDate = 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 d4fda7770..a7e7fc7d8 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; @@ -102,6 +107,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, @@ -221,6 +227,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, @@ -244,6 +251,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, @@ -255,6 +263,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 dac4f822a..9dfe685e7 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 @@ -1065,6 +1065,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.outstanding_loan_balance_derived as outstandingLoanBalance, " + + " 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, " @@ -1119,6 +1120,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"); @@ -1151,7 +1153,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, outstandingLoanBalance); + null, outstandingLoanBalance, 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 3f965dd27..3d73c5bc5 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 @@ -34,6 +34,7 @@ public class SavingsAccountTransactionData { private final BigDecimal runningBalance; private final boolean reversed; private final AccountTransferData transfer; + private final LocalDate submittedOnDate; // templates final Collection paymentTypeOptions; @@ -47,6 +48,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; @@ -73,6 +83,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; @@ -85,6 +106,7 @@ public class SavingsAccountTransactionData { this.reversed = reversed; this.transfer = transfer; this.paymentTypeOptions = paymentTypeOptions; + this.submittedOnDate = submittedOnDate; } public static SavingsAccountTransactionData withWithDrawalTransactionDetails( 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); } }