mifosx-816 : corrected loan variations to pick based on loan product count
This commit is contained in:
+2
-2
@@ -64,9 +64,9 @@ public class LoanScheduleCalculationPlatformServiceImpl implements LoanScheduleC
|
||||
final Long groupId = this.fromJsonHelper.extractLongNamed("groupId", query.parsedJson());
|
||||
Integer cycleNumber = 0;
|
||||
if (clientId != null) {
|
||||
cycleNumber = this.loanReadPlatformService.retriveLoanCounter(clientId);
|
||||
cycleNumber = this.loanReadPlatformService.retriveLoanCounter(clientId, loanProduct.getId());
|
||||
} else if (groupId != null) {
|
||||
cycleNumber = this.loanReadPlatformService.retriveLoanCounter(groupId, AccountType.GROUP.getValue());
|
||||
cycleNumber = this.loanReadPlatformService.retriveLoanCounter(groupId, AccountType.GROUP.getValue(), loanProduct.getId());
|
||||
}
|
||||
this.loanProductCommandFromApiJsonDeserializer.validateMinMaxConstraints(query.parsedJson(), baseDataValidator,
|
||||
loanProduct, cycleNumber);
|
||||
|
||||
+4
-4
@@ -180,9 +180,9 @@ public class LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa
|
||||
final Long groupId = this.fromJsonHelper.extractLongNamed("groupId", command.parsedJson());
|
||||
Integer cycleNumber = 0;
|
||||
if (clientId != null) {
|
||||
cycleNumber = this.loanReadPlatformService.retriveLoanCounter(clientId);
|
||||
cycleNumber = this.loanReadPlatformService.retriveLoanCounter(clientId, loanProduct.getId());
|
||||
} else if (groupId != null) {
|
||||
cycleNumber = this.loanReadPlatformService.retriveLoanCounter(groupId, AccountType.GROUP.getValue());
|
||||
cycleNumber = this.loanReadPlatformService.retriveLoanCounter(groupId, AccountType.GROUP.getValue(), loanProduct.getId());
|
||||
}
|
||||
this.loanProductCommandFromApiJsonDeserializer.validateMinMaxConstraints(command.parsedJson(), baseDataValidator,
|
||||
loanProduct, cycleNumber);
|
||||
@@ -314,9 +314,9 @@ public class LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa
|
||||
final Long groupId = this.fromJsonHelper.extractLongNamed("groupId", command.parsedJson());
|
||||
Integer cycleNumber = 0;
|
||||
if (clientId != null) {
|
||||
cycleNumber = this.loanReadPlatformService.retriveLoanCounter(clientId);
|
||||
cycleNumber = this.loanReadPlatformService.retriveLoanCounter(clientId, loanProduct.getId());
|
||||
} else if (groupId != null) {
|
||||
cycleNumber = this.loanReadPlatformService.retriveLoanCounter(groupId, AccountType.GROUP.getValue());
|
||||
cycleNumber = this.loanReadPlatformService.retriveLoanCounter(groupId, AccountType.GROUP.getValue(), loanProduct.getId());
|
||||
}
|
||||
this.loanProductCommandFromApiJsonDeserializer.validateMinMaxConstraints(command.parsedJson(), baseDataValidator,
|
||||
loanProduct, cycleNumber);
|
||||
|
||||
+2
-2
@@ -62,7 +62,7 @@ public interface LoanReadPlatformService {
|
||||
*/
|
||||
Collection<OverdueLoanScheduleData> retrieveAllLoansWithOverdueInstallmentsNotAlreadyPenalized(final Long penaltyWaitPeriod);
|
||||
|
||||
Integer retriveLoanCounter(Long groupId, Integer loanType);
|
||||
Integer retriveLoanCounter(Long groupId, Integer loanType, Long productId);
|
||||
|
||||
Integer retriveLoanCounter(Long clientId);
|
||||
Integer retriveLoanCounter(Long clientId, Long productId);
|
||||
}
|
||||
+8
-8
@@ -1067,9 +1067,9 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
||||
Integer loanCycleCounter = null;
|
||||
if (loanProduct.useBorrowerCycle()) {
|
||||
if (clientId == null) {
|
||||
loanCycleCounter = retriveLoanCounter(groupId, AccountType.GROUP.getValue());
|
||||
loanCycleCounter = retriveLoanCounter(groupId, AccountType.GROUP.getValue(), loanProduct.getId());
|
||||
} else {
|
||||
loanCycleCounter = retriveLoanCounter(clientId);
|
||||
loanCycleCounter = retriveLoanCounter(clientId, loanProduct.getId());
|
||||
}
|
||||
}
|
||||
return LoanAccountData.loanProductWithTemplateDefaults(loanProduct, loanTermFrequencyTypeOptions, repaymentFrequencyTypeOptions,
|
||||
@@ -1161,14 +1161,14 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer retriveLoanCounter(final Long groupId, final Integer loanType) {
|
||||
final String sql = "Select MAX(l.loan_counter) from m_loan l where l.group_id = ? " + " and l.loan_type_enum = ?";
|
||||
return this.jdbcTemplate.queryForInt(sql, groupId, loanType);
|
||||
public Integer retriveLoanCounter(final Long groupId, final Integer loanType, Long productId) {
|
||||
final String sql = "Select MAX(l.loan_product_counter) from m_loan l where l.group_id = ? and l.loan_type_enum = ? and l.product_id=?";
|
||||
return this.jdbcTemplate.queryForInt(sql, groupId, loanType,productId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer retriveLoanCounter(final Long clientId) {
|
||||
final String sql = "Select MAX(l.loan_counter) from m_loan l where l.client_id = ?";
|
||||
return this.jdbcTemplate.queryForInt(sql, clientId);
|
||||
public Integer retriveLoanCounter(final Long clientId, Long productId) {
|
||||
final String sql = "Select MAX(l.loan_product_counter) from m_loan l where l.client_id = ? and l.product_id=?";
|
||||
return this.jdbcTemplate.queryForInt(sql, clientId,productId);
|
||||
}
|
||||
}
|
||||
+23
-12
@@ -680,20 +680,31 @@ public class LoanProduct extends AbstractPersistable<Long> {
|
||||
public Map<String, BigDecimal> fetchBorrowerCycleVariationsForCycleNumber(final Integer cycleNumber) {
|
||||
Map<String, BigDecimal> borrowerCycleVariations = new HashMap<String, BigDecimal>();
|
||||
borrowerCycleVariations.put(LoanProductConstants.principal, this.loanProductRelatedDetail.getPrincipal().getAmount());
|
||||
borrowerCycleVariations.put(LoanProductConstants.minPrincipal, this.loanProductMinMaxConstraints.getMinPrincipal());
|
||||
borrowerCycleVariations.put(LoanProductConstants.maxPrincipal, this.loanProductMinMaxConstraints.getMaxPrincipal());
|
||||
borrowerCycleVariations.put(LoanProductConstants.interestRatePerPeriod,
|
||||
this.loanProductRelatedDetail.getNominalInterestRatePerPeriod());
|
||||
borrowerCycleVariations.put(LoanProductConstants.minInterestRatePerPeriod,
|
||||
this.loanProductMinMaxConstraints.getMinNominalInterestRatePerPeriod());
|
||||
borrowerCycleVariations.put(LoanProductConstants.maxInterestRatePerPeriod,
|
||||
this.loanProductMinMaxConstraints.getMaxNominalInterestRatePerPeriod());
|
||||
borrowerCycleVariations.put(LoanProductConstants.numberOfRepayments,
|
||||
BigDecimal.valueOf(this.loanProductRelatedDetail.getNumberOfRepayments()));
|
||||
borrowerCycleVariations.put(LoanProductConstants.minNumberOfRepayments,
|
||||
BigDecimal.valueOf(this.loanProductMinMaxConstraints.getMinNumberOfRepayments()));
|
||||
borrowerCycleVariations.put(LoanProductConstants.maxNumberOfRepayments,
|
||||
BigDecimal.valueOf(this.loanProductMinMaxConstraints.getMaxNumberOfRepayments()));
|
||||
if(this.loanProductRelatedDetail.getNumberOfRepayments() != null){
|
||||
borrowerCycleVariations.put(LoanProductConstants.numberOfRepayments,
|
||||
BigDecimal.valueOf(this.loanProductRelatedDetail.getNumberOfRepayments()));
|
||||
}
|
||||
|
||||
if(this.loanProductMinMaxConstraints !=null){
|
||||
borrowerCycleVariations.put(LoanProductConstants.minPrincipal, this.loanProductMinMaxConstraints.getMinPrincipal());
|
||||
borrowerCycleVariations.put(LoanProductConstants.maxPrincipal, this.loanProductMinMaxConstraints.getMaxPrincipal());
|
||||
borrowerCycleVariations.put(LoanProductConstants.minInterestRatePerPeriod,
|
||||
this.loanProductMinMaxConstraints.getMinNominalInterestRatePerPeriod());
|
||||
borrowerCycleVariations.put(LoanProductConstants.maxInterestRatePerPeriod,
|
||||
this.loanProductMinMaxConstraints.getMaxNominalInterestRatePerPeriod());
|
||||
|
||||
if(this.loanProductMinMaxConstraints.getMinNumberOfRepayments() != null){
|
||||
borrowerCycleVariations.put(LoanProductConstants.minNumberOfRepayments,
|
||||
BigDecimal.valueOf(this.loanProductMinMaxConstraints.getMinNumberOfRepayments()));
|
||||
}
|
||||
|
||||
if(this.loanProductMinMaxConstraints.getMaxNumberOfRepayments() != null){
|
||||
borrowerCycleVariations.put(LoanProductConstants.maxNumberOfRepayments,
|
||||
BigDecimal.valueOf(this.loanProductMinMaxConstraints.getMaxNumberOfRepayments()));
|
||||
}
|
||||
}
|
||||
if (cycleNumber > 0) {
|
||||
Integer principalCycleUsed = 0;
|
||||
Integer interestCycleUsed = 0;
|
||||
|
||||
Reference in New Issue
Block a user