diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java
index da048bde0..6175d0244 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java
@@ -105,7 +105,9 @@ import org.zkoss.zul.api.Window;
/**
* Controller for CRUD actions
+ *
* @author Óscar González Fernández
+ * @author Lorenzo Tilve Álvaro
*/
@org.springframework.stereotype.Component
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
@@ -944,6 +946,10 @@ public class OrderCRUDController extends GenericForwardComposer {
orderTemplates.goToCreateTemplateFrom(order);
}
+ public void createFromTemplate(OrderTemplate template) {
+ orderModel.prepareCreationFrom(template, getDesktop());
+ }
+
private Runnable onUp;
public void goToEditForm(Order order) {
@@ -1088,18 +1094,14 @@ public class OrderCRUDController extends GenericForwardComposer {
orderModel.prepareForCreate(desktop);
}
- private void editNewCreatedOrder() {
+ public void editNewCreatedOrder(Window detailsWindow) {
showOrderElementFilter();
hideCreateButtons();
prepareEditWindow();
showEditWindow(_("Create project"));
- }
-
- public void editNewCreatedOrder(Window detailsWindow) {
- editNewCreatedOrder();
- // close project details window
detailsWindow.setVisible(false);
setupOrderAuthorizationController();
+ detailsWindow.getAttributes();
saveAndContinue(false);
}
diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderModel.java
index 226f29cb6..d9fddda17 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderModel.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderModel.java
@@ -2,7 +2,8 @@
* This file is part of LibrePlan
*
* Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e
- * Desenvolvemento Tecnolóxico de Galicia
+ * Desenvolvemento Tecnolóxico de Galicia
+ * Copyright (C) 2011 Igalia, S.L.
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License as published by the Free
@@ -396,9 +397,18 @@ public class OrderModel extends IntegrationEntityModel implements IOrderModel {
@Transactional(readOnly = true)
public void prepareCreationFrom(OrderTemplate template, Desktop desktop) {
loadNeededDataForConversation();
- Order order = createOrderFrom((OrderTemplate) templateDAO
+ Order newOrder = createOrderFrom((OrderTemplate) templateDAO
.findExistingEntity(template.getId()));
- planningState = planningStateCreator.createOn(desktop, order);
+ newOrder.setName(getOrder().getName());
+ if (!getOrder().isCodeAutogenerated()) {
+ newOrder.setCodeAutogenerated();
+ newOrder.setCode(getOrder().getCode());
+ }
+
+ newOrder.setCustomer(((Order) getOrder()).getCustomer());
+ newOrder.setCalendar(getCalendar());
+
+ planningState = planningStateCreator.createOn(desktop, newOrder);
forceLoadAdvanceAssignmentsAndMeasurements(planningState.getOrder());
initializeOrder();
}
@@ -455,7 +465,7 @@ public class OrderModel extends IntegrationEntityModel implements IOrderModel {
this.planningState.getSaveCommand().save(beforeSaveActions, null);
}
}
-
+
private void reattachCalendar() {
if (planningState.getOrder().getCalendar() == null) {
return;
diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/ProjectDetailsController.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/ProjectDetailsController.java
index ede55aa1f..07470d39e 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/ProjectDetailsController.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/ProjectDetailsController.java
@@ -2,6 +2,8 @@
* This file is part of LibrePlan
*
* Copyright (C) 2010-2011 Wireless Galicia, S.L.
+ * Copyright (C) 2011 Igalia, S.L.
+
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@@ -30,6 +32,7 @@ import org.apache.commons.logging.LogFactory;
import org.libreplan.business.calendars.entities.BaseCalendar;
import org.libreplan.business.externalcompanies.entities.ExternalCompany;
import org.libreplan.business.orders.entities.Order;
+import org.libreplan.business.templates.entities.OrderTemplate;
import org.libreplan.web.common.ConstraintChecker;
import org.libreplan.web.common.Util;
import org.libreplan.web.common.components.bandboxsearch.BandboxSearch;
@@ -53,7 +56,9 @@ import org.zkoss.zul.Window;
/**
* Controller for the creation of an {@link order} with its principal
* properties.
+ *
* @author Susana Montes Pedreira
+ * @author Lorenzo Tilve Álvaro
*/
public class ProjectDetailsController extends GenericForwardComposer {
@@ -79,6 +84,8 @@ public class ProjectDetailsController extends GenericForwardComposer {
private BandboxSearch bdExternalCompanies;
+ private BandboxSearch bdProjectTemplate;
+
private Textbox txtName;
private Datebox deadline;
@@ -131,6 +138,13 @@ public class ProjectDetailsController extends GenericForwardComposer {
if (tabs != null) {
tabs.goToOrdersList();
}
+
+ if (bdProjectTemplate.getSelectedElement() != null) {
+ OrderTemplate template = (OrderTemplate) bdProjectTemplate
+ .getSelectedElement();
+
+ orderController.createFromTemplate(template);
+ }
orderController.editNewCreatedOrder(window);
}
}
diff --git a/libreplan-webapp/src/main/webapp/orders/_projectDetails.zul b/libreplan-webapp/src/main/webapp/orders/_projectDetails.zul
index 8cf69c6d2..b6792890e 100644
--- a/libreplan-webapp/src/main/webapp/orders/_projectDetails.zul
+++ b/libreplan-webapp/src/main/webapp/orders/_projectDetails.zul
@@ -20,7 +20,7 @@
@@ -46,6 +46,11 @@
checked="@{projectController.codeAutogenerated}"/>
+
+
+
+
+