FINERACT-360 : Individual Collection Sheet is not considering Installment Fee during payment

This commit is contained in:
nazeer1100126
2017-03-27 15:36:42 +05:30
parent f59dacbfc8
commit 254d259705
4 changed files with 57 additions and 11 deletions
@@ -42,11 +42,14 @@ public class IndividualCollectionSheetLoanFlatData {
private BigDecimal interestDue = BigDecimal.ZERO; private BigDecimal interestDue = BigDecimal.ZERO;
private BigDecimal interestPaid = BigDecimal.ZERO; private BigDecimal interestPaid = BigDecimal.ZERO;
private BigDecimal chargesDue = BigDecimal.ZERO; private BigDecimal chargesDue = BigDecimal.ZERO;
private BigDecimal feeDue = BigDecimal.ZERO;
private BigDecimal feePaid = BigDecimal.ZERO;
public IndividualCollectionSheetLoanFlatData(final String clientName, final Long clientId, final Long loanId, final String accountId, public IndividualCollectionSheetLoanFlatData(final String clientName, final Long clientId, final Long loanId, final String accountId,
final Integer accountStatusId, final String productShortName, final Long productId, final CurrencyData currency, final Integer accountStatusId, final String productShortName, final Long productId, final CurrencyData currency,
final BigDecimal disbursementAmount, final BigDecimal principalDue, final BigDecimal principalPaid, final BigDecimal disbursementAmount, final BigDecimal principalDue, final BigDecimal principalPaid,
final BigDecimal interestDue, final BigDecimal interestPaid, final BigDecimal chargesDue) { final BigDecimal interestDue, final BigDecimal interestPaid, final BigDecimal chargesDue, final BigDecimal feeDue,
final BigDecimal feePaid) {
this.clientName = clientName; this.clientName = clientName;
this.clientId = clientId; this.clientId = clientId;
this.loanId = loanId; this.loanId = loanId;
@@ -61,6 +64,8 @@ public class IndividualCollectionSheetLoanFlatData {
this.interestDue = interestDue; this.interestDue = interestDue;
this.interestPaid = interestPaid; this.interestPaid = interestPaid;
this.chargesDue = chargesDue; this.chargesDue = chargesDue;
this.feeDue = feeDue;
this.feePaid = feePaid;
} }
public String getClientName() { public String getClientName() {
@@ -121,11 +126,20 @@ public class IndividualCollectionSheetLoanFlatData {
public LoanDueData getLoanDueData() { public LoanDueData getLoanDueData() {
return new LoanDueData(this.loanId, this.accountId, this.accountStatusId, this.productShortName, this.productId, this.currency, return new LoanDueData(this.loanId, this.accountId, this.accountStatusId, this.productShortName, this.productId, this.currency,
this.disbursementAmount, this.principalDue, this.principalPaid, this.interestDue, this.interestPaid, this.chargesDue); this.disbursementAmount, this.principalDue, this.principalPaid, this.interestDue, this.interestPaid, this.chargesDue,
this.feeDue, this.feePaid);
} }
public IndividualClientData getClientData() { public IndividualClientData getClientData() {
return IndividualClientData.instance(this.clientId, this.clientName); return IndividualClientData.instance(this.clientId, this.clientName);
} }
public BigDecimal getFeeDue() {
return this.feeDue;
}
public BigDecimal getFeePaid() {
return this.feePaid;
}
} }
@@ -50,13 +50,15 @@ public class JLGCollectionSheetFlatData {
private BigDecimal interestPaid = BigDecimal.ZERO; private BigDecimal interestPaid = BigDecimal.ZERO;
private BigDecimal chargesDue = BigDecimal.ZERO; private BigDecimal chargesDue = BigDecimal.ZERO;
private final EnumOptionData attendanceType; private final EnumOptionData attendanceType;
private BigDecimal feeDue = BigDecimal.ZERO;
private BigDecimal feePaid = BigDecimal.ZERO;
public JLGCollectionSheetFlatData(final String groupName, final Long groupId, final Long staffId, final String staffName, public JLGCollectionSheetFlatData(final String groupName, final Long groupId, final Long staffId, final String staffName,
final Long levelId, final String levelName, final String clientName, final Long clientId, final Long loanId, final Long levelId, final String levelName, final String clientName, final Long clientId, final Long loanId,
final String accountId, final Integer accountStatusId, final String productShortName, final Long productId, final String accountId, final Integer accountStatusId, final String productShortName, final Long productId,
final CurrencyData currency, final BigDecimal disbursementAmount, final BigDecimal principalDue, final CurrencyData currency, final BigDecimal disbursementAmount, final BigDecimal principalDue,
final BigDecimal principalPaid, final BigDecimal interestDue, final BigDecimal interestPaid, final BigDecimal chargesDue, final BigDecimal principalPaid, final BigDecimal interestDue, final BigDecimal interestPaid, final BigDecimal chargesDue,
final EnumOptionData attendanceType) { final EnumOptionData attendanceType, final BigDecimal feeDue, final BigDecimal feePaid) {
this.groupName = groupName; this.groupName = groupName;
this.groupId = groupId; this.groupId = groupId;
this.staffId = staffId; this.staffId = staffId;
@@ -78,6 +80,8 @@ public class JLGCollectionSheetFlatData {
this.interestPaid = interestPaid; this.interestPaid = interestPaid;
this.chargesDue = chargesDue; this.chargesDue = chargesDue;
this.attendanceType = attendanceType; this.attendanceType = attendanceType;
this.feeDue = feeDue;
this.feePaid = feePaid;
} }
public String getGroupName() { public String getGroupName() {
@@ -162,7 +166,8 @@ public class JLGCollectionSheetFlatData {
public LoanDueData getLoanDueData() { public LoanDueData getLoanDueData() {
return new LoanDueData(this.loanId, this.accountId, this.accountStatusId, this.productShortName, this.productId, this.currency, return new LoanDueData(this.loanId, this.accountId, this.accountStatusId, this.productShortName, this.productId, this.currency,
this.disbursementAmount, this.principalDue, this.principalPaid, this.interestDue, this.interestPaid, this.chargesDue); this.disbursementAmount, this.principalDue, this.principalPaid, this.interestDue, this.interestPaid, this.chargesDue,
this.feeDue, this.feePaid);
} }
public JLGClientData getClientData() { public JLGClientData getClientData() {
@@ -174,4 +179,11 @@ public class JLGCollectionSheetFlatData {
return JLGGroupData.instance(this.groupId, this.groupName, this.staffId, this.staffName, this.levelId, this.levelName); return JLGGroupData.instance(this.groupId, this.groupName, this.staffId, this.staffName, this.levelId, this.levelName);
} }
public BigDecimal getFeeDue() {
return this.feeDue;
}
public BigDecimal getFeePaid() {
return this.feePaid;
}
} }
@@ -41,10 +41,13 @@ public class LoanDueData {
private BigDecimal interestPaid = BigDecimal.ZERO; private BigDecimal interestPaid = BigDecimal.ZERO;
private BigDecimal chargesDue = BigDecimal.ZERO; private BigDecimal chargesDue = BigDecimal.ZERO;
private BigDecimal totalDue = BigDecimal.ZERO; private BigDecimal totalDue = BigDecimal.ZERO;
private BigDecimal feeDue = BigDecimal.ZERO;
private BigDecimal feePaid = BigDecimal.ZERO;
public LoanDueData(final Long loanId, final String accountId, final Integer accountStatusId, final String productShortName, public LoanDueData(final Long loanId, final String accountId, final Integer accountStatusId, final String productShortName,
final Long productId, final CurrencyData currency, final BigDecimal disbursementAmount, final BigDecimal principalDue, final Long productId, final CurrencyData currency, final BigDecimal disbursementAmount, final BigDecimal principalDue,
final BigDecimal principalPaid, final BigDecimal interestDue, final BigDecimal interestPaid, final BigDecimal chargesDue) { final BigDecimal principalPaid, final BigDecimal interestDue, final BigDecimal interestPaid, final BigDecimal chargesDue,
final BigDecimal feeDue, final BigDecimal feePaid) {
this.loanId = loanId; this.loanId = loanId;
this.accountId = accountId; this.accountId = accountId;
this.accountStatusId = accountStatusId; this.accountStatusId = accountStatusId;
@@ -57,7 +60,9 @@ public class LoanDueData {
this.interestDue = interestDue; this.interestDue = interestDue;
this.interestPaid = interestPaid; this.interestPaid = interestPaid;
this.chargesDue = chargesDue; this.chargesDue = chargesDue;
this.totalDue = this.totalDue.add(principalDue).add(interestDue); this.feeDue = feeDue;
this.feePaid = feePaid;
this.totalDue = this.totalDue.add(principalDue).add(interestDue).add(feeDue);
} }
public Long getLoanId() { public Long getLoanId() {
@@ -107,5 +112,13 @@ public class LoanDueData {
public BigDecimal getChargesDue() { public BigDecimal getChargesDue() {
return this.chargesDue; return this.chargesDue;
} }
public BigDecimal getFeeDue() {
return this.feeDue;
}
public BigDecimal getFeePaid() {
return this.feePaid;
}
} }
@@ -34,7 +34,6 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import org.apache.fineract.infrastructure.codes.data.CodeValueData;
import org.apache.fineract.infrastructure.codes.service.CodeValueReadPlatformService; import org.apache.fineract.infrastructure.codes.service.CodeValueReadPlatformService;
import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService;
import org.apache.fineract.infrastructure.core.api.JsonQuery; import org.apache.fineract.infrastructure.core.api.JsonQuery;
@@ -66,7 +65,6 @@ import org.apache.fineract.portfolio.group.service.GroupReadPlatformService;
import org.apache.fineract.portfolio.loanproduct.data.LoanProductData; import org.apache.fineract.portfolio.loanproduct.data.LoanProductData;
import org.apache.fineract.portfolio.meeting.attendance.service.AttendanceDropdownReadPlatformService; import org.apache.fineract.portfolio.meeting.attendance.service.AttendanceDropdownReadPlatformService;
import org.apache.fineract.portfolio.meeting.attendance.service.AttendanceEnumerations; import org.apache.fineract.portfolio.meeting.attendance.service.AttendanceEnumerations;
import org.apache.fineract.portfolio.paymentdetail.PaymentDetailConstants;
import org.apache.fineract.portfolio.paymenttype.data.PaymentTypeData; import org.apache.fineract.portfolio.paymenttype.data.PaymentTypeData;
import org.apache.fineract.portfolio.paymenttype.service.PaymentTypeReadPlatformService; import org.apache.fineract.portfolio.paymenttype.service.PaymentTypeReadPlatformService;
import org.apache.fineract.portfolio.savings.data.SavingsProductData; import org.apache.fineract.portfolio.savings.data.SavingsProductData;
@@ -239,6 +237,8 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe
.append("ln.principal_repaid_derived As principalPaid, ") .append("ln.principal_repaid_derived As principalPaid, ")
.append("sum(ifnull(if(ln.loan_status_id = 300, ls.interest_amount, 0.0), 0.0) - ifnull(if(ln.loan_status_id = 300, ls.interest_completed_derived, 0.0), 0.0)) As interestDue, ") .append("sum(ifnull(if(ln.loan_status_id = 300, ls.interest_amount, 0.0), 0.0) - ifnull(if(ln.loan_status_id = 300, ls.interest_completed_derived, 0.0), 0.0)) As interestDue, ")
.append("ln.interest_repaid_derived As interestPaid, ") .append("ln.interest_repaid_derived As interestPaid, ")
.append("sum(ifnull(if(ln.loan_status_id = 300, ls.fee_charges_amount, 0.0), 0.0) - ifnull(if(ln.loan_status_id = 300, ls.fee_charges_completed_derived, 0.0), 0.0)) As feeDue, ")
.append("ln.fee_charges_repaid_derived As feePaid, ")
.append("ca.attendance_type_enum as attendanceTypeId ") .append("ca.attendance_type_enum as attendanceTypeId ")
.append("FROM m_group gp ") .append("FROM m_group gp ")
.append("LEFT JOIN m_office of ON of.id = gp.office_id AND of.hierarchy like :officeHierarchy ") .append("LEFT JOIN m_office of ON of.id = gp.office_id AND of.hierarchy like :officeHierarchy ")
@@ -308,13 +308,15 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe
final BigDecimal interestDue = rs.getBigDecimal("interestDue"); final BigDecimal interestDue = rs.getBigDecimal("interestDue");
final BigDecimal interestPaid = rs.getBigDecimal("interestPaid"); final BigDecimal interestPaid = rs.getBigDecimal("interestPaid");
final BigDecimal chargesDue = rs.getBigDecimal("chargesDue"); final BigDecimal chargesDue = rs.getBigDecimal("chargesDue");
final BigDecimal feeDue = rs.getBigDecimal("feeDue");
final BigDecimal feePaid = rs.getBigDecimal("feePaid");
final Integer attendanceTypeId = rs.getInt("attendanceTypeId"); final Integer attendanceTypeId = rs.getInt("attendanceTypeId");
final EnumOptionData attendanceType = AttendanceEnumerations.attendanceType(attendanceTypeId); final EnumOptionData attendanceType = AttendanceEnumerations.attendanceType(attendanceTypeId);
return new JLGCollectionSheetFlatData(groupName, groupId, staffId, staffName, levelId, levelName, clientName, clientId, loanId, return new JLGCollectionSheetFlatData(groupName, groupId, staffId, staffName, levelId, levelName, clientName, clientId, loanId,
accountId, accountStatusId, productShortName, productId, currencyData, disbursementAmount, principalDue, principalPaid, accountId, accountStatusId, productShortName, productId, currencyData, disbursementAmount, principalDue, principalPaid,
interestDue, interestPaid, chargesDue, attendanceType); interestDue, interestPaid, chargesDue, attendanceType, feeDue, feePaid);
} }
} }
@@ -740,7 +742,9 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe
sb.append("sum(ifnull(if(ln.loan_status_id = 300, ls.principal_amount, 0.0), 0.0) - ifnull(if(ln.loan_status_id = 300, ls.principal_completed_derived, 0.0), 0.0)) As principalDue, "); sb.append("sum(ifnull(if(ln.loan_status_id = 300, ls.principal_amount, 0.0), 0.0) - ifnull(if(ln.loan_status_id = 300, ls.principal_completed_derived, 0.0), 0.0)) As principalDue, ");
sb.append("ln.principal_repaid_derived As principalPaid, "); sb.append("ln.principal_repaid_derived As principalPaid, ");
sb.append("sum(ifnull(if(ln.loan_status_id = 300, ls.interest_amount, 0.0), 0.0) - ifnull(if(ln.loan_status_id = 300, ls.interest_completed_derived, 0.0), 0.0)) As interestDue, "); sb.append("sum(ifnull(if(ln.loan_status_id = 300, ls.interest_amount, 0.0), 0.0) - ifnull(if(ln.loan_status_id = 300, ls.interest_completed_derived, 0.0), 0.0)) As interestDue, ");
sb.append("ln.interest_repaid_derived As interestPaid "); sb.append("ln.interest_repaid_derived As interestPaid, ");
sb.append("sum(ifnull(if(ln.loan_status_id = 300, ls.fee_charges_amount, 0.0), 0.0) - ifnull(if(ln.loan_status_id = 300, ls.fee_charges_completed_derived, 0.0), 0.0)) As feeDue, ");
sb.append("ln.fee_charges_repaid_derived As feePaid ");
sb.append("FROM m_loan ln "); sb.append("FROM m_loan ln ");
sb.append("JOIN m_client cl ON cl.id = ln.client_id "); sb.append("JOIN m_client cl ON cl.id = ln.client_id ");
sb.append("LEFT JOIN m_office of ON of.id = cl.office_id AND of.hierarchy like :officeHierarchy "); sb.append("LEFT JOIN m_office of ON of.id = cl.office_id AND of.hierarchy like :officeHierarchy ");
@@ -794,9 +798,12 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe
final BigDecimal interestDue = rs.getBigDecimal("interestDue"); final BigDecimal interestDue = rs.getBigDecimal("interestDue");
final BigDecimal interestPaid = rs.getBigDecimal("interestPaid"); final BigDecimal interestPaid = rs.getBigDecimal("interestPaid");
final BigDecimal chargesDue = rs.getBigDecimal("chargesDue"); final BigDecimal chargesDue = rs.getBigDecimal("chargesDue");
final BigDecimal feeDue = rs.getBigDecimal("feeDue");
final BigDecimal feePaid = rs.getBigDecimal("feePaid");
return new IndividualCollectionSheetLoanFlatData(clientName, clientId, loanId, accountId, accountStatusId, productShortName, return new IndividualCollectionSheetLoanFlatData(clientName, clientId, loanId, accountId, accountStatusId, productShortName,
productId, currencyData, disbursementAmount, principalDue, principalPaid, interestDue, interestPaid, chargesDue); productId, currencyData, disbursementAmount, principalDue, principalPaid, interestDue, interestPaid, chargesDue,
feeDue, feePaid);
} }
} }