diff --git a/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiResourceSwagger.java b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiResourceSwagger.java index d9745ded2..c00b592fb 100644 --- a/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiResourceSwagger.java +++ b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiResourceSwagger.java @@ -157,6 +157,48 @@ final class ChargesApiResourceSwagger { @Schema(example = "Loan service fee(changed)") public String name; + @Schema(example = "1") + public Integer chargeAppliesTo; + @Schema(example = "USD") + public String currencyCode; + @Schema(example = "en") + public String locale; + @Schema(example = "230.56") + public Double amount; + @Schema(example = "1") + public Integer chargeTimeType; + @Schema(example = "1") + public Integer chargeCalculationType; + @Schema(example = "1") + public Integer chargePaymentMode; + @Schema(example = "true") + public boolean active; + @Schema(example = "false") + public boolean penalty; + @Schema(example = "dd MMMM") + public String monthDayFormat; + @Schema(example = "01 March") + public String feeOnMonthDay; + @Schema(example = "1") + public Integer feeInterval; + @Schema(example = "1") + public String feeFrequency; + @Schema(example = "1") + public Integer freeWithdrawalFrequency; + @Schema(example = "10") + public Integer restartCountFrequency; + @Schema(example = "1") + public Integer countFrequencyType; + @Schema(example = "true") + public boolean enableFreeWithdrawalCharge; + @Schema(example = "true") + public boolean enablePaymentType; + @Schema(example = "1") + public Long paymentTypeId; + @Schema(example = "10.0") + public Double minCap; + @Schema(example = "120.0") + public Double maxCap; } @Schema(description = "PutChargesChargeIdResponse") diff --git a/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationType.java b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationType.java index c5b17c36f..54092548b 100644 --- a/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationType.java +++ b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationType.java @@ -24,8 +24,8 @@ public enum ChargeCalculationType { FLAT(1, "chargeCalculationType.flat"), // PERCENT_OF_AMOUNT(2, "chargeCalculationType.percent.of.amount"), // PERCENT_OF_AMOUNT_AND_INTEREST(3, "chargeCalculationType.percent.of.amount.and.interest"), // - PERCENT_OF_INTEREST(4, "chargeCalculationType.percent.of.interest"), PERCENT_OF_DISBURSEMENT_AMOUNT(5, - "chargeCalculationType.percent.of.disbursement.amount"); + PERCENT_OF_INTEREST(4, "chargeCalculationType.percent.of.interest"), // + PERCENT_OF_DISBURSEMENT_AMOUNT(5, "chargeCalculationType.percent.of.disbursement.amount"); private final Integer value; private final String code; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java index abf89be14..e41fc9f64 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java @@ -307,7 +307,8 @@ public class LoanTransaction extends AbstractAuditableWithUTCDateTimeCustom loanIdRef = new AtomicReference<>(); + + final PostLoanProductsResponse loanProductsResponse = loanProductHelper.createLoanProduct(create4IProgressive()); + + final PostChargesResponse disbCharge = chargesHelper.createCharges(new ChargeRequest().active(true).chargeAppliesTo(1) + .chargeCalculationType(1).chargePaymentMode(0).chargeTimeType(1).currencyCode("EUR").amount(10.0d) + .name(Utils.randomStringGenerator("FEE_" + Calendar.getInstance().getTimeInMillis(), 5)).locale("en")); + + runAt("01 January 2025", () -> { + Long loanId = applyAndApproveProgressiveLoan(client.getClientId(), loanProductsResponse.getResourceId(), "01 January 2025", + 430.0, 7.0, 6, l -> l.setCharges( + List.of(new PostLoansRequestChargeData().chargeId(disbCharge.getResourceId()).amount(new BigDecimal("10.0"))))); + + loanIdRef.set(loanId); + + disburseLoan(loanId, BigDecimal.valueOf(430), "01 January 2025"); + verifyRepaymentSchedule(loanId, installment(430.0, 0.0, 10.0, 0, null, "01 January 2025"), // + installment(70.63, 2.51, 73.14, false, "01 February 2025"), // + installment(71.04, 2.1, 73.14, false, "01 March 2025"), // + installment(71.46, 1.68, 73.14, false, "01 April 2025"), // + installment(71.87, 1.27, 73.14, false, "01 May 2025"), // + installment(72.29, 0.85, 73.14, false, "01 June 2025"), // + installment(72.71, 0.42, 73.13, false, "01 July 2025")); + Assertions.assertDoesNotThrow(() -> loanTransactionHelper.undoDisbursalLoan(loanId, new PostLoansLoanIdRequest())); + }); + } +}