From 4561821b1aa7df3c064bf809e87c598b34857722 Mon Sep 17 00:00:00 2001 From: Susana Montes Pedreira Date: Fri, 21 May 2010 08:29:56 +0200 Subject: [PATCH] ItEr58S17AsignacionConsolidacion: adds constraints to the advance consolidation. the advance consolidation is read only if the task has got some limiting resources allocations. it can not consolidate advances if the task is subcontrated or if the task has not got any resources allocations. --- .../ResourceAllocationController.java | 10 ++++++++ .../AdvanceConsolidationController.java | 7 ++++++ .../AdvanceConsolidationDTO.java | 15 ++++++++++-- .../AdvanceConsolidationModel.java | 24 ++++++++++++++++++- .../IAdvanceConsolidationModel.java | 4 ++++ .../main/webapp/common/css/navalplan_zk.css | 3 +++ .../src/main/webapp/planner/order.zul | 3 ++- 7 files changed, 62 insertions(+), 4 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationController.java index 411360837..363408d96 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationController.java @@ -330,6 +330,7 @@ public class ResourceAllocationController extends GenericForwardComposer { tbResourceAllocation.setSelected(true); newAllocationSelector.clearAll(); Util.reloadBindings(allocationsGrid); + reloadAdvanceConsolidationTab(); } } @@ -664,6 +665,7 @@ public class ResourceAllocationController extends GenericForwardComposer { private void removeAllocation(AllocationRow row) { allocationRows.remove(row); Util.reloadBindings(allocationsGrid); + reloadAdvanceConsolidationTab(); } private Button appendDeleteButton(Row row) { @@ -701,4 +703,12 @@ public class ResourceAllocationController extends GenericForwardComposer { resourceAllocationModel.setStartDate(date); } + public boolean hasResourceAllocations() { + return ((getResourceAllocations().size() > 1)); + } + + private void reloadAdvanceConsolidationTab() { + Util.reloadBindings(editTaskWindow + .getFellowIfAny("advanceConsolidationTab")); + } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationController.java index 1417381e6..f2a68945e 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationController.java @@ -106,6 +106,7 @@ public class AdvanceConsolidationController extends GenericForwardComposer { public void reloadAdvanceGrid() { advanceConsolidationModel.initLastConsolidatedDate(); + advanceConsolidationModel.setReadOnlyConsolidations(); Util.reloadBindings(advancesGrid); } @@ -121,4 +122,10 @@ public class AdvanceConsolidationController extends GenericForwardComposer { return advanceConsolidationModel.infoMessages(); } + public String getReadOnlySclass() { + if (advanceConsolidationModel.hasLimitingResourceAllocation()) { + return "readonly"; + } + return ""; + } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationDTO.java index 0cc814cb6..f6a4bb0c6 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationDTO.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationDTO.java @@ -40,6 +40,8 @@ public class AdvanceConsolidationDTO { public static Date lastConsolidatedAndSavedDate; + private static boolean allReadOnly = false; + private AdvanceMeasurement advanceMeasurement; private ConsolidatedValue consolidatedValue; @@ -138,8 +140,9 @@ public class AdvanceConsolidationDTO { } public Boolean canNotBeConsolidated() { - if ((isConsolidated()) && (consolidatedValue != null) - && (!consolidatedValue.isNewObject())) { + if (isAllReadOnly() + || ((isConsolidated()) && (consolidatedValue != null) && (!consolidatedValue + .isNewObject()))) { return true; } if (lastConsolidatedDate != null) { @@ -172,4 +175,12 @@ public class AdvanceConsolidationDTO { return value; } + public static void setAllReadOnly(boolean allReadOnly) { + AdvanceConsolidationDTO.allReadOnly = allReadOnly; + } + + public static boolean isAllReadOnly() { + return allReadOnly; + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationModel.java index d4600d260..da41a205b 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationModel.java @@ -257,6 +257,7 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel { createAdvanceConsolidationDTOs(); initConsolidatedDates(); addNonConsolidatedAdvances(); + setReadOnlyConsolidations(); } } @@ -330,7 +331,7 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel { @Override public boolean isVisibleMessages() { - return (getAdvances().size() == 0); + return ((getAdvances().size() == 0) || (isSubcontrated()) || (!hasResourceAllocation())); } private boolean advanceIsCalculated(){ @@ -338,6 +339,9 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel { } public String infoMessages() { + if (getAdvances().size() > 0) { + return _("It is not allowed to consolidate advances."); + } return _("There are not any assigned advance to current task"); } @@ -353,4 +357,22 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel { return new ArrayList(); } + private boolean hasResourceAllocation() { + return ((task != null) && (task.hasResourceAllocations())); + } + + private boolean isSubcontrated() { + return ((task != null) && (task.isSubcontracted())); + } + + public boolean hasLimitingResourceAllocation() { + return ((task != null) && (task.hasLimitedResourceAllocation())); + } + + @Override + public void setReadOnlyConsolidations() { + // set all advance consolidations as read only + AdvanceConsolidationDTO.setAllReadOnly(hasLimitingResourceAllocation()); + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/IAdvanceConsolidationModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/IAdvanceConsolidationModel.java index da7c6b65f..a8f3e4a4b 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/IAdvanceConsolidationModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/IAdvanceConsolidationModel.java @@ -41,6 +41,10 @@ public interface IAdvanceConsolidationModel { void initLastConsolidatedDate(); + boolean hasLimitingResourceAllocation(); + + void setReadOnlyConsolidations(); + boolean isVisibleAdvances(); boolean isVisibleMessages(); diff --git a/navalplanner-webapp/src/main/webapp/common/css/navalplan_zk.css b/navalplanner-webapp/src/main/webapp/common/css/navalplan_zk.css index 9b14cf5b8..3dc6efeef 100644 --- a/navalplanner-webapp/src/main/webapp/common/css/navalplan_zk.css +++ b/navalplanner-webapp/src/main/webapp/common/css/navalplan_zk.css @@ -1342,3 +1342,6 @@ tr.z-tree-row-seld .z-row-cnt { background-color: #CCCCCC; } +.readonly .z-grid-body .z-row-inner { + background-color: #CCCCCC; +} diff --git a/navalplanner-webapp/src/main/webapp/planner/order.zul b/navalplanner-webapp/src/main/webapp/planner/order.zul index dbea7e1a7..ab498025e 100644 --- a/navalplanner-webapp/src/main/webapp/planner/order.zul +++ b/navalplanner-webapp/src/main/webapp/planner/order.zul @@ -107,7 +107,8 @@ model="@{advanceController.advances}" mold="paging" pageSize="10" - fixedLayout="true" > + fixedLayout="true" + sclass="@{advanceController.readOnlySclass}">