Skip to content

Commit 31de373

Browse files
committed
FINERACT-1597: Allow terminal period slab end values
1 parent 1cdc97a commit 31de373

File tree

4 files changed

+24
-11
lines changed

4 files changed

+24
-11
lines changed

fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChart.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,9 +177,6 @@ public void validateChartSlabs(DataValidatorBuilder baseDataValidator) {
177177

178178
}
179179
}
180-
} else if (iSlabs.slabFields().isNotProperPriodEnd()) {
181-
baseDataValidator.failWithCodeNoParameterAddedToErrorCode("chart.slabs.range.end.incorrect", iSlabs.slabFields().toPeriod(),
182-
iSlabs.slabFields().getAmountRangeTo());
183180
}
184181
}
185182
}

fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabFields.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -247,11 +247,6 @@ public static boolean isNotProperPeriodStart(InterestRateChartSlabFields interes
247247
&& !(interestRateChartSlabFields.fromPeriod.equals(1) || interestRateChartSlabFields.fromPeriod.equals(0));
248248
}
249249

250-
public boolean isNotProperPriodEnd() {
251-
return !(this.toPeriod == null && this.amountRangeTo == null);
252-
253-
}
254-
255250
public boolean isRateChartOverlapping(final InterestRateChartSlabFields that, final boolean isPrimaryGroupingByAmount) {
256251
boolean isPeriodOverLapping = isPeriodOverlapping(that);
257252
boolean isAmountOverLapping = isAmountOverlapping(that);

fineract-savings/src/test/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartValidationTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,15 @@
2020

2121
import static org.junit.jupiter.api.Assertions.assertEquals;
2222
import static org.junit.jupiter.api.Assertions.assertFalse;
23+
import static org.junit.jupiter.api.Assertions.assertTrue;
2324

25+
import java.math.BigDecimal;
26+
import java.time.LocalDate;
2427
import java.util.ArrayList;
2528
import java.util.List;
2629
import org.apache.fineract.infrastructure.core.data.ApiParameterError;
2730
import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder;
31+
import org.apache.fineract.portfolio.savings.SavingsPeriodFrequencyType;
2832
import org.junit.jupiter.api.BeforeEach;
2933
import org.junit.jupiter.api.Test;
3034

@@ -71,4 +75,22 @@ public void testGapBetweenRangesValidation() {
7175
// Check that arguments are present
7276
assertFalse(actualError.getArgs().isEmpty());
7377
}
78+
79+
@Test
80+
public void testSinglePeriodChartSlabWithExplicitEndDoesNotFailValidation() {
81+
InterestRateChartFields chartFields = InterestRateChartFields.createNew("chart", "chart", LocalDate.of(2022, 1, 1),
82+
LocalDate.of(2022, 12, 31), false);
83+
InterestRateChart chart = InterestRateChart.createNew(chartFields, List.of());
84+
85+
InterestRateChartSlabFields slabFields = InterestRateChartSlabFields.createNew("Level 1", SavingsPeriodFrequencyType.MONTHS, 0, 3,
86+
null, null, new BigDecimal("12"), "USD");
87+
InterestRateChartSlab.createNew(slabFields, chart);
88+
89+
DataValidatorBuilder validator = new DataValidatorBuilder(dataValidationErrors).resource("savings.interestRateChart")
90+
.parameter("slabs");
91+
chart.validateChartSlabs(validator);
92+
93+
assertTrue(dataValidationErrors.isEmpty(),
94+
"Expected no validation error for a single well-formed period slab with explicit toPeriod");
95+
}
7496
}

integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsAccountsExternalIdTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
package org.apache.fineract.integrationtests;
2020

2121
import java.math.BigDecimal;
22-
import java.time.LocalDate;
23-
import java.time.ZoneId;
2422
import java.time.format.DateTimeFormatter;
2523
import java.util.UUID;
2624
import org.apache.fineract.client.models.DeleteSavingsAccountsAccountIdResponse;
@@ -33,6 +31,7 @@
3331
import org.apache.fineract.client.models.SavingsAccountData;
3432
import org.apache.fineract.client.util.Calls;
3533
import org.apache.fineract.integrationtests.client.IntegrationTest;
34+
import org.apache.fineract.integrationtests.common.Utils;
3635
import org.apache.fineract.integrationtests.common.savings.SavingsTestLifecycleExtension;
3736
import org.junit.jupiter.api.Order;
3837
import org.junit.jupiter.api.Test;
@@ -48,7 +47,7 @@ public class SavingsAccountsExternalIdTest extends IntegrationTest {
4847
public static final String EXTERNAL_ID = UUID.randomUUID().toString();
4948
private final String dateFormat = "dd MMMM yyyy";
5049
private final String locale = "en";
51-
private final String formattedDate = LocalDate.now(ZoneId.of("UTC")).format(DateTimeFormatter.ofPattern(dateFormat));
50+
private final String formattedDate = Utils.getLocalDateOfTenant().format(DateTimeFormatter.ofPattern(dateFormat));
5251

5352
@Test
5453
@Order(1)

0 commit comments

Comments
 (0)