diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/BaseCalendar.java b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/BaseCalendar.java index dd5a86db2..dee0d99b1 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/BaseCalendar.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/BaseCalendar.java @@ -808,9 +808,13 @@ public class BaseCalendar extends IntegrationEntity implements ICalendar { return calendarDataVersions.get(calendarDataVersions.size() - 1); } - public boolean onlyGivesZeroHours(Days each) { - CalendarData last = lastCalendarData(); - return last.isEmptyFor(each); + public boolean onlyGivesZeroHours(Days day) { + for (CalendarData each : calendarDataVersions) { + if (!each.isEmptyFor(day)) { + return false; + } + } + return true; } @Override @@ -1015,4 +1019,16 @@ public class BaseCalendar extends IntegrationEntity implements ICalendar { return lastSequenceCode; } + @AssertTrue(message = "calendars with zero hours are not allowed") + public boolean checkConstraintZeroHours() { + if ((calendarDataVersions != null) && (!calendarDataVersions.isEmpty())) { + for (CalendarData each : calendarDataVersions) { + if (!each.isEmpty()) { + return true; + } + } + } + return false; + } + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/CalendarData.java b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/CalendarData.java index bfb53e588..db690d715 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/CalendarData.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/CalendarData.java @@ -196,8 +196,15 @@ public class CalendarData extends IntegrationEntity { } boolean isEmptyFor(Days day) { - return !isDefault(day) && getCapacityOn(day).isZero() || isDefault(day) - && hasParent() && getParent().onlyGivesZeroHours(day); + if (isDefault(day)) { + if (hasParent()) { + return getParent().onlyGivesZeroHours(day); + } else { + return true; + } + } else { + return getCapacityOn(day).isZero(); + } } private boolean hasParent() {