diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java index f03ce6971..f6d22011c 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java @@ -1376,4 +1376,16 @@ public abstract class OrderElement extends IntegrationEntity implements return true; } + public void removeDirectAdvancesInList( + Set directAdvanceAssignments) { + for (DirectAdvanceAssignment each : directAdvanceAssignments) { + removeAdvanceAssignment(getAdvanceAssignmentByType(each + .getAdvanceType())); + } + + for (OrderElement each : getChildren()) { + each.removeDirectAdvancesInList(directAdvanceAssignments); + } + } + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java index 288e3f97c..f9a684611 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java @@ -244,25 +244,15 @@ public class OrderLineGroup extends OrderElement implements } private void addIndirectAdvanceAssignments(OrderElement orderElement) { - Set toRemove = new HashSet(); + orderElement.removeDirectAdvancesInList(directAdvanceAssignments); for (DirectAdvanceAssignment directAdvanceAssignment : orderElement.directAdvanceAssignments) { - if (getDirectAdvanceAssignmentByType(directAdvanceAssignment - .getAdvanceType()) != null) { - toRemove.add(directAdvanceAssignment); - } else { - IndirectAdvanceAssignment indirectAdvanceAssignment = IndirectAdvanceAssignment - .create(); - indirectAdvanceAssignment - .setAdvanceType(directAdvanceAssignment - .getAdvanceType()); - indirectAdvanceAssignment.setOrderElement(this); - this.addIndirectAdvanceAssignment(indirectAdvanceAssignment); - } - } - - for (AdvanceAssignment each : toRemove) { - orderElement.removeAdvanceAssignment(each); + IndirectAdvanceAssignment indirectAdvanceAssignment = IndirectAdvanceAssignment + .create(); + indirectAdvanceAssignment.setAdvanceType(directAdvanceAssignment + .getAdvanceType()); + indirectAdvanceAssignment.setOrderElement(this); + this.addIndirectAdvanceAssignment(indirectAdvanceAssignment); } if (orderElement instanceof OrderLineGroup) {