diff --git a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/AggregateOfDayAssignments.java b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/AggregateOfDayAssignments.java index 49b163fa7..502b9e410 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/AggregateOfDayAssignments.java +++ b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/AggregateOfDayAssignments.java @@ -46,18 +46,17 @@ public class AggregateOfDayAssignments { Date start, Date end) { - Collections.sort(assignments, new Comparator() { - @Override - public int compare(DayAssignment arg0, DayAssignment arg1) { - return arg0.getDay().compareTo(arg1.getDay()); - } - }); + assignments = DayAssignment.orderedByDay(assignments); return new AggregateOfDayAssignments( DayAssignment.getAtInterval(assignments, new LocalDate(start), new LocalDate(end))); } + public static AggregateOfDayAssignments create(List assignments) { + return new AggregateOfDayAssignments(assignments); + } + private Set dayAssignments; private AggregateOfDayAssignments( diff --git a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/PlanningData.java b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/PlanningData.java index fe146c021..e65421bb7 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/PlanningData.java +++ b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/PlanningData.java @@ -163,7 +163,8 @@ public class PlanningData extends BaseEntity { for (Task each: criticalPath) { theoreticalNumHours += each.getTheoreticalCompletedHoursUntilDate(limit); - totalNumHours += each.getSumOfHoursAllocated(); + totalNumHours += AggregateOfDayAssignments.create( + each.getDayAssignments()).getTotalHours(); } return divide(new BigDecimal(theoreticalNumHours), totalNumHours); } diff --git a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/TaskElement.java b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/TaskElement.java index 3ba75a0b9..793de21ab 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/TaskElement.java +++ b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/TaskElement.java @@ -704,7 +704,8 @@ public abstract class TaskElement extends BaseEntity { public abstract Integer getTheoreticalCompletedHoursUntilDate(Date date); public BigDecimal getTheoreticalAdvancePercentageUntilDate(Date date) { - int totalAllocatedHours = this.getSumOfHoursAllocated(); + int totalAllocatedHours = AggregateOfDayAssignments.create( + this.getDayAssignments()).getTotalHours(); int totalTheoreticalCompletedHours = this.getTheoreticalCompletedHoursUntilDate(date); if(Math.min(totalAllocatedHours, totalTheoreticalCompletedHours) == 0) { return BigDecimal.ZERO; diff --git a/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/TaskTest.java b/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/TaskTest.java index a9534d40f..209408174 100644 --- a/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/TaskTest.java +++ b/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/TaskTest.java @@ -348,7 +348,8 @@ public class TaskTest { @Test public void theoreticalPercentageIsOneIfDateIsLaterThanEndDate() { prepareTaskForTheoreticalAdvanceTesting(); - assertThat(task.getTheoreticalAdvancePercentageUntilDate(task.getEndDate()), equalTo(new BigDecimal(1))); + assertThat(task.getTheoreticalAdvancePercentageUntilDate(task.getEndDate()), + equalTo(new BigDecimal("1.00000000"))); } @@ -357,7 +358,7 @@ public class TaskTest { prepareTaskForTheoreticalAdvanceTesting(); LocalDate limit = task.getStartAsLocalDate().plusDays(1); assertThat(task.getTheoreticalAdvancePercentageUntilDate(limit.toDateTimeAtStartOfDay().toDate()), - equalTo(new BigDecimal("0.2"))); + equalTo(new BigDecimal("0.20000000"))); } private void prepareTaskForTheoreticalAdvanceTesting() {