FINERACT-2113: Advanced Charge-off Expense Accounting - Add new "Advanced Accounting Rule"
This commit is contained in:
committed by
Adam Saghy
parent
75fa740ff6
commit
4ccb33a95e
+13
-3
@@ -33,6 +33,7 @@ import org.apache.fineract.accounting.glaccount.domain.GLAccountType;
|
||||
import org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMappingRepository;
|
||||
import org.apache.fineract.accounting.producttoaccountmapping.exception.ProductToGLAccountMappingInvalidException;
|
||||
import org.apache.fineract.accounting.producttoaccountmapping.service.ProductToGLAccountMappingHelper;
|
||||
import org.apache.fineract.infrastructure.codes.domain.CodeValueRepository;
|
||||
import org.apache.fineract.infrastructure.core.api.JsonCommand;
|
||||
import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper;
|
||||
import org.apache.fineract.portfolio.PortfolioProductType;
|
||||
@@ -46,9 +47,9 @@ public class LoanProductToGLAccountMappingHelper extends ProductToGLAccountMappi
|
||||
public LoanProductToGLAccountMappingHelper(final GLAccountRepository glAccountRepository,
|
||||
final ProductToGLAccountMappingRepository glAccountMappingRepository, final FromJsonHelper fromApiJsonHelper,
|
||||
final ChargeRepositoryWrapper chargeRepositoryWrapper, final GLAccountRepositoryWrapper accountRepositoryWrapper,
|
||||
final PaymentTypeRepositoryWrapper paymentTypeRepositoryWrapper) {
|
||||
final PaymentTypeRepositoryWrapper paymentTypeRepositoryWrapper, final CodeValueRepository codeValueRepository) {
|
||||
super(glAccountRepository, glAccountMappingRepository, fromApiJsonHelper, chargeRepositoryWrapper, accountRepositoryWrapper,
|
||||
paymentTypeRepositoryWrapper);
|
||||
paymentTypeRepositoryWrapper, codeValueRepository);
|
||||
}
|
||||
|
||||
/***
|
||||
@@ -138,6 +139,16 @@ public class LoanProductToGLAccountMappingHelper extends ProductToGLAccountMappi
|
||||
saveChargesToGLAccountMappings(command, element, productId, changes, PortfolioProductType.LOAN, false);
|
||||
}
|
||||
|
||||
public void saveChargeOffReasonToExpenseAccountMappings(final JsonCommand command, final JsonElement element, final Long productId,
|
||||
final Map<String, Object> changes) {
|
||||
saveChargeOffReasonToGLAccountMappings(command, element, productId, changes, PortfolioProductType.LOAN);
|
||||
}
|
||||
|
||||
public void updateChargeOffReasonToExpenseAccountMappings(final JsonCommand command, final JsonElement element, final Long productId,
|
||||
final Map<String, Object> changes) {
|
||||
updateChargeOffReasonToGLAccountMappings(command, element, productId, changes, PortfolioProductType.LOAN);
|
||||
}
|
||||
|
||||
public void updateChargesToIncomeAccountMappings(final JsonCommand command, final JsonElement element, final Long productId,
|
||||
final Map<String, Object> changes) {
|
||||
// update both fee and penalty charges
|
||||
@@ -387,5 +398,4 @@ public class LoanProductToGLAccountMappingHelper extends ProductToGLAccountMappi
|
||||
}
|
||||
return gLAccountType;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+13
@@ -246,6 +246,7 @@ final class LoanProductsApiResourceSwagger {
|
||||
public Long incomeFromGoodwillCreditPenaltyAccountId;
|
||||
public List<GetLoanProductsProductIdResponse.GetLoanPaymentChannelToFundSourceMappings> paymentChannelToFundSourceMappings;
|
||||
public List<GetLoanProductsProductIdResponse.GetLoanFeeToIncomeAccountMappings> feeToIncomeAccountMappings;
|
||||
public List<GetLoanProductsProductIdResponse.GetChargeOffReasonsToExpenseMappings> chargeOffReasonsToExpenseMappings;
|
||||
public List<ChargeToGLAccountMapper> penaltyToIncomeAccountMappings;
|
||||
|
||||
// Multi Disburse
|
||||
@@ -1209,6 +1210,16 @@ final class LoanProductsApiResourceSwagger {
|
||||
public Long fundSourceAccountId;
|
||||
}
|
||||
|
||||
static final class GetChargeOffReasonsToExpenseMappings {
|
||||
|
||||
private GetChargeOffReasonsToExpenseMappings() {}
|
||||
|
||||
@Schema(example = "1")
|
||||
public Long chargeOffReasonCodeValueId;
|
||||
@Schema(example = "12")
|
||||
public Long expenseGLAccountId;
|
||||
}
|
||||
|
||||
static final class GetLoanFeeToIncomeAccountMappings {
|
||||
|
||||
private GetLoanFeeToIncomeAccountMappings() {}
|
||||
@@ -1319,6 +1330,7 @@ final class LoanProductsApiResourceSwagger {
|
||||
public GetLoanAccountingMappings accountingMappings;
|
||||
public Set<GetLoanPaymentChannelToFundSourceMappings> paymentChannelToFundSourceMappings;
|
||||
public Set<GetLoanFeeToIncomeAccountMappings> feeToIncomeAccountMappings;
|
||||
public Set<GetChargeOffReasonsToExpenseMappings> chargeOffReasonsToExpenseMappings;
|
||||
@Schema(example = "false")
|
||||
public Boolean isRatesEnabled;
|
||||
@Schema(example = "true")
|
||||
@@ -1577,6 +1589,7 @@ final class LoanProductsApiResourceSwagger {
|
||||
public Long incomeFromChargeOffPenaltyAccountId;
|
||||
public List<GetLoanProductsProductIdResponse.GetLoanPaymentChannelToFundSourceMappings> paymentChannelToFundSourceMappings;
|
||||
public List<GetLoanProductsProductIdResponse.GetLoanFeeToIncomeAccountMappings> feeToIncomeAccountMappings;
|
||||
public List<GetLoanProductsProductIdResponse.GetChargeOffReasonsToExpenseMappings> chargeOffReasonsToExpenseMappings;
|
||||
public List<ChargeToGLAccountMapper> penaltyToIncomeAccountMappings;
|
||||
@Schema(example = "false")
|
||||
public Boolean enableAccrualActivityPosting;
|
||||
|
||||
+3
@@ -151,6 +151,7 @@ public class LoanProductData implements Serializable {
|
||||
private Collection<PaymentTypeToGLAccountMapper> paymentChannelToFundSourceMappings;
|
||||
private Collection<ChargeToGLAccountMapper> feeToIncomeAccountMappings;
|
||||
private Collection<ChargeToGLAccountMapper> penaltyToIncomeAccountMappings;
|
||||
private List<ChargeToGLAccountMapper> chargeOffReasonsToExpenseMappings;
|
||||
private final boolean enableAccrualActivityPosting;
|
||||
|
||||
// rates
|
||||
@@ -853,6 +854,7 @@ public class LoanProductData implements Serializable {
|
||||
this.paymentChannelToFundSourceMappings = null;
|
||||
this.feeToIncomeAccountMappings = null;
|
||||
this.penaltyToIncomeAccountMappings = null;
|
||||
this.chargeOffReasonsToExpenseMappings = null;
|
||||
this.valueConditionTypeOptions = null;
|
||||
this.principalVariationsForBorrowerCycle = principalVariations;
|
||||
this.interestRateVariationsForBorrowerCycle = interestRateVariations;
|
||||
@@ -992,6 +994,7 @@ public class LoanProductData implements Serializable {
|
||||
this.paymentChannelToFundSourceMappings = productData.paymentChannelToFundSourceMappings;
|
||||
this.feeToIncomeAccountMappings = productData.feeToIncomeAccountMappings;
|
||||
this.penaltyToIncomeAccountMappings = productData.penaltyToIncomeAccountMappings;
|
||||
this.chargeOffReasonsToExpenseMappings = productData.chargeOffReasonsToExpenseMappings;
|
||||
|
||||
this.chargeOptions = chargeOptions;
|
||||
this.penaltyOptions = penaltyOptions;
|
||||
|
||||
Reference in New Issue
Block a user