Validating Expected disbursal date for holiday or nonworking day
This commit is contained in:
+2
-2
@@ -15,8 +15,8 @@ import org.springframework.data.repository.query.Param;
|
|||||||
|
|
||||||
public interface HolidayRepository extends JpaRepository<Holiday, Long>,
|
public interface HolidayRepository extends JpaRepository<Holiday, Long>,
|
||||||
JpaSpecificationExecutor<Holiday> {
|
JpaSpecificationExecutor<Holiday> {
|
||||||
@Query("select holiday from Holiday holiday, IN(holiday.offices) office where holiday.fromDate >= :fromDate and office.id = :officeId")
|
@Query("select holiday from Holiday holiday, IN(holiday.offices) office where (holiday.fromDate >= :date OR :date <= holiday.toDate) and office.id = :officeId")
|
||||||
List<Holiday> findByOfficeIdAndGreaterThanDate(@Param("officeId") Long officeId, @Param("fromDate") Date fromDate);
|
List<Holiday> findByOfficeIdAndGreaterThanDate(@Param("officeId") Long officeId, @Param("date") Date date);
|
||||||
|
|
||||||
@Query("from Holiday holiday where holiday.processed = false")
|
@Query("from Holiday holiday where holiday.processed = false")
|
||||||
List<Holiday> findUnprocessed();
|
List<Holiday> findUnprocessed();
|
||||||
|
|||||||
+8
@@ -2509,4 +2509,12 @@ public class Loan extends AbstractPersistable<Long> {
|
|||||||
return this.termPeriodFrequencyType;
|
return this.termPeriodFrequencyType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void validateExpectedDisbursementForHolidayAndNonWorkingDay(WorkingDays workingDays, boolean isHolidayEnabled,
|
||||||
|
List<Holiday> holidays) {
|
||||||
|
// validate if disbursement date is a holiday or a non-working day
|
||||||
|
validateDisbursementDateIsOnNonWorkingDay(workingDays);
|
||||||
|
validateDisbursementDateIsOnHoliday(isHolidayEnabled, holidays);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+4
-2
@@ -224,6 +224,10 @@ public class LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa
|
|||||||
final Map<String, Object> changes = existingLoanApplication.loanApplicationModification(command, possiblyModifedLoanCharges,
|
final Map<String, Object> changes = existingLoanApplication.loanApplicationModification(command, possiblyModifedLoanCharges,
|
||||||
possiblyModifedLoanCollateralItems, this.aprCalculator);
|
possiblyModifedLoanCollateralItems, this.aprCalculator);
|
||||||
|
|
||||||
|
if (changes.containsKey("expectedDisbursementDate")) {
|
||||||
|
this.loanAssembler.validateExpectedDisbursementForHolidayAndNonWorkingDay(existingLoanApplication);
|
||||||
|
}
|
||||||
|
|
||||||
final String clientIdParamName = "clientId";
|
final String clientIdParamName = "clientId";
|
||||||
if (changes.containsKey(clientIdParamName)) {
|
if (changes.containsKey(clientIdParamName)) {
|
||||||
final Long clientId = command.longValueOfParameterNamed(clientIdParamName);
|
final Long clientId = command.longValueOfParameterNamed(clientIdParamName);
|
||||||
@@ -245,8 +249,6 @@ public class LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa
|
|||||||
}
|
}
|
||||||
|
|
||||||
validateSubmittedOnDate(existingLoanApplication);
|
validateSubmittedOnDate(existingLoanApplication);
|
||||||
// validate min and maximum constraints
|
|
||||||
this.fromApiJsonDeserializer.validateForModify(command.json());
|
|
||||||
final LoanProductRelatedDetail productRelatedDetail = existingLoanApplication.repaymentScheduleDetail();
|
final LoanProductRelatedDetail productRelatedDetail = existingLoanApplication.repaymentScheduleDetail();
|
||||||
this.fromApiJsonDeserializer.validateLoanTermAndRepaidEveryValues(existingLoanApplication.getTermFrequency(), existingLoanApplication.getTermPeriodFrequencyType(),
|
this.fromApiJsonDeserializer.validateLoanTermAndRepaidEveryValues(existingLoanApplication.getTermFrequency(), existingLoanApplication.getTermPeriodFrequencyType(),
|
||||||
productRelatedDetail.getNumberOfRepayments(), productRelatedDetail.getRepayEvery(),
|
productRelatedDetail.getNumberOfRepayments(), productRelatedDetail.getRepayEvery(),
|
||||||
|
|||||||
+11
-1
@@ -22,8 +22,8 @@ import org.mifosplatform.organisation.staff.domain.Staff;
|
|||||||
import org.mifosplatform.organisation.staff.domain.StaffRepository;
|
import org.mifosplatform.organisation.staff.domain.StaffRepository;
|
||||||
import org.mifosplatform.organisation.staff.exception.StaffNotFoundException;
|
import org.mifosplatform.organisation.staff.exception.StaffNotFoundException;
|
||||||
import org.mifosplatform.organisation.staff.exception.StaffRoleException;
|
import org.mifosplatform.organisation.staff.exception.StaffRoleException;
|
||||||
import org.mifosplatform.organisation.workingdays.domain.WorkingDaysRepositoryWrapper;
|
|
||||||
import org.mifosplatform.organisation.workingdays.domain.WorkingDays;
|
import org.mifosplatform.organisation.workingdays.domain.WorkingDays;
|
||||||
|
import org.mifosplatform.organisation.workingdays.domain.WorkingDaysRepositoryWrapper;
|
||||||
import org.mifosplatform.portfolio.client.domain.Client;
|
import org.mifosplatform.portfolio.client.domain.Client;
|
||||||
import org.mifosplatform.portfolio.client.domain.ClientRepositoryWrapper;
|
import org.mifosplatform.portfolio.client.domain.ClientRepositoryWrapper;
|
||||||
import org.mifosplatform.portfolio.collateral.domain.LoanCollateral;
|
import org.mifosplatform.portfolio.collateral.domain.LoanCollateral;
|
||||||
@@ -238,4 +238,14 @@ public class LoanAssembler {
|
|||||||
}
|
}
|
||||||
return strategy;
|
return strategy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void validateExpectedDisbursementForHolidayAndNonWorkingDay(final Loan loanApplication) {
|
||||||
|
|
||||||
|
final boolean isHolidayEnabled = this.configurationDomainService.isRescheduleRepaymentsOnHolidaysEnabled();
|
||||||
|
final List<Holiday> holidays = this.holidayRepository.findByOfficeIdAndGreaterThanDate(loanApplication.getOfficeId(),
|
||||||
|
loanApplication.getExpectedDisbursedOnLocalDate().toDate());
|
||||||
|
final WorkingDays workingDays = this.workingDaysRepository.findOne();
|
||||||
|
|
||||||
|
loanApplication.validateExpectedDisbursementForHolidayAndNonWorkingDay(workingDays,isHolidayEnabled,holidays);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user