FINERACT-2358: Allow to configure advanced accounting rules based on write-off reason
This commit is contained in:
+30
-2
@@ -30,6 +30,7 @@ import org.apache.fineract.accounting.glaccount.domain.GLAccount;
|
||||
import org.apache.fineract.accounting.glaccount.domain.GLAccountRepository;
|
||||
import org.apache.fineract.accounting.glaccount.domain.GLAccountRepositoryWrapper;
|
||||
import org.apache.fineract.accounting.glaccount.domain.GLAccountType;
|
||||
import org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping;
|
||||
import org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMappingRepository;
|
||||
import org.apache.fineract.accounting.producttoaccountmapping.exception.ProductToGLAccountMappingInvalidException;
|
||||
import org.apache.fineract.accounting.producttoaccountmapping.service.ProductToGLAccountMappingHelper;
|
||||
@@ -141,12 +142,39 @@ public class LoanProductToGLAccountMappingHelper extends ProductToGLAccountMappi
|
||||
|
||||
public void saveChargeOffReasonToExpenseAccountMappings(final JsonCommand command, final JsonElement element, final Long productId,
|
||||
final Map<String, Object> changes) {
|
||||
saveChargeOffReasonToGLAccountMappings(command, element, productId, changes, PortfolioProductType.LOAN);
|
||||
saveReasonToGLAccountMappings(command, element, productId, changes, PortfolioProductType.LOAN,
|
||||
LoanProductAccountingParams.CHARGE_OFF_REASON_TO_EXPENSE_ACCOUNT_MAPPINGS,
|
||||
LoanProductAccountingParams.CHARGE_OFF_REASON_CODE_VALUE_ID, CashAccountsForLoan.CHARGE_OFF_EXPENSE);
|
||||
}
|
||||
|
||||
public void saveWriteOffReasonToExpenseAccountMappings(final JsonCommand command, final JsonElement element, final Long productId,
|
||||
final Map<String, Object> changes) {
|
||||
saveReasonToGLAccountMappings(command, element, productId, changes, PortfolioProductType.LOAN,
|
||||
LoanProductAccountingParams.WRITE_OFF_REASON_TO_EXPENSE_ACCOUNT_MAPPINGS,
|
||||
LoanProductAccountingParams.WRITE_OFF_REASON_CODE_VALUE_ID, CashAccountsForLoan.LOSSES_WRITTEN_OFF);
|
||||
}
|
||||
|
||||
public void updateWriteOffReasonToExpenseAccountMappings(final JsonCommand command, final JsonElement element, final Long productId,
|
||||
final Map<String, Object> changes) {
|
||||
final List<ProductToGLAccountMapping> existingWriteOffReasonToGLAccountMappings = this.accountMappingRepository
|
||||
.findAllWriteOffReasonsMappings(productId, PortfolioProductType.LOAN.getValue());
|
||||
LoanProductAccountingParams reasonToExpenseAccountMappingsParam = LoanProductAccountingParams.WRITE_OFF_REASON_TO_EXPENSE_ACCOUNT_MAPPINGS;
|
||||
LoanProductAccountingParams reasonCodeValueIdParam = LoanProductAccountingParams.WRITE_OFF_REASON_CODE_VALUE_ID;
|
||||
CashAccountsForLoan cashAccountsForLoan = CashAccountsForLoan.LOSSES_WRITTEN_OFF;
|
||||
updateReasonToGLAccountMappings(command, element, productId, changes, PortfolioProductType.LOAN,
|
||||
existingWriteOffReasonToGLAccountMappings, reasonToExpenseAccountMappingsParam, reasonCodeValueIdParam,
|
||||
cashAccountsForLoan);
|
||||
}
|
||||
|
||||
public void updateChargeOffReasonToExpenseAccountMappings(final JsonCommand command, final JsonElement element, final Long productId,
|
||||
final Map<String, Object> changes) {
|
||||
updateChargeOffReasonToGLAccountMappings(command, element, productId, changes, PortfolioProductType.LOAN);
|
||||
final List<ProductToGLAccountMapping> chargeOffReasonsMappings = this.accountMappingRepository
|
||||
.findAllChargeOffReasonsMappings(productId, PortfolioProductType.LOAN.getValue());
|
||||
LoanProductAccountingParams reasonToExpenseAccountMappingsParam = LoanProductAccountingParams.CHARGE_OFF_REASON_TO_EXPENSE_ACCOUNT_MAPPINGS;
|
||||
LoanProductAccountingParams reasonCodeValueIdParam = LoanProductAccountingParams.CHARGE_OFF_REASON_CODE_VALUE_ID;
|
||||
CashAccountsForLoan cashAccountsForLoan = CashAccountsForLoan.CHARGE_OFF_EXPENSE;
|
||||
updateReasonToGLAccountMappings(command, element, productId, changes, PortfolioProductType.LOAN, chargeOffReasonsMappings,
|
||||
reasonToExpenseAccountMappingsParam, reasonCodeValueIdParam, cashAccountsForLoan);
|
||||
}
|
||||
|
||||
public void saveCapitalizedIncomeClassificationToIncomeAccountMappings(final JsonCommand command, final JsonElement element,
|
||||
|
||||
+48
-1
@@ -301,6 +301,7 @@ public final class LoanProductsApiResourceSwagger {
|
||||
public List<GetLoanProductsProductIdResponse.GetLoanPaymentChannelToFundSourceMappings> paymentChannelToFundSourceMappings;
|
||||
public List<LoanProductChargeToGLAccountMapper> feeToIncomeAccountMappings;
|
||||
public List<PostChargeOffReasonToExpenseAccountMappings> chargeOffReasonToExpenseAccountMappings;
|
||||
public List<PostWriteOffReasonToExpenseAccountMappings> writeOffReasonsToExpenseMappings;
|
||||
public List<PostLoanProductsRequest.PostClassificationToIncomeAccountMappings> buydownfeeClassificationToIncomeAccountMappings;
|
||||
public List<PostLoanProductsRequest.PostClassificationToIncomeAccountMappings> capitalizedIncomeClassificationToIncomeAccountMappings;
|
||||
public List<LoanProductChargeToGLAccountMapper> penaltyToIncomeAccountMappings;
|
||||
@@ -372,7 +373,7 @@ public final class LoanProductsApiResourceSwagger {
|
||||
@Schema(example = "REGULAR")
|
||||
public String chargeOffBehaviour;
|
||||
|
||||
static final class PostChargeOffReasonToExpenseAccountMappings {
|
||||
public static final class PostChargeOffReasonToExpenseAccountMappings {
|
||||
|
||||
private PostChargeOffReasonToExpenseAccountMappings() {}
|
||||
|
||||
@@ -382,6 +383,17 @@ public final class LoanProductsApiResourceSwagger {
|
||||
public Long expenseAccountId;
|
||||
}
|
||||
|
||||
@Schema(description = "PostWriteOffReasonToExpenseAccountMappings")
|
||||
public static final class PostWriteOffReasonToExpenseAccountMappings {
|
||||
|
||||
private PostWriteOffReasonToExpenseAccountMappings() {}
|
||||
|
||||
@Schema(example = "1")
|
||||
public String writeOffReasonCodeValueId;
|
||||
@Schema(example = "1")
|
||||
public String expenseAccountId;
|
||||
}
|
||||
|
||||
static final class PostClassificationToIncomeAccountMappings {
|
||||
|
||||
private PostClassificationToIncomeAccountMappings() {}
|
||||
@@ -1154,6 +1166,7 @@ public final class LoanProductsApiResourceSwagger {
|
||||
public List<StringEnumOptionData> supportedInterestRefundTypes;
|
||||
public List<StringEnumOptionData> supportedInterestRefundTypesOptions;
|
||||
public List<GetLoanProductsChargeOffReasonOptions> chargeOffReasonOptions;
|
||||
public List<GetLoanProductsWriteOffReasonOptions> writeOffReasonOptions;
|
||||
public StringEnumOptionData chargeOffBehaviour;
|
||||
public List<StringEnumOptionData> chargeOffBehaviourOptions;
|
||||
@Schema(example = "false")
|
||||
@@ -1380,6 +1393,17 @@ public final class LoanProductsApiResourceSwagger {
|
||||
public Long incomeAccountId;
|
||||
}
|
||||
|
||||
@Schema(description = "GetWriteOffReasonToExpenseAccountMappings")
|
||||
public static final class GetWriteOffReasonToExpenseAccountMappings {
|
||||
|
||||
private GetWriteOffReasonToExpenseAccountMappings() {}
|
||||
|
||||
@Schema(example = "1")
|
||||
public String writeOffReasonCodeValueId;
|
||||
@Schema(example = "1")
|
||||
public String expenseAccountId;
|
||||
}
|
||||
|
||||
@Schema(example = "11")
|
||||
public Long id;
|
||||
@Schema(example = "advanced accounting")
|
||||
@@ -1468,6 +1492,7 @@ public final class LoanProductsApiResourceSwagger {
|
||||
public Set<GetLoanPaymentChannelToFundSourceMappings> paymentChannelToFundSourceMappings;
|
||||
public Set<GetLoanFeeToIncomeAccountMappings> feeToIncomeAccountMappings;
|
||||
public List<GetChargeOffReasonToExpenseAccountMappings> chargeOffReasonToExpenseAccountMappings;
|
||||
public List<PostLoanProductsRequest.PostWriteOffReasonToExpenseAccountMappings> writeOffReasonsToExpenseMappings;
|
||||
@Schema(example = "false")
|
||||
public Boolean isRatesEnabled;
|
||||
@Schema(example = "true")
|
||||
@@ -1511,6 +1536,7 @@ public final class LoanProductsApiResourceSwagger {
|
||||
public Boolean enableAccrualActivityPosting;
|
||||
public List<StringEnumOptionData> supportedInterestRefundTypes;
|
||||
public List<GetLoanProductsChargeOffReasonOptions> chargeOffReasonOptions;
|
||||
public List<GetLoanProductsWriteOffReasonOptions> writeOffReasonOptions;
|
||||
public StringEnumOptionData chargeOffBehaviour;
|
||||
@Schema(example = "false")
|
||||
public Boolean interestRecognitionOnDisbursementDate;
|
||||
@@ -1774,6 +1800,7 @@ public final class LoanProductsApiResourceSwagger {
|
||||
public List<GetLoanProductsProductIdResponse.GetLoanPaymentChannelToFundSourceMappings> paymentChannelToFundSourceMappings;
|
||||
public List<LoanProductChargeToGLAccountMapper> feeToIncomeAccountMappings;
|
||||
public List<PostLoanProductsRequest.PostChargeOffReasonToExpenseAccountMappings> chargeOffReasonToExpenseAccountMappings;
|
||||
public List<PostLoanProductsRequest.PostWriteOffReasonToExpenseAccountMappings> writeOffReasonsToExpenseMappings;
|
||||
public List<PostLoanProductsRequest.PostClassificationToIncomeAccountMappings> buydownfeeClassificationToIncomeAccountMappings;
|
||||
public List<PostLoanProductsRequest.PostClassificationToIncomeAccountMappings> capitalizedIncomeClassificationToIncomeAccountMappings;
|
||||
public List<LoanProductChargeToGLAccountMapper> penaltyToIncomeAccountMappings;
|
||||
@@ -1904,4 +1931,24 @@ public final class LoanProductsApiResourceSwagger {
|
||||
@Schema(example = "false")
|
||||
public Boolean mandatory;
|
||||
}
|
||||
|
||||
@Schema(description = "GetLoanProductsWriteOffReasonOptions")
|
||||
public static final class GetLoanProductsWriteOffReasonOptions {
|
||||
|
||||
private GetLoanProductsWriteOffReasonOptions() {}
|
||||
|
||||
@Schema(example = "2")
|
||||
public Long id;
|
||||
@Schema(example = "debit_card")
|
||||
public String name;
|
||||
@Schema(example = "2")
|
||||
public Integer position;
|
||||
@Schema(example = "Write-Off reason description")
|
||||
public String description;
|
||||
@Schema(example = "true")
|
||||
public Boolean active;
|
||||
@Schema(example = "false")
|
||||
public Boolean mandatory;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+31
-8
@@ -34,6 +34,7 @@ import org.apache.fineract.accounting.producttoaccountmapping.data.ChargeOffReas
|
||||
import org.apache.fineract.accounting.producttoaccountmapping.data.ChargeToGLAccountMapper;
|
||||
import org.apache.fineract.accounting.producttoaccountmapping.data.ClassificationToGLAccountData;
|
||||
import org.apache.fineract.accounting.producttoaccountmapping.data.PaymentTypeToGLAccountMapper;
|
||||
import org.apache.fineract.accounting.producttoaccountmapping.data.WriteOffReasonsToExpenseAccountMapper;
|
||||
import org.apache.fineract.infrastructure.codes.data.CodeValueData;
|
||||
import org.apache.fineract.infrastructure.core.api.ApiFacingEnum;
|
||||
import org.apache.fineract.infrastructure.core.data.EnumOptionData;
|
||||
@@ -165,7 +166,8 @@ public class LoanProductData implements Serializable {
|
||||
private Collection<ChargeToGLAccountMapper> penaltyToIncomeAccountMappings;
|
||||
private List<ChargeOffReasonToGLAccountMapper> chargeOffReasonToExpenseAccountMappings;
|
||||
private final boolean enableAccrualActivityPosting;
|
||||
|
||||
private List<WriteOffReasonsToExpenseAccountMapper> writeOffReasonsToExpenseMappings;
|
||||
private final List<CodeValueData> writeOffReasonOptions;
|
||||
// rates
|
||||
private final boolean isRatesEnabled;
|
||||
private final Collection<RateData> rates;
|
||||
@@ -379,6 +381,8 @@ public class LoanProductData implements Serializable {
|
||||
final StringEnumOptionData buyDownFeeStrategy = null;
|
||||
final StringEnumOptionData buyDownFeeIncomeType = null;
|
||||
final boolean merchantBuyDownFee = false;
|
||||
final List<WriteOffReasonsToExpenseAccountMapper> writeOffReasonsToExpenseMappings = null;
|
||||
final List<CodeValueData> writeOffReasonOptions = null;
|
||||
|
||||
return new LoanProductData(id, name, shortName, description, currency, principal, minPrincipal, maxPrincipal, tolerance,
|
||||
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod,
|
||||
@@ -402,7 +406,8 @@ public class LoanProductData implements Serializable {
|
||||
loanScheduleProcessingType, fixedLength, enableAccrualActivityPosting, supportedInterestRefundTypes, chargeOffBehaviour,
|
||||
interestRecognitionOnDisbursementDate, daysInYearTypeCustomStrategy, enableIncomeCapitalization,
|
||||
capitalizedIncomeCalculationType, capitalizedIncomeStrategy, capitalizedIncomeType, enableBuyDownFee,
|
||||
buyDownFeeCalculationType, buyDownFeeStrategy, buyDownFeeIncomeType, merchantBuyDownFee);
|
||||
buyDownFeeCalculationType, buyDownFeeStrategy, buyDownFeeIncomeType, merchantBuyDownFee, writeOffReasonsToExpenseMappings,
|
||||
writeOffReasonOptions);
|
||||
|
||||
}
|
||||
|
||||
@@ -516,6 +521,8 @@ public class LoanProductData implements Serializable {
|
||||
final StringEnumOptionData buyDownFeeStrategy = null;
|
||||
final StringEnumOptionData buyDownFeeIncomeType = null;
|
||||
final boolean merchantBuyDownFee = false;
|
||||
final List<WriteOffReasonsToExpenseAccountMapper> writeOffReasonsToExpenseMappings = null;
|
||||
final List<CodeValueData> writeOffReasonOptions = null;
|
||||
|
||||
return new LoanProductData(id, name, shortName, description, currency, principal, minPrincipal, maxPrincipal, tolerance,
|
||||
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod,
|
||||
@@ -539,7 +546,8 @@ public class LoanProductData implements Serializable {
|
||||
loanScheduleProcessingType, fixedLength, enableAccrualActivityPosting, supportedInterestRefundTypes, chargeOffBehaviour,
|
||||
interestRecognitionOnDisbursementDate, daysInYearTypeCustomStrategy, enableIncomeCapitalization,
|
||||
capitalizedIncomeCalculationType, capitalizedIncomeStrategy, capitalizedIncomeType, enableBuyDownFee,
|
||||
buyDownFeeCalculationType, buyDownFeeStrategy, buyDownFeeIncomeType, merchantBuyDownFee);
|
||||
buyDownFeeCalculationType, buyDownFeeStrategy, buyDownFeeIncomeType, merchantBuyDownFee, writeOffReasonsToExpenseMappings,
|
||||
writeOffReasonOptions);
|
||||
|
||||
}
|
||||
|
||||
@@ -660,6 +668,8 @@ public class LoanProductData implements Serializable {
|
||||
final StringEnumOptionData buyDownFeeStrategy = null;
|
||||
final StringEnumOptionData buyDownFeeIncomeType = null;
|
||||
final boolean merchantBuyDownFee = false;
|
||||
final List<WriteOffReasonsToExpenseAccountMapper> writeOffReasonsToExpenseMappings = null;
|
||||
final List<CodeValueData> writeOffReasonOptions = null;
|
||||
|
||||
return new LoanProductData(id, name, shortName, description, currency, principal, minPrincipal, maxPrincipal, tolerance,
|
||||
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod,
|
||||
@@ -683,7 +693,8 @@ public class LoanProductData implements Serializable {
|
||||
loanScheduleProcessingType, fixedLength, enableAccrualActivityPosting, supportedInterestRefundTypes, chargeOffBehaviour,
|
||||
interestRecognitionOnDisbursementDate, daysInYearTypeCustomStrategy, enableIncomeCapitalization,
|
||||
capitalizedIncomeCalculationType, capitalizedIncomeStrategy, capitalizedIncomeType, enableBuyDownFee,
|
||||
buyDownFeeCalculationType, buyDownFeeStrategy, buyDownFeeIncomeType, merchantBuyDownFee);
|
||||
buyDownFeeCalculationType, buyDownFeeStrategy, buyDownFeeIncomeType, merchantBuyDownFee, writeOffReasonsToExpenseMappings,
|
||||
writeOffReasonOptions);
|
||||
|
||||
}
|
||||
|
||||
@@ -798,6 +809,8 @@ public class LoanProductData implements Serializable {
|
||||
final StringEnumOptionData buyDownFeeStrategy = null;
|
||||
final StringEnumOptionData buyDownFeeIncomeType = null;
|
||||
final boolean merchantBuyDownFee = false;
|
||||
final List<WriteOffReasonsToExpenseAccountMapper> writeOffReasonsToExpenseMappings = null;
|
||||
final List<CodeValueData> writeOffReasonOptions = null;
|
||||
|
||||
return new LoanProductData(id, name, shortName, description, currency, principal, minPrincipal, maxPrincipal, tolerance,
|
||||
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod,
|
||||
@@ -821,7 +834,8 @@ public class LoanProductData implements Serializable {
|
||||
loanScheduleProcessingType, fixedLength, enableAccrualActivityPosting, supportedInterestRefundTypes, chargeOffBehaviour,
|
||||
interestRecognitionOnDisbursementDate, daysInYearTypeCustomStrategy, enableIncomeCapitalization,
|
||||
capitalizedIncomeCalculationType, capitalizedIncomeStrategy, capitalizedIncomeType, enableBuyDownFee,
|
||||
buyDownFeeCalculationType, buyDownFeeStrategy, buyDownFeeIncomeType, merchantBuyDownFee);
|
||||
buyDownFeeCalculationType, buyDownFeeStrategy, buyDownFeeIncomeType, merchantBuyDownFee, writeOffReasonsToExpenseMappings,
|
||||
writeOffReasonOptions);
|
||||
}
|
||||
|
||||
public static LoanProductData withAccountingDetails(final LoanProductData productData, final Map<String, Object> accountingMappings,
|
||||
@@ -829,6 +843,7 @@ public class LoanProductData implements Serializable {
|
||||
final Collection<ChargeToGLAccountMapper> feeToGLAccountMappings,
|
||||
final Collection<ChargeToGLAccountMapper> penaltyToGLAccountMappings,
|
||||
final List<ChargeOffReasonToGLAccountMapper> chargeOffReasonToGLAccountMappings,
|
||||
final List<WriteOffReasonsToExpenseAccountMapper> writeOffReasonToGLAccountMappings,
|
||||
final List<ClassificationToGLAccountData> capitalizedIncomeClassificationToIncomeAccountMappings,
|
||||
final List<ClassificationToGLAccountData> buydownFeeClassificationToIncomeAccountMappings) {
|
||||
productData.accountingMappings = accountingMappings;
|
||||
@@ -836,6 +851,7 @@ public class LoanProductData implements Serializable {
|
||||
productData.feeToIncomeAccountMappings = feeToGLAccountMappings;
|
||||
productData.penaltyToIncomeAccountMappings = penaltyToGLAccountMappings;
|
||||
productData.chargeOffReasonToExpenseAccountMappings = chargeOffReasonToGLAccountMappings;
|
||||
productData.writeOffReasonsToExpenseMappings = writeOffReasonToGLAccountMappings;
|
||||
productData.capitalizedIncomeClassificationToIncomeAccountMappings = capitalizedIncomeClassificationToIncomeAccountMappings;
|
||||
productData.buydownFeeClassificationToIncomeAccountMappings = buydownFeeClassificationToIncomeAccountMappings;
|
||||
return productData;
|
||||
@@ -884,7 +900,9 @@ public class LoanProductData implements Serializable {
|
||||
final StringEnumOptionData capitalizedIncomeCalculationType, final StringEnumOptionData capitalizedIncomeStrategy,
|
||||
final StringEnumOptionData capitalizedIncomeType, final boolean enableBuyDownFee,
|
||||
final StringEnumOptionData buyDownFeeCalculationType, final StringEnumOptionData buyDownFeeStrategy,
|
||||
final StringEnumOptionData buyDownFeeIncomeType, final boolean merchantBuyDownFee) {
|
||||
final StringEnumOptionData buyDownFeeIncomeType, final boolean merchantBuyDownFee,
|
||||
final List<WriteOffReasonsToExpenseAccountMapper> writeOffReasonsToExpenseMappings,
|
||||
final List<CodeValueData> writeOffReasonOptions) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.shortName = shortName;
|
||||
@@ -971,6 +989,7 @@ public class LoanProductData implements Serializable {
|
||||
this.feeToIncomeAccountMappings = null;
|
||||
this.penaltyToIncomeAccountMappings = null;
|
||||
this.chargeOffReasonToExpenseAccountMappings = null;
|
||||
this.writeOffReasonsToExpenseMappings = null;
|
||||
this.valueConditionTypeOptions = null;
|
||||
this.principalVariationsForBorrowerCycle = principalVariations;
|
||||
this.interestRateVariationsForBorrowerCycle = interestRateVariations;
|
||||
@@ -1046,6 +1065,8 @@ public class LoanProductData implements Serializable {
|
||||
this.buyDownFeeCalculationTypeOptions = ApiFacingEnum.getValuesAsStringEnumOptionDataList(LoanBuyDownFeeCalculationType.class);
|
||||
this.buyDownFeeStrategyOptions = ApiFacingEnum.getValuesAsStringEnumOptionDataList(LoanBuyDownFeeStrategy.class);
|
||||
this.buyDownFeeIncomeTypeOptions = ApiFacingEnum.getValuesAsStringEnumOptionDataList(LoanBuyDownFeeIncomeType.class);
|
||||
this.writeOffReasonsToExpenseMappings = writeOffReasonsToExpenseMappings;
|
||||
this.writeOffReasonOptions = writeOffReasonOptions;
|
||||
this.capitalizedIncomeClassificationOptions = null;
|
||||
this.buydownFeeClassificationOptions = null;
|
||||
this.capitalizedIncomeClassificationToIncomeAccountMappings = null;
|
||||
@@ -1079,8 +1100,8 @@ public class LoanProductData implements Serializable {
|
||||
final List<StringEnumOptionData> capitalizedIncomeStrategyOptions,
|
||||
final List<StringEnumOptionData> capitalizedIncomeTypeOptions,
|
||||
final List<StringEnumOptionData> buyDownFeeCalculationTypeOptions, final List<StringEnumOptionData> buyDownFeeStrategyOptions,
|
||||
final List<StringEnumOptionData> buyDownFeeIncomeTypeOptions, final List<CodeValueData> capitalizedIncomeClassificationOptions,
|
||||
final List<CodeValueData> buydownFeeClassificationOptions) {
|
||||
final List<StringEnumOptionData> buyDownFeeIncomeTypeOptions, final List<CodeValueData> writeOffReasonOptions,
|
||||
final List<CodeValueData> capitalizedIncomeClassificationOptions, final List<CodeValueData> buydownFeeClassificationOptions) {
|
||||
|
||||
this.id = productData.id;
|
||||
this.name = productData.name;
|
||||
@@ -1134,6 +1155,8 @@ public class LoanProductData implements Serializable {
|
||||
this.feeToIncomeAccountMappings = productData.feeToIncomeAccountMappings;
|
||||
this.penaltyToIncomeAccountMappings = productData.penaltyToIncomeAccountMappings;
|
||||
this.chargeOffReasonToExpenseAccountMappings = productData.chargeOffReasonToExpenseAccountMappings;
|
||||
this.writeOffReasonsToExpenseMappings = productData.writeOffReasonsToExpenseMappings;
|
||||
this.writeOffReasonOptions = writeOffReasonOptions;
|
||||
|
||||
this.chargeOptions = chargeOptions;
|
||||
this.penaltyOptions = penaltyOptions;
|
||||
|
||||
Reference in New Issue
Block a user