diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java index 5ab447170..438809758 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java @@ -490,12 +490,9 @@ public class OrderModel extends IntegrationEntityModel implements IOrderModel { private void dontPoseAsTransientObjectAnymore(OrderElement orderElement) { dontPoseAsTransientObjectAnymore(orderElement.getTaskSourcesFromBottomToTop()); dontPoseAsTransientObjectAnymore(orderElement.getSchedulingDatasForVersionFromBottomToTop()); - Set directAdvanceAssignments = orderElement.getDirectAdvanceAssignments(); - for (DirectAdvanceAssignment directAdvanceAssignment : directAdvanceAssignments) { - directAdvanceAssignment.dontPoseAsTransientObjectAnymore(); - dontPoseAsTransientObjectAnymore(directAdvanceAssignment - .getAdvanceMeasurements()); - } + + dontPoseAsTransientObjectAnymore(orderElement.getDirectAdvanceAssignments()); + dontPoseAsTransientObjectAnymore(getAllMeasurements(orderElement.getDirectAdvanceAssignments())); dontPoseAsTransientObjectAnymore(orderElement .getIndirectAdvanceAssignments()); @@ -503,12 +500,22 @@ public class OrderModel extends IntegrationEntityModel implements IOrderModel { dontPoseAsTransientObjectAnymore(orderElement.getLabels()); dontPoseAsTransientObjectAnymore(orderElement.getTaskElements()); dontPoseAsTransientObjectAnymore(orderElement.getHoursGroups()); + for(OrderElement child : orderElement.getAllChildren()) { child.dontPoseAsTransientObjectAnymore(); dontPoseAsTransientObjectAnymore(child); } } + private List getAllMeasurements( + Collection assignments) { + List result = new ArrayList(); + for (DirectAdvanceAssignment each : assignments) { + result.addAll(each.getAdvanceMeasurements()); + } + return result; + } + private void saveOnTransaction(boolean newOrderVersionNeeded) { Order.checkConstraintOrderUniqueCode(order); HoursGroup.checkConstraintHoursGroupUniqueCode(order);