diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/advance/entities/DirectAdvanceAssignment.java b/navalplanner-business/src/main/java/org/navalplanner/business/advance/entities/DirectAdvanceAssignment.java
index c96602ce9..5a371ec0c 100644
--- a/navalplanner-business/src/main/java/org/navalplanner/business/advance/entities/DirectAdvanceAssignment.java
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/advance/entities/DirectAdvanceAssignment.java
@@ -139,7 +139,7 @@ public class DirectAdvanceAssignment extends AdvanceAssignment {
if (advanceMeasurement == null) {
return BigDecimal.ZERO;
}
- return advanceMeasurement.getValue().divide(maxValue, 2,
+ return advanceMeasurement.getValue().divide(maxValue, 4,
RoundingMode.DOWN);
}
diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java
index ccbaecf9c..255fa874c 100644
--- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java
@@ -384,9 +384,9 @@ public class OrderLineGroup extends OrderElement implements
result = result.add(childPercentage.multiply(new BigDecimal(
childHours)));
}
-
- result = result.setScale(2).divide(new BigDecimal(hours),
+ result = result.divide(new BigDecimal(hours).setScale(2), 4,
RoundingMode.DOWN);
+
}
return result;
diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml
index bc2d4d516..9c708624d 100644
--- a/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml
+++ b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml
@@ -25,7 +25,7 @@
type="org.navalplanner.business.workingday.hibernate.EffortDurationType"/>
-
+
directAdvanceAssignments = orderElement
.getDirectAdvanceAssignments();
@@ -700,7 +704,7 @@ public class OrderElementTest {
new BigDecimal(350), four, new BigDecimal(400));
assertThat(orderElement.getAdvancePercentage(), equalTo(new BigDecimal(
- 43).divide(new BigDecimal(100)).setScale(2)));
+ 4333).divide(new BigDecimal(10000)).setScale(4)));
Set directAdvanceAssignments = orderElement
.getDirectAdvanceAssignments();
@@ -734,23 +738,27 @@ public class OrderElementTest {
AdvanceMeasurement next = iterator.next();
assertThat(next.getDate(), equalTo(one));
- assertThat(next.getValue(), equalTo(new BigDecimal(6).setScale(2)));
+ assertThat(next.getValue(), equalTo(new BigDecimal(66600).setScale(4)
+ .divide(new BigDecimal(10000))));
next = iterator.next();
assertThat(next.getDate(), equalTo(two));
- assertThat(next.getValue(), equalTo(new BigDecimal(13).setScale(2)));
+ assertThat(next.getValue(), equalTo(new BigDecimal(133300).setScale(4)
+ .divide(new BigDecimal(10000))));
next = iterator.next();
assertThat(next.getDate(), equalTo(three));
- assertThat(next.getValue(), equalTo(new BigDecimal(36).setScale(2)));
+ assertThat(next.getValue(), equalTo(new BigDecimal(366600).setScale(4)
+ .divide(new BigDecimal(10000))));
next = iterator.next();
assertThat(next.getDate(), equalTo(four));
- assertThat(next.getValue(), equalTo(new BigDecimal(40).setScale(2)));
+ assertThat(next.getValue(), equalTo(new BigDecimal(40).setScale(4)));
next = iterator.next();
assertThat(next.getDate(), equalTo(five));
- assertThat(next.getValue(), equalTo(new BigDecimal(43).setScale(2)));
+ assertThat(next.getValue(), equalTo(new BigDecimal(4333).setScale(4)
+ .divide(new BigDecimal(100))));
}
@Test
@@ -789,7 +797,7 @@ public class OrderElementTest {
assertThat(orderLineGroup_1.getIndirectAdvanceAssignments().size(),
equalTo(3));
assertThat(orderLineGroup_1.getAdvancePercentage(),
- equalTo(new BigDecimal(50).setScale(2).divide(
+ equalTo(new BigDecimal(50).setScale(4).divide(
new BigDecimal(100))));
}
@@ -826,7 +834,7 @@ public class OrderElementTest {
assertThat(orderLineGroup_1.getIndirectAdvanceAssignments().size(),
equalTo(3));
assertThat(orderLineGroup_1.getAdvancePercentage(),
- equalTo(new BigDecimal(20).setScale(2).divide(
+ equalTo(new BigDecimal(20).setScale(4).divide(
new BigDecimal(100))));
}
@@ -847,7 +855,7 @@ public class OrderElementTest {
new BigDecimal(100), new BigDecimal(20), true);
assertThat(orderElement.getAdvancePercentage(), equalTo(new BigDecimal(
- 26).divide(new BigDecimal(100))));
+ 2666).divide(new BigDecimal(10000)).setScale(4)));
Set indirectAdvanceAssignments = ((OrderLineGroup) orderElement)
.getIndirectAdvanceAssignments();
@@ -861,7 +869,7 @@ public class OrderElementTest {
}
assertThat(orderElement.getAdvancePercentage(), equalTo(new BigDecimal(
- 26).divide(new BigDecimal(100))));
+ 26).setScale(4).divide(new BigDecimal(100))));
}
@Test
@@ -890,7 +898,7 @@ public class OrderElementTest {
new BigDecimal(20), five, new BigDecimal(50));
assertThat(orderElement.getAdvancePercentage(), equalTo(new BigDecimal(
- 46).divide(new BigDecimal(100)).setScale(2)));
+ 4666).setScale(4).divide(new BigDecimal(10000))));
Set directAdvanceAssignments = orderElement
.getDirectAdvanceAssignments();
@@ -969,7 +977,7 @@ public class OrderElementTest {
new BigDecimal(1000), three, new BigDecimal(5000));
assertThat(orderElement.getAdvancePercentage(), equalTo(new BigDecimal(
- 8).divide(new BigDecimal(100)).setScale(2)));
+ 833).divide(new BigDecimal(10000)).setScale(4)));
Set indirectAdvanceAssignments = ((OrderLineGroup) orderElement)
.getIndirectAdvanceAssignments();
@@ -990,8 +998,8 @@ public class OrderElementTest {
assertThat(advanceAssignment.getLastAdvanceMeasurement().getValue(),
equalTo(new BigDecimal(5000)));
assertThat(advanceAssignment.getAdvancePercentage(),
- equalTo(new BigDecimal(45).divide(new BigDecimal(100))
- .setScale(2)));
+ equalTo(new BigDecimal(4545).divide(new BigDecimal(10000))
+ .setScale(4)));
}
@Test
@@ -1016,7 +1024,7 @@ public class OrderElementTest {
new BigDecimal(1000), true);
assertThat(orderElement.getAdvancePercentage(), equalTo(new BigDecimal(
- 8).divide(new BigDecimal(100)).setScale(2)));
+ 833).divide(new BigDecimal(10000)).setScale(4)));
Set indirectAdvanceAssignments = ((OrderLineGroup) orderElement)
.getIndirectAdvanceAssignments();
@@ -1037,8 +1045,8 @@ public class OrderElementTest {
assertThat(advanceAssignment.getLastAdvanceMeasurement().getValue(),
equalTo(new BigDecimal(5000)));
assertThat(advanceAssignment.getAdvancePercentage(),
- equalTo(new BigDecimal(45).divide(new BigDecimal(100))
- .setScale(2)));
+ equalTo(new BigDecimal(4545).divide(new BigDecimal(10000))
+ .setScale(4)));
}
public static void removeReportGlobalAdvanceFromChildrenAdvance(
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesModel.java
index 5e9e8d534..07be72165 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesModel.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesModel.java
@@ -600,9 +600,11 @@ public class ManageOrderElementAdvancesModel implements
return BigDecimal.ZERO;
}
- BigDecimal division = value.divide(maxValue, 2, RoundingMode.DOWN);
- return (division.multiply(new BigDecimal(100))).setScale(0,
+ BigDecimal division = value.divide(maxValue.setScale(2), 4,
RoundingMode.DOWN);
+ return (division.multiply(new BigDecimal(100))).setScale(2,
+ RoundingMode.DOWN);
+
}
@Override
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java
index 190a1654b..90e0fc5e3 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java
@@ -38,7 +38,6 @@ import java.util.Map.Entry;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.hibernate.Hibernate;
import org.joda.time.LocalDate;
import org.navalplanner.business.common.IAdHocTransactionService;
import org.navalplanner.business.common.IOnTransaction;
@@ -63,8 +62,6 @@ import org.navalplanner.business.planner.entities.Dependency.Type;
import org.navalplanner.business.resources.daos.ICriterionDAO;
import org.navalplanner.business.resources.daos.IResourceDAO;
import org.navalplanner.business.resources.entities.Criterion;
-import org.navalplanner.business.resources.entities.Machine;
-import org.navalplanner.business.resources.entities.MachineWorkersConfigurationUnit;
import org.navalplanner.business.resources.entities.Resource;
import org.navalplanner.business.scenarios.entities.Scenario;
import org.springframework.beans.factory.annotation.Autowired;
@@ -492,7 +489,8 @@ public class TaskElementAdapter implements ITaskElementAdapter {
StringBuilder result = new StringBuilder();
result.append(_("Name: {0}", getName()) + "
");
result.append(_("Advance") + ": ").append(
- getAdvancePercentage().multiply(new BigDecimal(100)))
+ (getAdvancePercentage().multiply(new BigDecimal(100)))
+ .setScale(2, RoundingMode.DOWN))
.append("% , ");
result.append(_("Hours invested") + ": ").append(