diff --git a/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderElementTemplate.java b/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderElementTemplate.java index cb1002bc6..f7d080ec4 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderElementTemplate.java +++ b/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderElementTemplate.java @@ -587,4 +587,6 @@ public abstract class OrderElementTemplate extends BaseEntity implements public abstract BigDecimal getBudget(); + public abstract boolean isOrderTemplate(); + } diff --git a/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderLineGroupTemplate.java b/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderLineGroupTemplate.java index fefdfe617..cf8b62b7d 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderLineGroupTemplate.java +++ b/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderLineGroupTemplate.java @@ -286,4 +286,9 @@ public class OrderLineGroupTemplate extends OrderElementTemplate implements return budget; } + @Override + public boolean isOrderTemplate() { + return false; + } + } diff --git a/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderLineTemplate.java b/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderLineTemplate.java index 4242f5893..5f1eccd29 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderLineTemplate.java +++ b/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderLineTemplate.java @@ -237,4 +237,9 @@ public class OrderLineTemplate extends OrderElementTemplate { return budget; } + @Override + public boolean isOrderTemplate() { + return false; + } + } diff --git a/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderTemplate.java b/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderTemplate.java index 475fec24d..f086b3b7a 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderTemplate.java +++ b/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderTemplate.java @@ -22,10 +22,7 @@ package org.libreplan.business.templates.entities; import static org.libreplan.business.i18n.I18nHelper._; -import java.util.Date; - import org.hibernate.validator.NotNull; -import org.joda.time.LocalDate; import org.libreplan.business.calendars.entities.BaseCalendar; import org.libreplan.business.orders.entities.Order; import org.libreplan.business.orders.entities.OrderElement; @@ -45,7 +42,6 @@ public class OrderTemplate extends OrderLineGroupTemplate { return create(beingBuilt, order); } - @NotNull(message = "project calendar not specified") private BaseCalendar calendar; @Override @@ -68,4 +64,18 @@ public class OrderTemplate extends OrderLineGroupTemplate { return _("Project"); } + public void setCalendar(BaseCalendar calendar) { + this.calendar = calendar; + } + + @NotNull(message = "template calendar not specified") + public BaseCalendar getCalendar() { + return calendar; + } + + @Override + public boolean isOrderTemplate() { + return true; + } + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/templates/OrderTemplatesController.java b/libreplan-webapp/src/main/java/org/libreplan/web/templates/OrderTemplatesController.java index de16a63f1..351a7af09 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/templates/OrderTemplatesController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/templates/OrderTemplatesController.java @@ -29,9 +29,11 @@ import javax.annotation.Resource; import org.apache.commons.logging.LogFactory; import org.hibernate.validator.InvalidValue; +import org.libreplan.business.calendars.entities.BaseCalendar; import org.libreplan.business.common.exceptions.ValidationException; import org.libreplan.business.orders.entities.OrderElement; import org.libreplan.business.templates.entities.OrderElementTemplate; +import org.libreplan.business.templates.entities.OrderTemplate; import org.libreplan.web.common.ConstraintChecker; import org.libreplan.web.common.IMessagesForUser; import org.libreplan.web.common.Level; @@ -261,6 +263,13 @@ public class OrderTemplatesController extends GenericForwardComposer implements showInvalidWorkReportTypeName(); return false; } + if (model.getTemplate().isOrderTemplate()) { + OrderTemplate orderTemplate = (OrderTemplate) model.getTemplate(); + if (orderTemplate.getCalendar() == null) { + throw new WrongValueException(editWindow.getFellow("calendar"), + _("calendar not specified")); + } + } return true; } @@ -412,4 +421,24 @@ public class OrderTemplatesController extends GenericForwardComposer implements return Util.getMoneyFormat(); } + public boolean isOrderTemplate() { + if (model.getTemplate() == null) { + return false; + } + return model.getTemplate().isOrderTemplate(); + } + + public BaseCalendar getCalendar() { + if (isOrderTemplate()) { + return ((OrderTemplate) model.getTemplate()).getCalendar(); + } + return null; + } + + public void setCalendar(BaseCalendar calendar) { + if (isOrderTemplate()) { + ((OrderTemplate) model.getTemplate()).setCalendar(calendar); + } + } + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/templates/OrderTemplatesModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/templates/OrderTemplatesModel.java index 95bd144b7..607ef25e6 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/templates/OrderTemplatesModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/templates/OrderTemplatesModel.java @@ -52,6 +52,7 @@ import org.libreplan.business.scenarios.IScenarioManager; import org.libreplan.business.scenarios.entities.Scenario; import org.libreplan.business.templates.daos.IOrderElementTemplateDAO; import org.libreplan.business.templates.entities.OrderElementTemplate; +import org.libreplan.business.templates.entities.OrderTemplate; import org.libreplan.web.common.concurrentdetection.OnConcurrentModification; import org.libreplan.web.orders.QualityFormsOnConversation; import org.libreplan.web.orders.labels.LabelsOnConversation; @@ -191,6 +192,7 @@ public class OrderTemplatesModel implements IOrderTemplatesModel { } private void loadAssociatedData(OrderElementTemplate template) { + loadCalendar(template); loadAdvanceAssignments(template); loadQualityForms(template); loadLabels(template); @@ -198,6 +200,13 @@ public class OrderTemplatesModel implements IOrderTemplatesModel { getOrderElementsOnConversation().initialize(template); } + private void loadCalendar(OrderElementTemplate template) { + if (template.isOrderTemplate()) { + OrderTemplate orderTemplate = (OrderTemplate) template; + orderTemplate.getCalendar().getName(); + } + } + private static void loadCriterionRequirements(OrderElementTemplate orderElement) { orderElement.getHoursGroups().size(); for (HoursGroup hoursGroup : orderElement.getHoursGroups()) { diff --git a/libreplan-webapp/src/main/webapp/templates/_editTemplate.zul b/libreplan-webapp/src/main/webapp/templates/_editTemplate.zul index 497f4f031..250a8e1ff 100644 --- a/libreplan-webapp/src/main/webapp/templates/_editTemplate.zul +++ b/libreplan-webapp/src/main/webapp/templates/_editTemplate.zul @@ -86,6 +86,12 @@ constraint="no negative:${i18n:_('Budget value cannot be negative')}" format="@{templatesForOrdersController.moneyFormat}" /> + +