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}">