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 fc7ad4ed8..1a9b46676 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 @@ -836,6 +836,14 @@ public abstract class ResourceAllocation extends return Collections.unmodifiableSet(derivedAllocations); } + public LocalDate getStartConsideringAssignments() { + List assignments = getAssignments(); + if (assignments.isEmpty()) { + return getStartDate(); + } + return assignments.get(0).getDay(); + } + public LocalDate getStartDate() { return LocalDate.fromDateFields(task.getStartDate()); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AdvancedAllocationController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AdvancedAllocationController.java index 147f5a879..fb273dfea 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AdvancedAllocationController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AdvancedAllocationController.java @@ -139,12 +139,24 @@ public class AdvancedAllocationController extends GenericForwardComposer { return new Interval(task.getStartDate(), task .getEndDate()); } else { - LocalDate start = all.get(0).getStartDate(); - LocalDate end = getEnd(all); + LocalDate start = min(all.get(0) + .getStartConsideringAssignments(), all.get(0) + .getStartDate()); + LocalDate taskEndDate = LocalDate.fromDateFields(task + .getEndDate()); + LocalDate end = max(getEnd(all), taskEndDate); return new Interval(asDate(start), asDate(end)); } } + private LocalDate min(LocalDate... dates) { + return Collections.min(Arrays.asList(dates), null); + } + + private LocalDate max(LocalDate... dates) { + return Collections.max(Arrays.asList(dates), null); + } + private static LocalDate getEnd(List> all) { ArrayList> reversed = reverse(all); LocalDate end = reversed.get(0).getEndDate();