added support for summittedon_date in saving & loan transaction

This commit is contained in:
CieyouRaoul
2014-07-30 12:49:46 +02:00
parent b4c3e8be64
commit 54ad317227
6 changed files with 68 additions and 7 deletions
@@ -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` ;
@@ -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<CodeValueData> 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<CodeValueData> 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<CodeValueData> 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() {
@@ -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<Long> {
@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<Long> {
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<Long> {
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<Long> {
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<Long> {
this.dateOf = date.toDateTimeAtStartOfDay().toDate();
this.externalId = externalId;
this.office = office;
this.submittedOnDate = DateUtils.getDateOfTenant();
}
public void reverse() {
@@ -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);
}
}
@@ -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<CodeValueData> 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<CodeValueData> 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<CodeValueData> 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<CodeValueData> 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;
}
}
@@ -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);
}
}