ItEr58S17AsignacionConsolidacion: Prevent the allocation of hours in a date that has already been consolidated.

This commit is contained in:
Jacobo Aragunde Pérez 2010-05-26 21:49:48 +02:00 committed by Javier Moran Rua
parent 5f579bebb7
commit d2fda3046b
2 changed files with 35 additions and 3 deletions

View file

@ -48,6 +48,7 @@ import org.navalplanner.business.planner.entities.CalculatedValue;
import org.navalplanner.business.planner.entities.GenericResourceAllocation;
import org.navalplanner.business.planner.entities.ResourceAllocation;
import org.navalplanner.business.planner.entities.SpecificResourceAllocation;
import org.navalplanner.business.planner.entities.Task;
import org.navalplanner.business.planner.entities.TaskElement;
import org.navalplanner.business.planner.entities.StretchesFunction.Type;
import org.navalplanner.business.resources.entities.Criterion;
@ -1398,8 +1399,10 @@ class Row {
Component hoursOnInterval(DetailItem item) {
Component result =
isGroupingRow() || isBeforeTaskStartDate(item) ? new Label() :
disableIfNeeded(item, noNegativeIntbox());
isGroupingRow() || isBeforeTaskStartDate(item) ||
isBeforeLatestConsolidation(item) ?
new Label() :
disableIfNeeded(item, noNegativeIntbox());
reloadHoursOnInterval(result, item);
componentsByDetailItem.put(item, result);
addListenerIfNeeded(item, result);
@ -1419,7 +1422,8 @@ class Row {
private void addListenerIfNeeded(final DetailItem item,
final Component component) {
if (isGroupingRow() || isBeforeTaskStartDate(item)) {
if (isGroupingRow() || isBeforeTaskStartDate(item) ||
isBeforeLatestConsolidation(item)) {
return;
}
final Intbox intbox = (Intbox) component;
@ -1452,6 +1456,10 @@ class Row {
Label label = (Label) component;
label.setValue(getHoursForDetailItem(item) + "");
label.setClass("unmodifiable-hours");
} else if (isBeforeLatestConsolidation(item)) {
Label label = (Label) component;
label.setValue(getHoursForDetailItem(item) + "");
label.setClass("consolidated-hours");
} else {
Intbox intbox = (Intbox) component;
intbox.setValue(getHoursForDetailItem(item));
@ -1467,6 +1475,17 @@ class Row {
return item.getEndDate().compareTo(taskStartDate) < 0;
}
private boolean isBeforeLatestConsolidation(DetailItem item) {
if(!((Task)task).hasConsolidations()) {
return false;
}
LocalDate d = ((Task)task).getFirstDayNotConsolidated();
DateTime firstDayNotConsolidated =
new DateTime(d.getYear(), d.getMonthOfYear(),
d.getDayOfMonth(), 0, 0, 0, 0);
return item.getStartDate().compareTo(firstDayNotConsolidated) < 0;
}
private ResourceAllocation<?> getAllocation() {
if (isGroupingRow()) {
throw new IllegalStateException("is grouping row");

View file

@ -43,6 +43,8 @@ import org.navalplanner.business.planner.entities.DayAssignment;
import org.navalplanner.business.planner.entities.ResourceAllocation;
import org.navalplanner.business.planner.entities.Task;
import org.navalplanner.business.planner.entities.TaskElement;
import org.navalplanner.business.planner.entities.consolidations.ConsolidatedValue;
import org.navalplanner.business.planner.entities.consolidations.Consolidation;
import org.navalplanner.business.resources.daos.IResourceDAO;
import org.navalplanner.business.resources.entities.Resource;
import org.navalplanner.web.calendars.BaseCalendarModel;
@ -85,6 +87,17 @@ public class AdvancedAllocationTabCreator {
private void loadNeededDataOfTask() {
BaseCalendarModel.forceLoadBaseCalendar(task.getCalendar());
loadConsolidationRelatedData(task);
}
private void loadConsolidationRelatedData(Task task) {
Consolidation consolidation = task.getConsolidation();
if (consolidation != null) {
for (ConsolidatedValue consolidatedValue : consolidation
.getConsolidatedValues()) {
consolidatedValue.getPendingConsolidatedHours().size();
}
}
}
private Set<Resource> getAssociatedResources(Task task) {