diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/collectionsheet/CollectionSheetConstants.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/collectionsheet/CollectionSheetConstants.java index 037eef161..cc94f9628 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/collectionsheet/CollectionSheetConstants.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/collectionsheet/CollectionSheetConstants.java @@ -27,6 +27,7 @@ public class CollectionSheetConstants { public static final String calendarIdParamName = "calendarId"; public static final String officeIdParamName = "officeId"; public static final String staffIdParamName = "staffId"; + public static final String isTransactionDateOnNonMeetingDateParamName = "isTransactionDateOnNonMeetingDate"; // attendance parameters public static final String clientsAttendanceParamName = "clientsAttendance"; @@ -43,7 +44,7 @@ public class CollectionSheetConstants { bulkSavingsDueTransactionsParamName, PaymentDetailConstants.paymentTypeParamName, PaymentDetailConstants.accountNumberParamName, PaymentDetailConstants.checkNumberParamName, PaymentDetailConstants.routingCodeParamName, PaymentDetailConstants.receiptNumberParamName, - PaymentDetailConstants.bankNumberParamName)); + PaymentDetailConstants.bankNumberParamName, isTransactionDateOnNonMeetingDateParamName)); public static final Set INDIVIDUAL_COLLECTIONSHEET_REQUEST_DATA_PARAMETERS = new HashSet<>(Arrays.asList(localeParamName, dateFormatParamName, transactionDateParamName, actualDisbursementDateParamName, bulkRepaymentTransactionsParamName, diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/meeting/domain/Meeting.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/meeting/domain/Meeting.java index 5fd212494..c73cb76b0 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/meeting/domain/Meeting.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/meeting/domain/Meeting.java @@ -65,9 +65,9 @@ public class Meeting extends AbstractPersistable { this.meetingDate = meetingDate; } - public static Meeting createNew(final CalendarInstance calendarInstance, final Date meetingDate) { - - if (!isValidMeetingDate(calendarInstance, meetingDate)) { throw new NotValidRecurringDateException("meeting", "The date '" + public static Meeting createNew(final CalendarInstance calendarInstance, final Date meetingDate, Boolean isTransactionDateOnNonMeetingDate) { + + if (!isTransactionDateOnNonMeetingDate && !isValidMeetingDate(calendarInstance, meetingDate)) { throw new NotValidRecurringDateException("meeting", "The date '" + meetingDate + "' is not a valid meeting date.", meetingDate); } return new Meeting(calendarInstance, meetingDate); } diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/meeting/service/MeetingWritePlatformServiceJpaRepositoryImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/meeting/service/MeetingWritePlatformServiceJpaRepositoryImpl.java index c3243da4d..8aea9ed19 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/meeting/service/MeetingWritePlatformServiceJpaRepositoryImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/meeting/service/MeetingWritePlatformServiceJpaRepositoryImpl.java @@ -11,6 +11,7 @@ import static org.mifosplatform.portfolio.meeting.MeetingApiConstants.calendarId import static org.mifosplatform.portfolio.meeting.MeetingApiConstants.clientIdParamName; import static org.mifosplatform.portfolio.meeting.MeetingApiConstants.clientsAttendanceParamName; import static org.mifosplatform.portfolio.meeting.MeetingApiConstants.meetingDateParamName; +import static org.mifosplatform.portfolio.collectionsheet.CollectionSheetConstants.isTransactionDateOnNonMeetingDateParamName; import java.util.ArrayList; import java.util.Collection; @@ -81,11 +82,12 @@ public class MeetingWritePlatformServiceJpaRepositoryImpl implements MeetingWrit this.meetingDataValidator.validateForCreate(command); final Date meetingDate = command.DateValueOfParameterNamed(meetingDateParamName); + final Boolean isTransactionDateOnNonMeetingDate = false; try { final CalendarInstance calendarInstance = getCalendarInstance(command); // create new meeting - final Meeting newMeeting = Meeting.createNew(calendarInstance, meetingDate); + final Meeting newMeeting = Meeting.createNew(calendarInstance, meetingDate, isTransactionDateOnNonMeetingDate); final Collection clientsAttendance = getClientsAttendance(newMeeting, command); if (clientsAttendance != null && !clientsAttendance.isEmpty()) { @@ -261,13 +263,14 @@ public class MeetingWritePlatformServiceJpaRepositoryImpl implements MeetingWrit @Override public void updateCollectionSheetAttendance(final JsonCommand command) { final Date meetingDate = command.DateValueOfParameterNamed(transactionDateParamName); + final Boolean isTransactionDateOnNonMeetingDate = command.booleanPrimitiveValueOfParameterNamed(isTransactionDateOnNonMeetingDateParamName); try { final CalendarInstance calendarInstance = getCalendarInstance(command); final Meeting meeting = this.meetingRepository.findByCalendarInstanceIdAndMeetingDate(calendarInstance.getId(), meetingDate); // create new meeting - final Meeting newMeeting = (meeting != null) ? meeting : Meeting.createNew(calendarInstance, meetingDate); + final Meeting newMeeting = (meeting != null) ? meeting : Meeting.createNew(calendarInstance, meetingDate, isTransactionDateOnNonMeetingDate); final Collection clientsAttendance = getClientsAttendance(newMeeting, command); if (clientsAttendance != null && !clientsAttendance.isEmpty()) {