diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/ManageOrderElementAdvancesModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/ManageOrderElementAdvancesModel.java index a642c0fb5..772d487b0 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/ManageOrderElementAdvancesModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/ManageOrderElementAdvancesModel.java @@ -736,17 +736,9 @@ public class ManageOrderElementAdvancesModel implements AdvanceMeasurement advanceMeasurement) { AdvanceAssignment advance = advanceMeasurement.getAdvanceAssignment(); if ((orderElement != null) && (orderElement.getParent() != null) && (advance instanceof DirectAdvanceAssignment)) { - - List types = new ArrayList(); - - types.add(advance.getAdvanceType().getUnitName()); - if (advance.getReportGlobalAdvance()) { - types.add(PredefinedAdvancedTypes.CHILDREN.getTypeName()); - } - orderElementDAO.reattach(orderElement); Set indirects = getSpreadIndirectAdvanceAssignmentWithSameType( - orderElement, types); + orderElement, advance); for (IndirectAdvanceAssignment indirect : indirects) { if (findConsolidatedAdvance(indirect @@ -759,8 +751,20 @@ public class ManageOrderElementAdvancesModel implements } private Set getSpreadIndirectAdvanceAssignmentWithSameType( - OrderElement orderElement, List types) { + OrderElement orderElement, AdvanceAssignment advance) { + List types = new ArrayList(); + types.add(advance.getAdvanceType().getUnitName()); + if (advance.getReportGlobalAdvance()) { + types.add(PredefinedAdvancedTypes.CHILDREN.getTypeName()); + } + + return getSpreadIndirectAdvanceAssignmentWithSameType(orderElement, + types); + } + + private Set getSpreadIndirectAdvanceAssignmentWithSameType( + OrderElement orderElement, List types) { Set result = new HashSet(); for (IndirectAdvanceAssignment indirect : orderElement