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 @@