From 5fd712a4ed1eb984a27b5930a78e534ea1e0cc9e Mon Sep 17 00:00:00 2001 From: Susana Montes Pedreira Date: Wed, 8 Sep 2010 09:14:47 +0200 Subject: [PATCH] [Bug #617] sets the scale of advances to 4, so it are shown its decimals. FEA: ItEr60S04ValidacionEProbasFuncionaisItEr59S04 --- .../entities/DirectAdvanceAssignment.java | 2 +- .../orders/entities/OrderLineGroup.java | 4 +- .../business/planner/entities/Tasks.hbm.xml | 2 +- .../orders/entities/OrderElementTest.java | 66 +++++++++++-------- .../ManageOrderElementAdvancesModel.java | 6 +- .../web/planner/TaskElementAdapter.java | 6 +- 6 files changed, 47 insertions(+), 39 deletions(-) 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(