Merge pull request #696 from adamsaghy/bugfix/loanproductdata
FINERACT-839: NPE when creating a Loan for a client fix
This commit is contained in:
+53
-54
@@ -49,6 +49,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import net.sf.ehcache.util.FindBugsSuppressWarnings;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Immutable data object to represent loan products.
|
* Immutable data object to represent loan products.
|
||||||
@@ -473,10 +474,10 @@ public class LoanProductData implements Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static LoanProductData loanProductWithFloatingRates(final Long id, final String name,
|
public static LoanProductData loanProductWithFloatingRates(final Long id, final String name,
|
||||||
final boolean isLinkedToFloatingInterestRates, final Integer floatingRateId, final String floatingRateName,
|
final boolean isLinkedToFloatingInterestRates, final Integer floatingRateId, final String floatingRateName,
|
||||||
final BigDecimal interestRateDifferential, final BigDecimal minDifferentialLendingRate,
|
final BigDecimal interestRateDifferential, final BigDecimal minDifferentialLendingRate,
|
||||||
final BigDecimal defaultDifferentialLendingRate, final BigDecimal maxDifferentialLendingRate,
|
final BigDecimal defaultDifferentialLendingRate, final BigDecimal maxDifferentialLendingRate,
|
||||||
final boolean isFloatingInterestRateCalculationAllowed) {
|
final boolean isFloatingInterestRateCalculationAllowed) {
|
||||||
final String shortName = null;
|
final String shortName = null;
|
||||||
final String description = null;
|
final String description = null;
|
||||||
final CurrencyData currency = CurrencyData.blank();
|
final CurrencyData currency = CurrencyData.blank();
|
||||||
@@ -567,9 +568,9 @@ public class LoanProductData implements Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static LoanProductData withAccountingDetails(final LoanProductData productData, final Map<String, Object> accountingMappings,
|
public static LoanProductData withAccountingDetails(final LoanProductData productData, final Map<String, Object> accountingMappings,
|
||||||
final Collection<PaymentTypeToGLAccountMapper> paymentChannelToFundSourceMappings,
|
final Collection<PaymentTypeToGLAccountMapper> paymentChannelToFundSourceMappings,
|
||||||
final Collection<ChargeToGLAccountMapper> feeToGLAccountMappings,
|
final Collection<ChargeToGLAccountMapper> feeToGLAccountMappings,
|
||||||
final Collection<ChargeToGLAccountMapper> penaltyToGLAccountMappings) {
|
final Collection<ChargeToGLAccountMapper> penaltyToGLAccountMappings) {
|
||||||
productData.accountingMappings = accountingMappings;
|
productData.accountingMappings = accountingMappings;
|
||||||
productData.paymentChannelToFundSourceMappings = paymentChannelToFundSourceMappings;
|
productData.paymentChannelToFundSourceMappings = paymentChannelToFundSourceMappings;
|
||||||
productData.feeToIncomeAccountMappings = feeToGLAccountMappings;
|
productData.feeToIncomeAccountMappings = feeToGLAccountMappings;
|
||||||
@@ -578,30 +579,30 @@ public class LoanProductData implements Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public LoanProductData(final Long id, final String name, final String shortName, final String description, final CurrencyData currency,
|
public LoanProductData(final Long id, final String name, final String shortName, final String description, final CurrencyData currency,
|
||||||
final BigDecimal principal, final BigDecimal minPrincipal, final BigDecimal maxPrincipal, final BigDecimal tolerance,
|
final BigDecimal principal, final BigDecimal minPrincipal, final BigDecimal maxPrincipal, final BigDecimal tolerance,
|
||||||
final Integer numberOfRepayments, final Integer minNumberOfRepayments, final Integer maxNumberOfRepayments,
|
final Integer numberOfRepayments, final Integer minNumberOfRepayments, final Integer maxNumberOfRepayments,
|
||||||
final Integer repaymentEvery, final BigDecimal interestRatePerPeriod, final BigDecimal minInterestRatePerPeriod,
|
final Integer repaymentEvery, final BigDecimal interestRatePerPeriod, final BigDecimal minInterestRatePerPeriod,
|
||||||
final BigDecimal maxInterestRatePerPeriod, final BigDecimal annualInterestRate, final EnumOptionData repaymentFrequencyType,
|
final BigDecimal maxInterestRatePerPeriod, final BigDecimal annualInterestRate, final EnumOptionData repaymentFrequencyType,
|
||||||
final EnumOptionData interestRateFrequencyType, final EnumOptionData amortizationType, final EnumOptionData interestType,
|
final EnumOptionData interestRateFrequencyType, final EnumOptionData amortizationType, final EnumOptionData interestType,
|
||||||
final EnumOptionData interestCalculationPeriodType, final Boolean allowPartialPeriodInterestCalcualtion, final Long fundId,
|
final EnumOptionData interestCalculationPeriodType, final Boolean allowPartialPeriodInterestCalcualtion, final Long fundId,
|
||||||
final String fundName, final Long transactionProcessingStrategyId, final String transactionProcessingStrategyName,
|
final String fundName, final Long transactionProcessingStrategyId, final String transactionProcessingStrategyName,
|
||||||
final Integer graceOnPrincipalPayment, final Integer recurringMoratoriumOnPrincipalPeriods, final Integer graceOnInterestPayment, final Integer graceOnInterestCharged,
|
final Integer graceOnPrincipalPayment, final Integer recurringMoratoriumOnPrincipalPeriods, final Integer graceOnInterestPayment, final Integer graceOnInterestCharged,
|
||||||
final Collection<ChargeData> charges, final EnumOptionData accountingType, final boolean includeInBorrowerCycle, boolean useBorrowerCycle, final LocalDate startDate,
|
final Collection<ChargeData> charges, final EnumOptionData accountingType, final boolean includeInBorrowerCycle, boolean useBorrowerCycle, final LocalDate startDate,
|
||||||
final LocalDate closeDate, final String status, final String externalId,
|
final LocalDate closeDate, final String status, final String externalId,
|
||||||
Collection<LoanProductBorrowerCycleVariationData> principalVariations,
|
Collection<LoanProductBorrowerCycleVariationData> principalVariations,
|
||||||
Collection<LoanProductBorrowerCycleVariationData> interestRateVariations,
|
Collection<LoanProductBorrowerCycleVariationData> interestRateVariations,
|
||||||
Collection<LoanProductBorrowerCycleVariationData> numberOfRepaymentVariations, Boolean multiDisburseLoan,
|
Collection<LoanProductBorrowerCycleVariationData> numberOfRepaymentVariations, Boolean multiDisburseLoan,
|
||||||
Integer maxTrancheCount, BigDecimal outstandingLoanBalance, final Integer graceOnArrearsAgeing, final Integer overdueDaysForNPA,
|
Integer maxTrancheCount, BigDecimal outstandingLoanBalance, final Integer graceOnArrearsAgeing, final Integer overdueDaysForNPA,
|
||||||
final EnumOptionData daysInMonthType, final EnumOptionData daysInYearType, final boolean isInterestRecalculationEnabled, final LoanProductInterestRecalculationData interestRecalculationData,
|
final EnumOptionData daysInMonthType, final EnumOptionData daysInYearType, final boolean isInterestRecalculationEnabled, final LoanProductInterestRecalculationData interestRecalculationData,
|
||||||
final Integer minimumDaysBetweenDisbursalAndFirstRepayment, boolean holdGuaranteeFunds,
|
final Integer minimumDaysBetweenDisbursalAndFirstRepayment, boolean holdGuaranteeFunds,
|
||||||
final LoanProductGuaranteeData loanProductGuaranteeData, final BigDecimal principalThresholdForLastInstallment,
|
final LoanProductGuaranteeData loanProductGuaranteeData, final BigDecimal principalThresholdForLastInstallment,
|
||||||
final boolean accountMovesOutOfNPAOnlyOnArrearsCompletion, boolean canDefineInstallmentAmount,
|
final boolean accountMovesOutOfNPAOnlyOnArrearsCompletion, boolean canDefineInstallmentAmount,
|
||||||
Integer installmentAmountInMultiplesOf, LoanProductConfigurableAttributes allowAttributeOverrides,
|
Integer installmentAmountInMultiplesOf, LoanProductConfigurableAttributes allowAttributeOverrides,
|
||||||
boolean isLinkedToFloatingInterestRates, Integer floatingRateId, String floatingRateName, BigDecimal interestRateDifferential,
|
boolean isLinkedToFloatingInterestRates, Integer floatingRateId, String floatingRateName, BigDecimal interestRateDifferential,
|
||||||
BigDecimal minDifferentialLendingRate, BigDecimal defaultDifferentialLendingRate, BigDecimal maxDifferentialLendingRate,
|
BigDecimal minDifferentialLendingRate, BigDecimal defaultDifferentialLendingRate, BigDecimal maxDifferentialLendingRate,
|
||||||
boolean isFloatingInterestRateCalculationAllowed, final boolean isVariableInstallmentsAllowed,
|
boolean isFloatingInterestRateCalculationAllowed, final boolean isVariableInstallmentsAllowed,
|
||||||
final Integer minimumGapBetweenInstallments, final Integer maximumGapBetweenInstallments,
|
final Integer minimumGapBetweenInstallments, final Integer maximumGapBetweenInstallments,
|
||||||
final boolean syncExpectedWithDisbursementDate, final boolean canUseForTopup, final boolean isEqualAmortization) {
|
final boolean syncExpectedWithDisbursementDate, final boolean canUseForTopup, final boolean isEqualAmortization) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.shortName = shortName;
|
this.shortName = shortName;
|
||||||
@@ -710,18 +711,18 @@ public class LoanProductData implements Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public LoanProductData(final LoanProductData productData, final Collection<ChargeData> chargeOptions,
|
public LoanProductData(final LoanProductData productData, final Collection<ChargeData> chargeOptions,
|
||||||
final Collection<ChargeData> penaltyOptions, final Collection<PaymentTypeData> paymentTypeOptions,
|
final Collection<ChargeData> penaltyOptions, final Collection<PaymentTypeData> paymentTypeOptions,
|
||||||
final Collection<CurrencyData> currencyOptions, final List<EnumOptionData> amortizationTypeOptions,
|
final Collection<CurrencyData> currencyOptions, final List<EnumOptionData> amortizationTypeOptions,
|
||||||
final List<EnumOptionData> interestTypeOptions, final List<EnumOptionData> interestCalculationPeriodTypeOptions,
|
final List<EnumOptionData> interestTypeOptions, final List<EnumOptionData> interestCalculationPeriodTypeOptions,
|
||||||
final List<EnumOptionData> repaymentFrequencyTypeOptions, final List<EnumOptionData> interestRateFrequencyTypeOptions,
|
final List<EnumOptionData> repaymentFrequencyTypeOptions, final List<EnumOptionData> interestRateFrequencyTypeOptions,
|
||||||
final Collection<FundData> fundOptions, final Collection<TransactionProcessingStrategyData> transactionStrategyOptions,
|
final Collection<FundData> fundOptions, final Collection<TransactionProcessingStrategyData> transactionStrategyOptions,
|
||||||
final Map<String, List<GLAccountData>> accountingMappingOptions, final List<EnumOptionData> accountingRuleOptions,
|
final Map<String, List<GLAccountData>> accountingMappingOptions, final List<EnumOptionData> accountingRuleOptions,
|
||||||
final List<EnumOptionData> valueConditionTypeOptions, final List<EnumOptionData> daysInMonthTypeOptions,
|
final List<EnumOptionData> valueConditionTypeOptions, final List<EnumOptionData> daysInMonthTypeOptions,
|
||||||
final List<EnumOptionData> daysInYearTypeOptions, final List<EnumOptionData> interestRecalculationCompoundingTypeOptions,
|
final List<EnumOptionData> daysInYearTypeOptions, final List<EnumOptionData> interestRecalculationCompoundingTypeOptions,
|
||||||
final List<EnumOptionData> rescheduleStrategyTypeOptions, final List<EnumOptionData> interestRecalculationFrequencyTypeOptions,
|
final List<EnumOptionData> rescheduleStrategyTypeOptions, final List<EnumOptionData> interestRecalculationFrequencyTypeOptions,
|
||||||
final List<EnumOptionData> preCloseInterestCalculationStrategyOptions, final List<FloatingRateData> floatingRateOptions,
|
final List<EnumOptionData> preCloseInterestCalculationStrategyOptions, final List<FloatingRateData> floatingRateOptions,
|
||||||
final List<EnumOptionData> interestRecalculationNthDayTypeOptions,
|
final List<EnumOptionData> interestRecalculationNthDayTypeOptions,
|
||||||
final List<EnumOptionData> interestRecalculationDayOfWeekTypeOptions) {
|
final List<EnumOptionData> interestRecalculationDayOfWeekTypeOptions) {
|
||||||
this.id = productData.id;
|
this.id = productData.id;
|
||||||
this.name = productData.name;
|
this.name = productData.name;
|
||||||
this.shortName = productData.shortName;
|
this.shortName = productData.shortName;
|
||||||
@@ -1134,17 +1135,15 @@ public class LoanProductData implements Serializable {
|
|||||||
if (isInterestRecalculationEnabled()) { return this.interestRecalculationData.getRecalculationCompoundingFrequencyInterval(); }
|
if (isInterestRecalculationEnabled()) { return this.interestRecalculationData.getRecalculationCompoundingFrequencyInterval(); }
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FindBugsSuppressWarnings("NP_BOOLEAN_RETURN_NULL")
|
||||||
public Boolean isCompoundingToBePostedAsTransaction() {
|
public Boolean isCompoundingToBePostedAsTransaction() {
|
||||||
if (isInterestRecalculationEnabled()) {
|
return isInterestRecalculationEnabled() ? this.interestRecalculationData.isCompoundingToBePostedAsTransaction() : null;
|
||||||
return this.interestRecalculationData.isCompoundingToBePostedAsTransaction();
|
|
||||||
} else {
|
|
||||||
return !this.interestRecalculationData.isCompoundingToBePostedAsTransaction();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FindBugsSuppressWarnings("NP_BOOLEAN_RETURN_NULL")
|
||||||
public Boolean allowCompoundingOnEod() {
|
public Boolean allowCompoundingOnEod() {
|
||||||
if (isInterestRecalculationEnabled()) {
|
return isInterestRecalculationEnabled() ? this.interestRecalculationData.allowCompoundingOnEod() : null;
|
||||||
return this.interestRecalculationData.allowCompoundingOnEod();
|
|
||||||
} return !this.interestRecalculationData.allowCompoundingOnEod();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canDefineInstallmentAmount() {
|
public boolean canDefineInstallmentAmount() {
|
||||||
@@ -1200,9 +1199,9 @@ public class LoanProductData implements Serializable {
|
|||||||
return syncExpectedWithDisbursementDate;
|
return syncExpectedWithDisbursementDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canUseForTopup() {
|
public boolean canUseForTopup() {
|
||||||
return this.canUseForTopup;
|
return this.canUseForTopup;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BigDecimal getInterestRateDifferential() {
|
public BigDecimal getInterestRateDifferential() {
|
||||||
return this.interestRateDifferential;
|
return this.interestRateDifferential;
|
||||||
|
|||||||
Reference in New Issue
Block a user