diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/AssignedHoursToOrderElementController.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/AssignedHoursToOrderElementController.java
index 4b530d7b9..69304faf0 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/AssignedHoursToOrderElementController.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/AssignedHoursToOrderElementController.java
@@ -3,7 +3,7 @@
*
* Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e
* Desenvolvemento Tecnolóxico de Galicia
- * Copyright (C) 2010-2011 Igalia, S.L.
+ * Copyright (C) 2010-2012 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
@@ -21,6 +21,7 @@
package org.libreplan.web.orders;
+import java.math.BigDecimal;
import java.util.List;
import org.libreplan.business.orders.entities.OrderElement;
@@ -33,7 +34,9 @@ import org.zkoss.zul.Vbox;
/**
* Controller for show the asigned hours of the selected order element
+ *
* @author Susana Montes Pedreria
+ * @author Manuel Rego Casasnovas
*/
public class AssignedHoursToOrderElementController extends
GenericForwardComposer {
@@ -42,6 +45,14 @@ public class AssignedHoursToOrderElementController extends
private Vbox orderElementHours;
+ private Progressmeter hoursProgressBar;
+
+ private Progressmeter exceedHoursProgressBar;
+
+ private Progressmeter moneyCostProgressBar;
+
+ private Progressmeter exceedMoneyCostProgressBar;
+
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
@@ -76,6 +87,18 @@ public class AssignedHoursToOrderElementController extends
return assignedHoursToOrderElementModel.getProgressWork();
}
+ public BigDecimal getBudget() {
+ return assignedHoursToOrderElementModel.getBudget();
+ }
+
+ public BigDecimal getMoneyCost() {
+ return assignedHoursToOrderElementModel.getMoneyCost();
+ }
+
+ public BigDecimal getMoneyCostPercentage() {
+ return assignedHoursToOrderElementModel.getMoneyCostPercentage();
+ }
+
private IOrderElementModel orderElementModel;
public void openWindow(IOrderElementModel orderElementModel) {
@@ -87,7 +110,12 @@ public class AssignedHoursToOrderElementController extends
Util.reloadBindings(orderElementHours);
}
+ paintProgressBars();
+ }
+
+ public void paintProgressBars() {
viewPercentage();
+ showMoneyCostPercentageBars();
}
public void setOrderElementModel(IOrderElementModel orderElementModel) {
@@ -98,10 +126,6 @@ public class AssignedHoursToOrderElementController extends
return orderElementModel.getOrderElement();
}
- private Progressmeter hoursProgressBar;
-
- private Progressmeter exceedHoursProgressBar;
-
/**
* This method shows the percentage of the imputed hours with respect to the
* estimated hours.If the hours imputed is greater that the hours estimated
@@ -110,17 +134,29 @@ public class AssignedHoursToOrderElementController extends
private void viewPercentage() {
if (this.getProgressWork() > 100) {
hoursProgressBar.setValue(100);
+
exceedHoursProgressBar.setVisible(true);
- exceedHoursProgressBar.setValue(0);
String exceedValue = String.valueOf(getProgressWork() - 100);
exceedHoursProgressBar.setWidth(exceedValue + "px");
- exceedHoursProgressBar.setLeft("left");
- exceedHoursProgressBar
- .setStyle("background:red ; border:1px solid red");
} else {
hoursProgressBar.setValue(getProgressWork());
exceedHoursProgressBar.setVisible(false);
}
}
+ private void showMoneyCostPercentageBars() {
+ BigDecimal moneyCostPercentage = getMoneyCostPercentage();
+ if (moneyCostPercentage.compareTo(new BigDecimal(100)) > 0) {
+ moneyCostProgressBar.setValue(100);
+
+ exceedMoneyCostProgressBar.setVisible(true);
+ exceedMoneyCostProgressBar.setWidth(moneyCostPercentage.subtract(
+ new BigDecimal(100)).intValue()
+ + "px");
+ } else {
+ moneyCostProgressBar.setValue(moneyCostPercentage.intValue());
+ exceedMoneyCostProgressBar.setVisible(false);
+ }
+ }
+
}
diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/AssignedHoursToOrderElementModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/AssignedHoursToOrderElementModel.java
index b4fee8175..d334594c1 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/AssignedHoursToOrderElementModel.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/AssignedHoursToOrderElementModel.java
@@ -3,7 +3,7 @@
*
* Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e
* Desenvolvemento Tecnolóxico de Galicia
- * Copyright (C) 2010-2011 Igalia, S.L.
+ * Copyright (C) 2010-2012 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
@@ -32,6 +32,7 @@ import org.apache.commons.lang.Validate;
import org.joda.time.LocalDate;
import org.libreplan.business.orders.daos.IOrderElementDAO;
import org.libreplan.business.orders.entities.OrderElement;
+import org.libreplan.business.planner.entities.MoneyCostCalculator;
import org.libreplan.business.reports.dtos.WorkReportLineDTO;
import org.libreplan.business.workingday.EffortDuration;
import org.libreplan.business.workreports.daos.IWorkReportLineDAO;
@@ -46,6 +47,7 @@ import org.springframework.transaction.annotation.Transactional;
*
* @author Susana Montes Pedreira
* @author Ignacio Díaz Teijido
+ * @author Manuel Rego Casasnovas
*/
@Service
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
@@ -58,6 +60,9 @@ public class AssignedHoursToOrderElementModel implements
@Autowired
private IOrderElementDAO orderElementDAO;
+ @Autowired
+ private MoneyCostCalculator moneyCostCalculator;
+
private EffortDuration assignedDirectEffort;
private OrderElement orderElement;
@@ -197,4 +202,32 @@ public class AssignedHoursToOrderElementModel implements
.multiply(new BigDecimal(100)).intValue();
}
+ @Override
+ public BigDecimal getBudget() {
+ if (orderElement == null) {
+ return BigDecimal.ZERO;
+ }
+ return orderElement.getBudget();
+ }
+
+ @Override
+ @Transactional(readOnly = true)
+ public BigDecimal getMoneyCost() {
+ if (orderElement == null) {
+ return BigDecimal.ZERO;
+ }
+ return moneyCostCalculator.getMoneyCost(orderElement);
+ }
+
+ @Override
+ @Transactional(readOnly = true)
+ public BigDecimal getMoneyCostPercentage() {
+ if (orderElement == null) {
+ return BigDecimal.ZERO;
+ }
+ return MoneyCostCalculator.getMoneyCostProportion(
+ moneyCostCalculator.getMoneyCost(orderElement),
+ orderElement.getBudget()).multiply(new BigDecimal(100));
+ }
+
}
diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/IAssignedHoursToOrderElementModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/IAssignedHoursToOrderElementModel.java
index ed0d4930b..004030696 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/IAssignedHoursToOrderElementModel.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/IAssignedHoursToOrderElementModel.java
@@ -3,7 +3,7 @@
*
* Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e
* Desenvolvemento Tecnolóxico de Galicia
- * Copyright (C) 2010-2011 Igalia, S.L.
+ * Copyright (C) 2010-2012 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
@@ -21,6 +21,7 @@
package org.libreplan.web.orders;
+import java.math.BigDecimal;
import java.util.List;
import org.libreplan.business.orders.entities.OrderElement;
@@ -29,6 +30,7 @@ import org.libreplan.business.workingday.EffortDuration;
/**
* @author Susana Montes Pedreira
+ * @author Manuel Rego Casasnovas
*/
public interface IAssignedHoursToOrderElementModel{
public List getWorkReportLines();
@@ -42,4 +44,11 @@ public interface IAssignedHoursToOrderElementModel{
public int getProgressWork();
public EffortDuration getAssignedDirectEffort();
+
+ BigDecimal getBudget();
+
+ BigDecimal getMoneyCost();
+
+ BigDecimal getMoneyCostPercentage();
+
}
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 3bce142c5..bbd39fdb9 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
@@ -491,14 +491,18 @@ public class OrderCRUDController extends GenericForwardComposer {
}
setCurrentTab();
+ Component orderElementHours = editWindow
+ .getFellowIfAny("orderElementHours");
if (assignedHoursController == null) {
- Component orderElementHours = editWindow
- .getFellowIfAny("orderElementHours");
assignedHoursController = (AssignedHoursToOrderElementController) orderElementHours
.getVariable("assignedHoursToOrderElementController", true);
final IOrderElementModel orderElementModel = getOrderElementModel();
assignedHoursController.openWindow(orderElementModel);
+ } else {
+ Util.createBindingsFor(orderElementHours);
+ Util.reloadBindings(orderElementHours);
+ assignedHoursController.paintProgressBars();
}
}
diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderElementController.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderElementController.java
index 20d4d3403..bc392f852 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderElementController.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderElementController.java
@@ -109,6 +109,7 @@ public class OrderElementController extends GenericForwardComposer {
assignedHoursToOrderElementController.openWindow(orderElementModel);
} else {
redraw(orderElementHours);
+ assignedHoursToOrderElementController.paintProgressBars();
}
}
diff --git a/libreplan-webapp/src/main/webapp/orders/_listOrderElementHours.zul b/libreplan-webapp/src/main/webapp/orders/_listOrderElementHours.zul
index ecb5449f0..70ae1adbd 100644
--- a/libreplan-webapp/src/main/webapp/orders/_listOrderElementHours.zul
+++ b/libreplan-webapp/src/main/webapp/orders/_listOrderElementHours.zul
@@ -3,7 +3,7 @@
Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e
Desenvolvemento Tecnolóxico de Galicia
- Copyright (C) 2010-2011 Igalia, S.L.
+ Copyright (C) 2010-2012 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
@@ -117,7 +117,57 @@
value="@{assignedHoursToOrderElementController.progressWork}" />
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+