From 602175c9d768d7dae4d342c0116fc158c8b24f90 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Wed, 26 May 2010 18:39:37 +0200 Subject: [PATCH] ItEr58S19CUDesconsolidacion: Removing advances consolidation. --- .../AdvanceConsolidationDTO.java | 3 + .../AdvanceConsolidationModel.java | 72 +++++++++++++++---- 2 files changed, 62 insertions(+), 13 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationDTO.java index f6a4bb0c6..7deb0614a 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationDTO.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationDTO.java @@ -143,6 +143,9 @@ public class AdvanceConsolidationDTO { if (isAllReadOnly() || ((isConsolidated()) && (consolidatedValue != null) && (!consolidatedValue .isNewObject()))) { + if (lastConsolidatedDate.equals(date)) { + return false; + } return true; } if (lastConsolidatedDate != null) { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationModel.java index 4bdb0b39b..5327bef89 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationModel.java @@ -34,6 +34,7 @@ import org.navalplanner.business.advance.entities.DirectAdvanceAssignment; import org.navalplanner.business.advance.entities.IndirectAdvanceAssignment; import org.navalplanner.business.orders.entities.OrderElement; import org.navalplanner.business.planner.daos.ITaskElementDAO; +import org.navalplanner.business.planner.entities.DayAssignment; import org.navalplanner.business.planner.entities.ResourceAllocation; import org.navalplanner.business.planner.entities.SpecificResourceAllocation; import org.navalplanner.business.planner.entities.Task; @@ -214,24 +215,30 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel { LocalDate.fromDateFields(task.getEndDate())) > 0) { LocalDate date = ResourceAllocation.allocating( Arrays.asList(resourceAllocation - .asResourcesPerDayModification())) - .untilAllocating(pendingHours); + .asResourcesPerDayModification())).untilAllocating( + pendingHours); task.setEndDate(date.toDateTimeAtStartOfDay().toDate()); } else { - if (resourceAllocation instanceof SpecificResourceAllocation) { - ((SpecificResourceAllocation) resourceAllocation) - .allocateKeepingProportions(startInclusive, - endExclusive, pendingHours); - } else { - resourceAllocation.withPreviousAssociatedResources() - .onInterval(startInclusive, endExclusive) - .allocateHours(pendingHours); - } + reassign(resourceAllocation, startInclusive, endExclusive, + pendingHours); } } } } + private void reassign(ResourceAllocation resourceAllocation, + LocalDate startInclusive, LocalDate endExclusive, + Integer pendingHours) { + if (resourceAllocation instanceof SpecificResourceAllocation) { + ((SpecificResourceAllocation) resourceAllocation) + .allocateKeepingProportions(startInclusive, endExclusive, + pendingHours); + } else { + resourceAllocation.withPreviousAssociatedResources().onInterval( + startInclusive, endExclusive).allocateHours(pendingHours); + } + } + private ConsolidatedValue createNewConsolidatedValue( AdvanceConsolidationDTO dto) { if (consolidation != null && task != null) { @@ -255,8 +262,7 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel { } private void deleteConsolidationIfIsNeeded(AdvanceConsolidationDTO dto) { - if ((dto.getConsolidatedValue() != null) - && (dto.getConsolidatedValue().isNewObject())) { + if (dto.getConsolidatedValue() != null) { if (consolidation != null && task != null) { if (!consolidation.isCalculated()) { ((NonCalculatedConsolidation) consolidation) @@ -267,6 +273,46 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel { .getCalculatedConsolidatedValues().remove( dto.getConsolidatedValue()); } + + if (consolidation.getConsolidatedValues().isEmpty()) { + consolidation = null; + task.setConsolidation(consolidation); + } + + LocalDate firstDayNotConsolidated = task + .getFirstDayNotConsolidated(); + for (DayAssignment dayAssignment : task.getDayAssignments()) { + if (dayAssignment.getDay().compareTo( + firstDayNotConsolidated) >= 0) { + dayAssignment.setConsolidated(false); + } + } + + LocalDate endExclusive = LocalDate.fromDateFields( + task.getEndDate()).plusDays(1); + + if (consolidation == null) { + Set> allResourceAllocations = task + .getAllResourceAllocations(); + for (ResourceAllocation resourceAllocation : allResourceAllocations) { + resourceAllocation + .setOnDayAssignmentRemoval(new DetachDayAssignmentOnRemoval()); + reassign(resourceAllocation, firstDayNotConsolidated, + endExclusive, resourceAllocation + .getOriginalTotalAssigment()); + } + } else { + Set pendingConsolidatedHours = consolidation + .getConsolidatedValues().last() + .getPendingConsolidatedHours(); + for (PendingConsolidatedHoursPerResourceAllocation pendingConsolidatedHour : pendingConsolidatedHours) { + ResourceAllocation resourceAllocation = pendingConsolidatedHour + .getResourceAllocation(); + reassign(resourceAllocation, firstDayNotConsolidated, + endExclusive, pendingConsolidatedHour + .getPendingConsolidatedHours()); + } + } } } }