FINERACT-89 : 1st tranche will appear twice in repayment schedule when disbursement date and first repayment date is on same date
This commit is contained in:
+22
-17
@@ -92,7 +92,6 @@ import org.apache.fineract.portfolio.loanaccount.data.ScheduleGeneratorDTO;
|
|||||||
import org.apache.fineract.portfolio.loanaccount.domain.Loan;
|
import org.apache.fineract.portfolio.loanaccount.domain.Loan;
|
||||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment;
|
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment;
|
||||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleTransactionProcessorFactory;
|
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleTransactionProcessorFactory;
|
||||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository;
|
|
||||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepositoryWrapper;
|
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepositoryWrapper;
|
||||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanStatus;
|
import org.apache.fineract.portfolio.loanaccount.domain.LoanStatus;
|
||||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanSubStatus;
|
import org.apache.fineract.portfolio.loanaccount.domain.LoanSubStatus;
|
||||||
@@ -1065,30 +1064,36 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
|||||||
final boolean complete = rs.getBoolean("complete");
|
final boolean complete = rs.getBoolean("complete");
|
||||||
if (disbursementData != null) {
|
if (disbursementData != null) {
|
||||||
BigDecimal principal = BigDecimal.ZERO;
|
BigDecimal principal = BigDecimal.ZERO;
|
||||||
for (DisbursementData data : disbursementData) {
|
for (final DisbursementData data : disbursementData) {
|
||||||
if (fromDate.equals(this.disbursement.disbursementDate()) && data.disbursementDate().equals(fromDate)) {
|
if (fromDate.equals(this.disbursement.disbursementDate()) && data.disbursementDate().equals(fromDate)) {
|
||||||
principal = principal.add(data.amount());
|
if (periods.size() == 0) {
|
||||||
if (data.getChargeAmount() == null) {
|
principal = principal.add(data.amount());
|
||||||
final LoanSchedulePeriodData periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(
|
LoanSchedulePeriodData periodData = null;
|
||||||
data.disbursementDate(), data.amount(), disbursementChargeAmount, data.isDisbursed());
|
if (data.getChargeAmount() == null) {
|
||||||
periods.add(periodData);
|
periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(data.disbursementDate(), data.amount(),
|
||||||
} else {
|
disbursementChargeAmount, data.isDisbursed());
|
||||||
final LoanSchedulePeriodData periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(
|
} else {
|
||||||
data.disbursementDate(), data.amount(), disbursementChargeAmount.add(data.getChargeAmount()), data.isDisbursed());
|
periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(data.disbursementDate(), data.amount(),
|
||||||
periods.add(periodData);
|
disbursementChargeAmount.add(data.getChargeAmount()), data.isDisbursed());
|
||||||
|
}
|
||||||
|
if (periodData != null) {
|
||||||
|
periods.add(periodData);
|
||||||
|
}
|
||||||
|
this.outstandingLoanPrincipalBalance = this.outstandingLoanPrincipalBalance.add(data.amount());
|
||||||
}
|
}
|
||||||
this.outstandingLoanPrincipalBalance = this.outstandingLoanPrincipalBalance.add(data.amount());
|
|
||||||
} else if (data.isDueForDisbursement(fromDate, dueDate)) {
|
} else if (data.isDueForDisbursement(fromDate, dueDate)) {
|
||||||
if (!excludePastUndisbursed
|
if (!excludePastUndisbursed
|
||||||
|| (excludePastUndisbursed && (data.isDisbursed() || !data.disbursementDate().isBefore(LocalDate.now())))) {
|
|| (excludePastUndisbursed && (data.isDisbursed() || !data.disbursementDate().isBefore(LocalDate.now())))) {
|
||||||
principal = principal.add(data.amount());
|
principal = principal.add(data.amount());
|
||||||
|
LoanSchedulePeriodData periodData = null;
|
||||||
if (data.getChargeAmount() == null) {
|
if (data.getChargeAmount() == null) {
|
||||||
final LoanSchedulePeriodData periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(
|
periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(data.disbursementDate(), data.amount(),
|
||||||
data.disbursementDate(), data.amount(), BigDecimal.ZERO, data.isDisbursed());
|
BigDecimal.ZERO, data.isDisbursed());
|
||||||
periods.add(periodData);
|
|
||||||
} else {
|
} else {
|
||||||
final LoanSchedulePeriodData periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(
|
periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(data.disbursementDate(), data.amount(),
|
||||||
data.disbursementDate(), data.amount(), data.getChargeAmount(), data.isDisbursed());
|
data.getChargeAmount(), data.isDisbursed());
|
||||||
|
}
|
||||||
|
if (periodData != null) {
|
||||||
periods.add(periodData);
|
periods.add(periodData);
|
||||||
}
|
}
|
||||||
this.outstandingLoanPrincipalBalance = this.outstandingLoanPrincipalBalance.add(data.amount());
|
this.outstandingLoanPrincipalBalance = this.outstandingLoanPrincipalBalance.add(data.amount());
|
||||||
|
|||||||
Reference in New Issue
Block a user