diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderCRUDController.java
index 66be39c5f..ef6a75513 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderCRUDController.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderCRUDController.java
@@ -1105,6 +1105,10 @@ public class OrderCRUDController extends GenericForwardComposer {
Util.reloadBindings(editWindow);
}
+ public void setCodeAutogeneratedInModel(boolean codeAutogenerated) {
+ orderModel.setCodeAutogenerated(codeAutogenerated);
+ }
+
public OrderStatusEnum[] getOrderStatus() {
return OrderStatusEnum.values();
}
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ProjectDetailsController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ProjectDetailsController.java
index fdcfa251e..1a7351a0e 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ProjectDetailsController.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ProjectDetailsController.java
@@ -19,6 +19,8 @@
package org.navalplanner.web.orders;
+import static org.navalplanner.web.I18nHelper._;
+
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -34,8 +36,11 @@ import org.navalplanner.web.planner.tabs.MultipleTabsPlannerController;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.SuspendNotAllowedException;
+import org.zkoss.zk.ui.WrongValueException;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.ComboitemRenderer;
+import org.zkoss.zul.Constraint;
+import org.zkoss.zul.Datebox;
import org.zkoss.zul.Grid;
import org.zkoss.zul.Window;
@@ -64,6 +69,10 @@ public class ProjectDetailsController extends GenericForwardComposer {
private Window window;
+ private Datebox initDate;
+
+ private Datebox deadline;
+
public ProjectDetailsController() {
Window window = (Window) Executions.createComponents(
"/orders/_projectDetails.zul", null,
@@ -128,7 +137,7 @@ public class ProjectDetailsController extends GenericForwardComposer {
}
public void setCodeAutogenerated(boolean codeAutogenerated) {
- orderController.setCodeAutogenerated(codeAutogenerated);
+ orderController.setCodeAutogeneratedInModel(codeAutogenerated);
Util.reloadBindings(gridProjectDetails);
}
@@ -164,4 +173,38 @@ public class ProjectDetailsController extends GenericForwardComposer {
order.setInitDate(new Date());
order.setCalendar(defaultCalendar);
}
+
+ public Constraint checkConstraintFinishDate() {
+ return new Constraint() {
+ @Override
+ public void validate(Component comp, Object value)
+ throws WrongValueException {
+ Date finishDate = (Date) value;
+ if ((finishDate != null) && (initDate.getValue() != null)
+ && (finishDate.compareTo(initDate.getValue()) < 0)) {
+ deadline.setValue(null);
+ getOrder().setDeadline(null);
+ throw new WrongValueException(comp,
+ _("must be greater than start date"));
+ }
+ }
+ };
+ }
+
+ public Constraint checkConstraintStartDate() {
+ return new Constraint() {
+ @Override
+ public void validate(Component comp, Object value)
+ throws WrongValueException {
+ Date startDate = (Date) value;
+ if ((startDate != null) && (deadline.getValue() != null)
+ && (startDate.compareTo(deadline.getValue()) > 0)) {
+ initDate.setValue(null);
+ getOrder().setInitDate(null);
+ throw new WrongValueException(comp,
+ _("must be lower than finish date"));
+ }
+ }
+ };
+ }
}
\ No newline at end of file
diff --git a/navalplanner-webapp/src/main/webapp/orders/_projectDetails.zul b/navalplanner-webapp/src/main/webapp/orders/_projectDetails.zul
index a8fb01991..dcedc70ff 100644
--- a/navalplanner-webapp/src/main/webapp/orders/_projectDetails.zul
+++ b/navalplanner-webapp/src/main/webapp/orders/_projectDetails.zul
@@ -47,11 +47,13 @@
+ value="@{projectController.order.initDate}"
+ constraint = "@{projectController.checkConstraintStartDate}" />
-
+