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 364794a63..9926093e9 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 @@ -322,6 +322,7 @@ public abstract class ResourceAllocation extends IntraDayDate resultDate, ResourcesPerDay resourcesPerDay, List dayAssignments) { Task task = AllocationsSpecified.this.task; + allocation.setIntendedResourcesPerDay(resourcesPerDay); if (isForwardScheduling()) { allocation.resetAllAllocationAssignmentsTo( dayAssignments, @@ -528,6 +529,9 @@ public abstract class ResourceAllocation extends } protected void updateResourcesPerDay() { + if (!isSatisfied()) { + return; + } ResourcesPerDay resourcesPerDay = calculateResourcesPerDayFromAssignments(getAssignments()); if (resourcesPerDay == null) { this.resourcesPerDay = ResourcesPerDay.amount(0); @@ -540,6 +544,12 @@ public abstract class ResourceAllocation extends this.resourcesPerDay = ResourcesPerDay.amount(amount); } + private void setIntendedResourcesPerDay(ResourcesPerDay resourcesPerDay) { + Validate.notNull(resourcesPerDay); + Validate.isTrue(!resourcesPerDay.isZero()); + this.resourcesPerDay = resourcesPerDay; + } + public ResourceAllocation(Task task) { this(task, null); } @@ -629,6 +639,7 @@ public abstract class ResourceAllocation extends @Override public final void allocate(ResourcesPerDay resourcesPerDay) { Task currentTask = getTask(); + setIntendedResourcesPerDay(resourcesPerDay); List assignmentsCreated = createAssignments(resourcesPerDay, currentTask.getIntraDayStartDate(), currentTask.getIntraDayEndDate()); @@ -645,7 +656,7 @@ public abstract class ResourceAllocation extends assignmentsCreated.addAll(distributeForDay(day.getDate(), durationForDay)); } - return assignmentsCreated; + return onlyNonZeroHours(assignmentsCreated); } @Override