diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeWritePlatformServiceJpaRepositoryImpl.java index 8ba80717a..b5043fc5a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeWritePlatformServiceJpaRepositoryImpl.java @@ -118,8 +118,19 @@ public class ClientChargeWritePlatformServiceJpaRepositoryImpl implements Client } final ClientCharge clientCharge = ClientCharge.createNew(client, charge, command); - final DateTimeFormatter fmt = DateTimeFormat.forPattern(command.dateFormat()); + final List dataValidationErrors = new ArrayList<>(); + final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors) + .resource(ClientApiConstants.CLIENT_CHARGES_RESOURCE_NAME); + LocalDate activationDate = client.getActivationLocalDate(); + LocalDate dueDate = clientCharge.getDueLocalDate(); + if(dueDate.isBefore(activationDate)){ + baseDataValidator.reset().parameter(ClientApiConstants.dueAsOfDateParamName).value(dueDate.toString(fmt)) + .failWithCodeNoParameterAddedToErrorCode("dueDate.before.activationDate"); + + if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); } + } + validateDueDateOnWorkingDay(clientCharge, fmt); this.clientChargeRepository.saveAndFlush(clientCharge);