diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/charge/service/ChargeEnumerations.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/charge/service/ChargeEnumerations.java index 2d360bda6..a35166de6 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/charge/service/ChargeEnumerations.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/charge/service/ChargeEnumerations.java @@ -94,11 +94,11 @@ public class ChargeEnumerations { switch (type) { case ACCOUNT_TRANSFER: optionData = new EnumOptionData(ChargePaymentMode.ACCOUNT_TRANSFER.getValue().longValue(), - ChargePaymentMode.ACCOUNT_TRANSFER.getCode(), ChargePaymentMode.ACCOUNT_TRANSFER.getCode()); + ChargePaymentMode.ACCOUNT_TRANSFER.getCode(), "Account transfer"); break; default: optionData = new EnumOptionData(ChargePaymentMode.REGULAR.getValue().longValue(), ChargePaymentMode.REGULAR.getCode(), - ChargePaymentMode.REGULAR.getCode()); + "Regular"); break; } return optionData; diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/Loan.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/Loan.java index 4acc2c466..2994e228d 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/Loan.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/Loan.java @@ -504,6 +504,9 @@ public class Loan extends AbstractPersistable { private void handleChargePaidTransaction(final LoanCharge charge, final LoanTransaction chargesPayment, final LoanLifecycleStateMachine loanLifecycleStateMachine) { chargesPayment.updateLoan(this); + LoanChargePaidBy loanChargePaidBy = new LoanChargePaidBy(chargesPayment, charge, chargesPayment.getAmount(getCurrency()) + .getAmount()); + chargesPayment.getLoanChargesPaid().add(loanChargePaidBy); this.loanTransactions.add(chargesPayment); final LoanStatus statusEnum = loanLifecycleStateMachine.transition(LoanEvent.LOAN_CHARGE_PAYMENT, LoanStatus.fromInt(this.loanStatus)); @@ -1444,16 +1447,14 @@ public class Loan extends AbstractPersistable { * for repayments at disbursements too? ***/ final Money totalFeeChargesDueAtDisbursement = this.summary.getTotalFeeChargesDueAtDisbursement(loanCurrency()); - if (totalFeeChargesDueAtDisbursement.isGreaterThanZero()) { - - /** + /** * all Charges repaid at disbursal is marked as repaid and * "APPLY Charge" transactions are created for all other fees ( * which are created during disbursal but not repaid) **/ for (final LoanCharge charge : setOfLoanCharges()) { if (charge.isDueAtDisbursement()) { - if (!charge.getChargePaymentMode().isPaymentModeAccountTransfer()) { + if (totalFeeChargesDueAtDisbursement.isGreaterThanZero() && !charge.getChargePaymentMode().isPaymentModeAccountTransfer()) { final LoanTransaction chargesPayment = LoanTransaction.repaymentAtDisbursement(this.getOffice(), charge.getAmount(getCurrency()), null, disbursedOn, txnExternalId); final Money zero = Money.zero(getCurrency()); @@ -1469,7 +1470,6 @@ public class Loan extends AbstractPersistable { } else { handleChargeAppliedTransaction(charge, disbursedOn); } - } } if (getApprovedOnDate() != null && disbursedOn.isBefore(getApprovedOnDate())) { diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/LoanChargePaidBy.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/LoanChargePaidBy.java index 375eaeecd..5da1ae192 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/LoanChargePaidBy.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/LoanChargePaidBy.java @@ -58,17 +58,4 @@ public class LoanChargePaidBy extends AbstractPersistable { public void setAmount(BigDecimal amount) { this.amount = amount; } - - @Override - public boolean equals(Object obj) { - boolean isEqual = false; - LoanChargePaidBy paidBy = (LoanChargePaidBy)obj; - if(this.loanTransaction.getId() == paidBy.loanTransaction.getId() - && this.loanCharge.getId() == paidBy.loanCharge.getId() - && this.amount == paidBy.amount){ - isEqual = true; - } - return isEqual; - } - } diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/transactionprocessor/AbstractLoanRepaymentScheduleTransactionProcessor.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/transactionprocessor/AbstractLoanRepaymentScheduleTransactionProcessor.java index 4ffcd5a53..add759921 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/transactionprocessor/AbstractLoanRepaymentScheduleTransactionProcessor.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/transactionprocessor/AbstractLoanRepaymentScheduleTransactionProcessor.java @@ -219,9 +219,11 @@ public abstract class AbstractLoanRepaymentScheduleTransactionProcessor implemen final LoanCharge unpaidCharge = findEarliestUnpaidChargeFromUnOrderedSet(charges); Money amountPaidTowardsCharge = unpaidCharge.updatePaidAmountBy(amountRemaining); if (!amountPaidTowardsCharge.isZero()) { - LoanChargePaidBy loanChargePaidBy = new LoanChargePaidBy(loanTransaction, loanCharge, - amountPaidTowardsCharge.getAmount()); - loanTransaction.getLoanChargesPaid().add(loanChargePaidBy); + if(!loanTransaction.isChargePayment()){ + LoanChargePaidBy loanChargePaidBy = new LoanChargePaidBy(loanTransaction, loanCharge, + amountPaidTowardsCharge.getAmount()); + loanTransaction.getLoanChargesPaid().add(loanChargePaidBy); + } amountRemaining = amountRemaining.minus(amountPaidTowardsCharge); } } @@ -240,9 +242,11 @@ public abstract class AbstractLoanRepaymentScheduleTransactionProcessor implemen final LoanCharge unpaidCharge = findEarliestUnpaidChargeFromUnOrderedSet(charges); Money amountPaidTowardsCharge = unpaidCharge.updatePaidAmountBy(amountRemaining); if (!amountPaidTowardsCharge.isZero()) { - LoanChargePaidBy loanChargePaidBy = new LoanChargePaidBy(loanTransaction, loanCharge, - amountPaidTowardsCharge.getAmount()); - loanTransaction.getLoanChargesPaid().add(loanChargePaidBy); + if(!loanTransaction.isChargePayment()){ + LoanChargePaidBy loanChargePaidBy = new LoanChargePaidBy(loanTransaction, loanCharge, + amountPaidTowardsCharge.getAmount()); + loanTransaction.getLoanChargesPaid().add(loanChargePaidBy); + } amountRemaining = amountRemaining.minus(amountPaidTowardsCharge); } }