Use getWorkableDays instead of getDaysDuration
if the field workableDays is not defined it falls back to getDaysDuration. FEA: ItEr61OTS04PlanificacionHaciaAtras
This commit is contained in:
parent
4aaf896d73
commit
2aa82bf9cf
5 changed files with 40 additions and 15 deletions
|
|
@ -269,13 +269,6 @@ public class Task extends TaskElement implements ITaskLeafConstraint {
|
|||
this.calculatedValue = calculatedValue;
|
||||
}
|
||||
|
||||
public Integer getDaysDuration() {
|
||||
Days daysBetween = Days.daysBetween(new LocalDate(
|
||||
toDateTime(getStartDate())), new LocalDate(
|
||||
toDateTime(getEndDate())));
|
||||
return daysBetween.getDays();
|
||||
}
|
||||
|
||||
private DateTime toDateTime(Date startDate) {
|
||||
return new DateTime(startDate.getTime());
|
||||
}
|
||||
|
|
@ -688,7 +681,16 @@ public class Task extends TaskElement implements ITaskLeafConstraint {
|
|||
}
|
||||
|
||||
public Integer getWorkableDays() {
|
||||
if (workableDays == null) {
|
||||
return getDaysBetweenDates();
|
||||
}
|
||||
return workableDays;
|
||||
}
|
||||
|
||||
public Integer getDaysBetweenDates() {
|
||||
Days daysBetween = Days.daysBetween(getStartAsLocalDate(),
|
||||
getIntraDayEndDate().asExclusiveEnd());
|
||||
return daysBetween.getDays();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING
|
|||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.LocalDate;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.navalplanner.business.orders.entities.HoursGroup;
|
||||
|
|
@ -47,6 +47,8 @@ import org.navalplanner.business.planner.entities.Task;
|
|||
import org.navalplanner.business.planner.entities.TaskElement;
|
||||
import org.navalplanner.business.planner.limiting.entities.LimitingResourceQueueElement;
|
||||
import org.navalplanner.business.scenarios.entities.OrderVersion;
|
||||
import org.navalplanner.business.workingday.EffortDuration;
|
||||
import org.navalplanner.business.workingday.IntraDayDate;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
|
@ -172,9 +174,31 @@ public class TaskTest {
|
|||
|
||||
@Test
|
||||
public void theDaysBetweenIsCalculatedBasedOnlyOnDatesNotHours() {
|
||||
task.setStartDate(new DateTime(2008, 10, 5, 23, 0, 0, 0).toDate());
|
||||
task.setEndDate(new DateTime(2008, 10, 6, 1, 0, 0, 0).toDate());
|
||||
assertThat(task.getDaysDuration(), equalTo(1));
|
||||
task.setIntraDayStartDate(IntraDayDate.create(
|
||||
new LocalDate(2010, 1, 13), EffortDuration.hours(3)));
|
||||
task.setIntraDayEndDate(IntraDayDate.startOfDay(new LocalDate(2010, 1,
|
||||
14)));
|
||||
assertThat(task.getWorkableDays(), equalTo(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void atLeastOneWorkableDayEvenIfStartAndEndDatesAreAtTheSameDay() {
|
||||
LocalDate day = new LocalDate(2010, 1, 13);
|
||||
task.setIntraDayStartDate(IntraDayDate.create(day,
|
||||
EffortDuration.hours(3)));
|
||||
task.setIntraDayEndDate(IntraDayDate.create(day,
|
||||
EffortDuration.hours(4)));
|
||||
assertThat(task.getWorkableDays(), equalTo(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void ifTheEndIsInTheMiddleOfADayTheWholeDayIsCounted() {
|
||||
LocalDate start = new LocalDate(2010, 1, 13);
|
||||
task.setIntraDayStartDate(IntraDayDate.create(start,
|
||||
EffortDuration.hours(3)));
|
||||
task.setIntraDayEndDate(IntraDayDate.create(start.plusDays(1),
|
||||
EffortDuration.minutes(1)));
|
||||
assertThat(task.getWorkableDays(), equalTo(2));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ public class MonteCarloTask {
|
|||
|
||||
private MonteCarloTask(Task task) {
|
||||
this.task = task;
|
||||
duration = BigDecimal.valueOf(task.getDaysDuration());
|
||||
duration = BigDecimal.valueOf(task.getDaysBetweenDates());
|
||||
pessimisticDuration = duration.multiply(BigDecimal.valueOf(1.50));
|
||||
pessimisticDurationPercentage = 30;
|
||||
normalDuration = duration;
|
||||
|
|
|
|||
|
|
@ -268,9 +268,8 @@ public class ResourceAllocationController extends GenericForwardComposer {
|
|||
private Label lbTaskEnd;
|
||||
|
||||
private void initTaskWorkableDays(org.navalplanner.business.planner.entities.Task task) {
|
||||
taskWorkableDays.setValue(task.getDaysDuration());
|
||||
taskWorkableDays.setValue(task.getWorkableDays());
|
||||
plannedTaskEnd = resourceAllocationModel.getTaskEnd();
|
||||
taskWorkableDays.setValue(task.getDaysDuration());
|
||||
taskWorkableDays.addEventListener(Events.ON_CHANGE,
|
||||
new EventListener() {
|
||||
|
||||
|
|
|
|||
|
|
@ -327,7 +327,7 @@ public class TaskPropertiesController extends GenericForwardComposer {
|
|||
|
||||
private void showDurationRow(Task task) {
|
||||
hours.getFellow("durationRow").setVisible(true);
|
||||
duration.setValue(task.getDaysDuration());
|
||||
duration.setValue(task.getWorkableDays());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue