From 2b9a7ec6fc1a4574ca717f9799ec6e2a4e6600e5 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Tue, 27 Dec 2011 11:20:39 +0100 Subject: [PATCH] [Bug #1307] Prevent add progress measurement before consolidated day in any parent FEA: ItEr75S04BugFixing --- .../ManageOrderElementAdvancesController.java | 14 ++++++++------ .../ManageOrderElementAdvancesModel.java | 19 +++++++++++-------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/ManageOrderElementAdvancesController.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/ManageOrderElementAdvancesController.java index 07a9156d1..6fbad920e 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/ManageOrderElementAdvancesController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/ManageOrderElementAdvancesController.java @@ -1296,12 +1296,14 @@ public class ManageOrderElementAdvancesController extends } } - LocalDate consolidatedUntil = manageOrderElementAdvancesModel - .getLastConsolidatedMeasurementDate(measurement - .getAdvanceAssignment()); - if (consolidatedUntil != null) { - if (consolidatedUntil.compareTo(measurement.getDate()) >= 0) { - return _("Date is not valid, it must be greater than the last progress consolidation"); + if (!isReadOnlyAdvanceMeasurements()) { + LocalDate consolidatedUntil = manageOrderElementAdvancesModel + .getLastConsolidatedMeasurementDate(measurement + .getAdvanceAssignment()); + if (consolidatedUntil != null) { + if (consolidatedUntil.compareTo(measurement.getDate()) >= 0) { + return _("Date is not valid, it must be greater than the last progress consolidation"); + } } } 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 772d487b0..d6cd14a1d 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 @@ -803,14 +803,17 @@ public class ManageOrderElementAdvancesModel implements public LocalDate getLastConsolidatedMeasurementDate( AdvanceAssignment advance) { List consolidations = new ArrayList(); - if (advance instanceof DirectAdvanceAssignment) { - Set nonCalculatedConsolidations = ((DirectAdvanceAssignment) advance) - .getNonCalculatedConsolidation(); - consolidations.addAll(nonCalculatedConsolidations); - } else { - Set calculatedConsolidations = ((IndirectAdvanceAssignment) advance) - .getCalculatedConsolidation(); - consolidations.addAll(calculatedConsolidations); + + Set nonCalculatedConsolidations = ((DirectAdvanceAssignment) advance) + .getNonCalculatedConsolidation(); + consolidations.addAll(nonCalculatedConsolidations); + + if (consolidations.isEmpty()) { + Set indirects = getSpreadIndirectAdvanceAssignmentWithSameType( + orderElement, advance); + for (IndirectAdvanceAssignment indirect : indirects) { + consolidations.addAll(indirect.getCalculatedConsolidation()); + } } if (consolidations.isEmpty()) {