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
This commit is contained in:
Manuel Rego Casasnovas 2012-10-15 11:43:53 +02:00
parent cf8482d878
commit d860a0b4e1

View file

@ -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) {