FINERACT-1981: progressive loan disbursement charge fixes
- Update PutChargesChargeIdRequest swagger def - undo disbursement fix - non-tranche multidisburse fix - disbursement transaction order fix
This commit is contained in:
+2
-2
@@ -1225,8 +1225,8 @@ final class LoansApiResourceSwagger {
|
||||
|
||||
private PostLoansDisbursementData() {}
|
||||
|
||||
@Schema(example = "[2013, 11, 1]")
|
||||
public LocalDate expectedDisbursementDate;
|
||||
@Schema(example = "1 November 2023")
|
||||
public String expectedDisbursementDate;
|
||||
@Schema(example = "1000.00")
|
||||
public Double principal;
|
||||
}
|
||||
|
||||
+31
-18
@@ -30,6 +30,7 @@ import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.fineract.infrastructure.core.api.JsonCommand;
|
||||
import org.apache.fineract.infrastructure.core.domain.ExternalId;
|
||||
import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper;
|
||||
@@ -142,34 +143,46 @@ public class LoanChargeAssembler {
|
||||
expectedDisbursementDate = this.fromApiJsonHelper.extractLocalDateNamed(
|
||||
LoanApiConstants.expectedDisbursementDateParameterName, disbursementDataElement, dateFormat,
|
||||
locale);
|
||||
} else {
|
||||
expectedDisbursementDate = this.fromApiJsonHelper
|
||||
.extractLocalDateNamed(LoanApiConstants.expectedDisbursementDateParameterName, element);
|
||||
}
|
||||
}
|
||||
|
||||
if (ChargeTimeType.DISBURSEMENT.getValue().equals(chargeDefinition.getChargeTimeType())) {
|
||||
for (LoanDisbursementDetails disbursementDetail : disbursementDetails) {
|
||||
LoanTrancheDisbursementCharge loanTrancheDisbursementCharge = null;
|
||||
if (chargeDefinition.isPercentageOfApprovedAmount()
|
||||
&& disbursementDetail.expectedDisbursementDateAsLocalDate().equals(expectedDisbursementDate)) {
|
||||
final LoanCharge loanCharge = createNewWithoutLoan(chargeDefinition, principal, amount, chargeTime,
|
||||
chargeCalculation, dueDate, chargePaymentModeEnum, numberOfRepayments, externalId);
|
||||
loanCharges.add(loanCharge);
|
||||
if (loanCharge.isTrancheDisbursementCharge()) {
|
||||
loanTrancheDisbursementCharge = new LoanTrancheDisbursementCharge(loanCharge,
|
||||
disbursementDetail);
|
||||
loanCharge.updateLoanTrancheDisbursementCharge(loanTrancheDisbursementCharge);
|
||||
}
|
||||
} else {
|
||||
if (disbursementDetail.expectedDisbursementDateAsLocalDate().equals(expectedDisbursementDate)) {
|
||||
final LoanCharge loanCharge = createNewWithoutLoan(chargeDefinition,
|
||||
disbursementDetail.principal(), amount, chargeTime, chargeCalculation,
|
||||
disbursementDetail.expectedDisbursementDateAsLocalDate(), chargePaymentModeEnum,
|
||||
numberOfRepayments, externalId);
|
||||
if (CollectionUtils.isEmpty(disbursementDetails)) {
|
||||
// non-tranche
|
||||
final LoanCharge loanCharge = createNewWithoutLoan(chargeDefinition, principal, amount, chargeTime,
|
||||
chargeCalculation, dueDate, chargePaymentModeEnum, numberOfRepayments, externalId);
|
||||
loanCharges.add(loanCharge);
|
||||
} else {
|
||||
// tranche
|
||||
for (LoanDisbursementDetails disbursementDetail : disbursementDetails) {
|
||||
LoanTrancheDisbursementCharge loanTrancheDisbursementCharge = null;
|
||||
if (chargeDefinition.isPercentageOfApprovedAmount() && disbursementDetail
|
||||
.expectedDisbursementDateAsLocalDate().equals(expectedDisbursementDate)) {
|
||||
final LoanCharge loanCharge = createNewWithoutLoan(chargeDefinition, principal, amount,
|
||||
chargeTime, chargeCalculation, dueDate, chargePaymentModeEnum, numberOfRepayments,
|
||||
externalId);
|
||||
loanCharges.add(loanCharge);
|
||||
if (loanCharge.isTrancheDisbursementCharge()) {
|
||||
loanTrancheDisbursementCharge = new LoanTrancheDisbursementCharge(loanCharge,
|
||||
disbursementDetail);
|
||||
loanCharge.updateLoanTrancheDisbursementCharge(loanTrancheDisbursementCharge);
|
||||
}
|
||||
} else {
|
||||
if (disbursementDetail.expectedDisbursementDateAsLocalDate().equals(expectedDisbursementDate)) {
|
||||
final LoanCharge loanCharge = createNewWithoutLoan(chargeDefinition,
|
||||
disbursementDetail.principal(), amount, chargeTime, chargeCalculation,
|
||||
disbursementDetail.expectedDisbursementDateAsLocalDate(), chargePaymentModeEnum,
|
||||
numberOfRepayments, externalId);
|
||||
loanCharges.add(loanCharge);
|
||||
if (loanCharge.isTrancheDisbursementCharge()) {
|
||||
loanTrancheDisbursementCharge = new LoanTrancheDisbursementCharge(loanCharge,
|
||||
disbursementDetail);
|
||||
loanCharge.updateLoanTrancheDisbursementCharge(loanTrancheDisbursementCharge);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-4
@@ -399,6 +399,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf
|
||||
txnExternalId, loan.getTotalOverpaidAsMoney());
|
||||
disbursementTransaction.updateLoan(loan);
|
||||
loan.addLoanTransaction(disbursementTransaction);
|
||||
loanTransactionRepository.saveAndFlush(disbursementTransaction);
|
||||
}
|
||||
if (loan.getRepaymentScheduleInstallments().isEmpty()) {
|
||||
/*
|
||||
@@ -425,10 +426,6 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf
|
||||
loanAccrualsProcessingService.processIncomePostingAndAccruals(loan);
|
||||
}
|
||||
|
||||
if (disbursementTransaction != null) {
|
||||
loanTransactionRepository.saveAndFlush(disbursementTransaction);
|
||||
}
|
||||
|
||||
if (loan.isAutoRepaymentForDownPaymentEnabled() && !isWithoutAutoPayment) {
|
||||
// updating linked savings account for auto down payment transaction for disbursement to savings account
|
||||
if (isAccountTransfer && loan.shouldCreateStandingInstructionAtDisbursement()) {
|
||||
|
||||
Reference in New Issue
Block a user