diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java index bf41227fc..961fe63cd 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java @@ -328,12 +328,14 @@ public abstract class ResourceAllocation extends Validate.isTrue(startInclusive.compareTo(endExclusive) <= 0, "the end must be equal or posterior than start"); List assignmentsCreated = new ArrayList(); - List days = getDays(startInclusive, endExclusive); - int[] hoursEachDay = hoursDistribution(days, hours); - int i = 0; - for (LocalDate day : getDays(startInclusive, endExclusive)) { - assignmentsCreated.addAll(distributeForDay(day, - hoursEachDay[i++])); + if (hours > 0) { + List days = getDays(startInclusive, endExclusive); + int[] hoursEachDay = hoursDistribution(days, hours); + int i = 0; + for (LocalDate day : getDays(startInclusive, endExclusive)) { + assignmentsCreated.addAll(distributeForDay(day, + hoursEachDay[i++])); + } } removingAssignments(getAssignments(startInclusive, endExclusive)); addingAssignments(assignmentsCreated); diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/SpecificResourceAllocationTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/SpecificResourceAllocationTest.java index 64d5d0528..5f30bf08e 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/SpecificResourceAllocationTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/SpecificResourceAllocationTest.java @@ -220,6 +220,18 @@ public class SpecificResourceAllocationTest { 3, 3)); } + @Test + public void allocatingZeroHoursOnIntervalRemovesThem() { + givenResourceCalendarAlwaysReturning(3); + LocalDate start = new LocalDate(2000, 2, 4); + givenSpecificResourceAllocation(start, 4); + specificResourceAllocation.allocate(ResourcesPerDay.amount(1)); + specificResourceAllocation.onInterval(start, start.plusDays(2)) + .allocateHours(0); + assertThat(specificResourceAllocation.getAssignments(), from(start + .plusDays(2))); + } + @Test public void theResourcesPerDayAreRecalculatedWhenAllocationHoursOnInterval() { givenResourceCalendarAlwaysReturning(3);