diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/reports/dtos/TimeLineRequiredMaterialDTO.java b/navalplanner-business/src/main/java/org/navalplanner/business/reports/dtos/TimeLineRequiredMaterialDTO.java
index d32cbbb78..ee00af019 100644
--- a/navalplanner-business/src/main/java/org/navalplanner/business/reports/dtos/TimeLineRequiredMaterialDTO.java
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/reports/dtos/TimeLineRequiredMaterialDTO.java
@@ -21,9 +21,11 @@
package org.navalplanner.business.reports.dtos;
import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
import java.util.Date;
import org.navalplanner.business.materials.entities.MaterialAssignment;
+import org.navalplanner.business.orders.entities.OrderElement;
import org.navalplanner.business.planner.entities.TaskElement;
/**
@@ -31,7 +33,9 @@ import org.navalplanner.business.planner.entities.TaskElement;
*/
public class TimeLineRequiredMaterialDTO{
- private Date date;
+ private String date;
+
+ private Date initDate;
private String status;
@@ -54,12 +58,13 @@ public class TimeLineRequiredMaterialDTO{
private String task;
public TimeLineRequiredMaterialDTO(Date date) {
- this.date = date;
+ setDate(date);
}
public TimeLineRequiredMaterialDTO(MaterialAssignment materialAssignment,
- TaskElement taskElement, Date requiredDate) {
- this.date = requiredDate;
+ TaskElement taskElement, Date requiredDate, OrderElement order) {
+ setDate(requiredDate);
+ this.initDate = requiredDate;
this.status = materialAssignment.getStatus().name();
this.code = materialAssignment.getMaterial().getCode();
this.category = materialAssignment.getMaterial().getCategory().getName();
@@ -69,7 +74,7 @@ public class TimeLineRequiredMaterialDTO{
this.totalPrice = materialAssignment.getTotalPrice();
this.estimatedAvailability = materialAssignment
.getEstimatedAvailability();
- this.order = materialAssignment.getOrderElement().getName();
+ this.order = order.getCode() + " - " + order.getName();
this.task = getTaskName(taskElement);
}
@@ -84,14 +89,30 @@ public class TimeLineRequiredMaterialDTO{
return null;
}
- public Date getDate() {
+ public Date getInitDate() {
+ return initDate;
+ }
+
+ public void setInitDate(Date initDate) {
+ this.initDate = initDate;
+ }
+
+ public String getDate() {
return date;
}
- public void setDate(Date date) {
+ public void setDate(String date) {
this.date = date;
}
+ private void setDate(Date newDate) {
+ if (newDate != null) {
+ this.date = (new SimpleDateFormat("dd/MM/yyyy")).format(newDate);
+ } else {
+ this.date = null;
+ }
+ }
+
public String getStatus() {
return status;
}
diff --git a/navalplanner-webapp/src/main/jasper/hoursWorkedPerWorkerReport.jrxml b/navalplanner-webapp/src/main/jasper/hoursWorkedPerWorkerReport.jrxml
index ce7d45259..5974b77b8 100644
--- a/navalplanner-webapp/src/main/jasper/hoursWorkedPerWorkerReport.jrxml
+++ b/navalplanner-webapp/src/main/jasper/hoursWorkedPerWorkerReport.jrxml
@@ -218,12 +218,12 @@
-
+
-
+
diff --git a/navalplanner-webapp/src/main/jasper/timeLineRequiredMaterial.jrxml b/navalplanner-webapp/src/main/jasper/timeLineRequiredMaterial.jrxml
index 05f9dc1d9..d1a5bbe68 100644
--- a/navalplanner-webapp/src/main/jasper/timeLineRequiredMaterial.jrxml
+++ b/navalplanner-webapp/src/main/jasper/timeLineRequiredMaterial.jrxml
@@ -1,12 +1,11 @@
-
+
-
@@ -17,6 +16,7 @@
+
@@ -25,15 +25,8 @@
-
-
-
-
-
-
-
-
+
@@ -44,10 +37,10 @@
-
+
-
+
@@ -61,21 +54,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -89,21 +68,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -117,7 +82,7 @@
-
+
@@ -131,7 +96,7 @@
-
+
@@ -142,10 +107,10 @@
-
+
-
+
@@ -161,37 +126,36 @@
-
-
+
+
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
@@ -202,7 +166,7 @@
-
+
@@ -225,12 +189,12 @@
-
+
-
+
@@ -270,63 +234,93 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/reports/TimeLineRequiredMaterialController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/reports/TimeLineRequiredMaterialController.java
index 5ac691bba..f870006f1 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/reports/TimeLineRequiredMaterialController.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/reports/TimeLineRequiredMaterialController.java
@@ -38,9 +38,7 @@ import org.navalplanner.business.materials.entities.MaterialStatusEnum;
import org.navalplanner.business.orders.entities.Order;
import org.navalplanner.web.common.components.ExtendedJasperreport;
import org.zkoss.zk.ui.Component;
-import org.zkoss.zk.ui.WrongValueException;
import org.zkoss.zul.Combobox;
-import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Datebox;
import org.zkoss.zul.Label;
import org.zkoss.zul.Listbox;
@@ -70,6 +68,14 @@ public class TimeLineRequiredMaterialController extends
private Combobox cbStatus;
+ private Listbox listStatus;
+
+ private Date filterStartingDate = getDefaultStartingDate();
+
+ private Date filterEndingDate = getDefaultEndingDate();
+
+ private String selectedStatus = getDefaultStatus();
+
private Listbox lbOrders;
List filterCategories = new ArrayList();
@@ -95,28 +101,43 @@ public class TimeLineRequiredMaterialController extends
@Override
protected JRDataSource getDataSource() {
return timeLineRequiredMaterialModel.getTimeLineRequiredMaterial(
- getStartingDate(), getEndingDate(), getSelectedStatus(),
+ getStartingDate(), getEndingDate(),
+ getCorrespondentStatus(selectedStatus),
getSelectedOrders(), getSelectedCategories(),
getSelectedMaterials());
}
- private Date getStartingDate() {
- Date result = startingDate.getValue();
- if (result == null) {
- startingDate.setValue(new Date());
- }
- return startingDate.getValue();
+ public Date getStartingDate() {
+ return this.filterStartingDate;
}
- private Date getEndingDate() {
- Date result = endingDate.getValue();
- if (result == null) {
- endingDate.setValue(getDefaultEndingDate());
+ public void setStartingDate(Date date) {
+ if (date == null) {
+ this.filterStartingDate = getDefaultStartingDate();
+ this.startingDate.setValue(filterStartingDate);
+ } else {
+ this.filterStartingDate = date;
}
- return endingDate.getValue();
}
- private Date getDefaultEndingDate(){
+ private Date getDefaultStartingDate() {
+ return new Date();
+ }
+
+ public Date getEndingDate() {
+ return this.filterEndingDate;
+ }
+
+ public void setEndingDate(Date date) {
+ if (date == null) {
+ this.filterEndingDate = getDefaultEndingDate();
+ this.endingDate.setValue(filterEndingDate);
+ } else {
+ this.filterEndingDate = date;
+ }
+ }
+
+ public Date getDefaultEndingDate() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(getStartingDate());
calendar.add(calendar.MONTH, 1);
@@ -129,18 +150,6 @@ public class TimeLineRequiredMaterialController extends
return calendar.getTime();
}
- private MaterialStatusEnum getSelectedStatus() {
- final Comboitem item = cbStatus.getSelectedItem();
- return (item != null) ? (MaterialStatusEnum) item.getValue() : null;
- }
-
- private String getSelectedStatusName() {
- if (getSelectedStatus() != null) {
- return getSelectedStatus().name();
- }
- return null;
- }
-
private List getSelectedOrders() {
List result = new ArrayList();
final Set listItems = lbOrders.getSelectedItems();
@@ -160,14 +169,44 @@ public class TimeLineRequiredMaterialController extends
}
public void showReport(ExtendedJasperreport jasperreport) {
- if (lbOrders.getSelectedCount() <= 0) {
- throw new WrongValueException(lbOrders, _("Please, select an order"));
- }
super.showReport(jasperreport);
}
- public MaterialStatusEnum[] getMaterialStatus() {
- return MaterialStatusEnum.values();
+ public List getMaterialStatus() {
+ List status = new ArrayList();
+ status.add(getDefaultStatus());
+ for (MaterialStatusEnum matStatus : MaterialStatusEnum.values()) {
+ status.add(matStatus.name());
+ }
+ return status;
+ }
+
+ public String getDefaultStatus() {
+ return _("All");
+ }
+
+ public String getSelectedStatus(){
+ return selectedStatus;
+ }
+
+ public void setSelectedStatus(String status) {
+ selectedStatus = status;
+ }
+
+ private MaterialStatusEnum getCorrespondentStatus(String status) {
+ for (MaterialStatusEnum matStatus : MaterialStatusEnum.values()) {
+ if (status.equals(matStatus.name())) {
+ return matStatus;
+ }
+ }
+ return null;
+ }
+
+ private String getSelectedStatusName() {
+ if (getSelectedStatus().equals(getDefaultStatus())) {
+ return null;
+ }
+ return selectedStatus;
}
/**
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/reports/TimeLineRequiredMaterialModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/reports/TimeLineRequiredMaterialModel.java
index e44b83c21..801f9b429 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/reports/TimeLineRequiredMaterialModel.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/reports/TimeLineRequiredMaterialModel.java
@@ -163,7 +163,7 @@ public class TimeLineRequiredMaterialModel implements
// check if the dates match
if(acceptDates(startDate,endDate)){
result.add(new TimeLineRequiredMaterialDTO(material, task,
- startDate));
+ startDate, order));
}
}
return result;
@@ -261,7 +261,7 @@ public class TimeLineRequiredMaterialModel implements
private boolean isGreaterDate(TimeLineRequiredMaterialDTO dto,
TimeLineRequiredMaterialDTO dtoToOrder) {
if (dto != null) {
- return dto.getDate().after(dtoToOrder.getDate());
+ return dto.getInitDate().after(dtoToOrder.getInitDate());
}
return true;
}
diff --git a/navalplanner-webapp/src/main/webapp/reports/timeLineMaterialReport.zul b/navalplanner-webapp/src/main/webapp/reports/timeLineMaterialReport.zul
index cca5b0826..c1eb404dd 100644
--- a/navalplanner-webapp/src/main/webapp/reports/timeLineMaterialReport.zul
+++ b/navalplanner-webapp/src/main/webapp/reports/timeLineMaterialReport.zul
@@ -55,16 +55,20 @@
-
+
-
+
-
+
+