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 4ec870d9d..fb4e263e0 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 @@ -1211,15 +1211,40 @@ public abstract class ResourceAllocation extends private void updateAssignments(AllocationInterval interval, List assignmentsCreated) { + /* + * removes assignments except those that are consolidated + */ removingAssignments(withoutConsolidated(interval .getAssignmentsOnInterval())); - addingAssignments(assignmentsCreated); + /* + * add the assignments except those that already are consolidated. At + * this moment all the assignments in the interval are consolidated. So + * that it removes the created assignments that have got same date and + * therefore are already added. + */ + addingAssignments(subtractAssignmentsWithSameDate(assignmentsCreated, + interval.getAssignmentsOnInterval())); updateConsolidatedAssignments(interval); updateOriginalTotalAssigment(); updateResourcesPerDay(); } + private Collection subtractAssignmentsWithSameDate( + List assignmentsCreated, + List assignmentsOnInterval) { + List toRemove = new ArrayList(); + for (DayAssignment each : assignmentsOnInterval) { + for (T assignment : assignmentsCreated) { + if (each.getDay().compareTo(assignment.getDay()) == 0) { + toRemove.add(assignment); + } + } + } + assignmentsCreated.removeAll(toRemove); + return assignmentsCreated; + } + private void updateConsolidatedAssignments(AllocationInterval interval) { for (DayAssignment day : interval.getAssignmentsOnInterval()) { day.setConsolidated(false);