From d860a0b4e126d6a9e39ff59cdb4ca3dc0deb50e5 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Mon, 15 Oct 2012 11:43:53 +0200 Subject: [PATCH] Bug #1542: Fix problem with deadline indicator when project finish right at the deadline For example a project with a task of 40h starting on Monday and finishing on Friday, with a deadline on Friday should was wrong calculated before. Not it says that the deadline is fulfilled as expected. FEA: ItEr77S04BugFixing --- .../libreplan/web/dashboard/DashboardModel.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardModel.java index 4c2e28196..86667dfd3 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardModel.java @@ -48,7 +48,6 @@ import org.libreplan.business.planner.entities.visitors.CalculateFinishedTasksEs import org.libreplan.business.planner.entities.visitors.CalculateFinishedTasksLagInCompletionVisitor; import org.libreplan.business.planner.entities.visitors.ResetTasksStatusVisitor; import org.libreplan.business.workingday.EffortDuration; -import org.libreplan.business.workingday.IntraDayDate; import org.libreplan.web.planner.order.PlanningStateCreator.PlanningState; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; @@ -223,15 +222,15 @@ public class DashboardModel implements IDashboardModel { return; } TaskGroup rootTask = getRootTask(); - IntraDayDate endDate = TaskElement.maxDate(rootTask.getChildren()); + LocalDate endDate = TaskElement.maxDate(rootTask.getChildren()) + .asExclusiveEnd(); Days orderDuration = Days.daysBetween( - TaskElement.minDate(rootTask.getChildren()).getDate(), - endDate.asExclusiveEnd()); + TaskElement.minDate(rootTask.getChildren()).getDate(), endDate); LocalDate deadLineAsLocalDate = LocalDate.fromDateFields(currentOrder .getDeadline()); - Days deadlineOffset = Days.daysBetween(endDate.getDate(), - deadLineAsLocalDate); + Days deadlineOffset = Days.daysBetween(endDate, + deadLineAsLocalDate.plusDays(1)); BigDecimal outcome = new BigDecimal(deadlineOffset.getDays(), MathContext.DECIMAL32); @@ -257,8 +256,8 @@ public class DashboardModel implements IDashboardModel { return; } absoluteMarginWithDeadLine = daysBetween( - TaskElement.maxDate(rootTask.getChildren()).getDate(), - LocalDate.fromDateFields(deadline)); + TaskElement.maxDate(rootTask.getChildren()).asExclusiveEnd(), + LocalDate.fromDateFields(deadline).plusDays(1)); } private int daysBetween(LocalDate start, LocalDate end) {