FINERACT-2081: Add all loan term validations to loan details
This commit is contained in:
committed by
Arnold Gálovics
parent
fe16b61c72
commit
25866edfc9
+11
@@ -24,6 +24,7 @@ import lombok.Getter;
|
||||
import org.apache.fineract.infrastructure.core.data.EnumOptionData;
|
||||
import org.apache.fineract.infrastructure.core.service.DateUtils;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanTermVariationType;
|
||||
import org.apache.fineract.portfolio.loanproduct.service.LoanEnumerations;
|
||||
|
||||
@Getter
|
||||
public class LoanTermVariationsData implements Comparable<LoanTermVariationsData> {
|
||||
@@ -46,6 +47,16 @@ public class LoanTermVariationsData implements Comparable<LoanTermVariationsData
|
||||
this.isSpecificToInstallment = isSpecificToInstallment;
|
||||
}
|
||||
|
||||
public LoanTermVariationsData(final Long id, final Integer termType, final LocalDate termVariationApplicableFrom,
|
||||
final BigDecimal decimalValue, final LocalDate dateValue, final boolean isSpecificToInstallment) {
|
||||
this.id = id;
|
||||
this.termType = LoanEnumerations.loanVariationType(LoanTermVariationType.fromInt(termType));
|
||||
this.termVariationApplicableFrom = termVariationApplicableFrom;
|
||||
this.decimalValue = decimalValue;
|
||||
this.dateValue = dateValue;
|
||||
this.isSpecificToInstallment = isSpecificToInstallment;
|
||||
}
|
||||
|
||||
public LoanTermVariationsData(final EnumOptionData termType, final LocalDate termVariationApplicableFrom, final BigDecimal decimalValue,
|
||||
LocalDate dateValue, final boolean isSpecificToInstallment) {
|
||||
this.id = null;
|
||||
|
||||
+5
-9
@@ -5366,16 +5366,12 @@ public class Loan extends AbstractAuditableWithUTCDateTimeCustom<Long> {
|
||||
return isForeClosure;
|
||||
}
|
||||
|
||||
public Set<LoanTermVariations> getActiveLoanTermVariations() {
|
||||
Set<LoanTermVariations> retData = new HashSet<>();
|
||||
if (this.loanTermVariations != null && !this.loanTermVariations.isEmpty()) {
|
||||
for (LoanTermVariations loanTermVariations : this.loanTermVariations) {
|
||||
if (loanTermVariations.isActive()) {
|
||||
retData.add(loanTermVariations);
|
||||
}
|
||||
}
|
||||
public List<LoanTermVariations> getActiveLoanTermVariations() {
|
||||
if (this.loanTermVariations == null) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
return !retData.isEmpty() ? retData : null;
|
||||
|
||||
return this.loanTermVariations.stream().filter(LoanTermVariations::isActive).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public boolean isTopup() {
|
||||
|
||||
+20
-2
@@ -19,6 +19,7 @@
|
||||
package org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain;
|
||||
|
||||
import java.util.List;
|
||||
import org.apache.fineract.portfolio.loanaccount.data.LoanTermVariationsData;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanTermVariations;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||
@@ -28,7 +29,24 @@ import org.springframework.data.repository.query.Param;
|
||||
public interface LoanTermVariationsRepository
|
||||
extends JpaRepository<LoanTermVariations, Long>, JpaSpecificationExecutor<LoanTermVariations> {
|
||||
|
||||
@Query("select lrr from LoanTermVariations lrr where lrr.loan.id = :loanId")
|
||||
List<LoanTermVariations> findAllLoanTermVariationsByLoanId(@Param("loanId") Long loanId);
|
||||
@Query("""
|
||||
select new org.apache.fineract.portfolio.loanaccount.data.LoanTermVariationsData(
|
||||
ltv.id, ltv.termType, ltv.termApplicableFrom, ltv.decimalValue, ltv.dateValue, ltv.isSpecificToInstallment
|
||||
)
|
||||
from LoanTermVariations ltv
|
||||
where ltv.loan.id = :loanId
|
||||
order by ltv.termApplicableFrom
|
||||
""")
|
||||
List<LoanTermVariationsData> findLoanTermVariationsByLoanId(@Param("loanId") long loanId);
|
||||
|
||||
@Query("""
|
||||
select new org.apache.fineract.portfolio.loanaccount.data.LoanTermVariationsData(
|
||||
ltv.id, ltv.termType, ltv.termApplicableFrom, ltv.decimalValue, ltv.dateValue, ltv.isSpecificToInstallment
|
||||
)
|
||||
from LoanTermVariations ltv
|
||||
where ltv.loan.id = :loanId and ltv.termType = :termType
|
||||
order by ltv.termApplicableFrom
|
||||
""")
|
||||
List<LoanTermVariationsData> findLoanTermVariationsByLoanIdAndTermType(@Param("loanId") long loanId, @Param("termType") int termType);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user