ItEr58S19CUDesconsolidacion: Removing advances consolidation.

This commit is contained in:
Manuel Rego Casasnovas 2010-05-26 18:39:37 +02:00 committed by Javier Moran Rua
parent 8b3037746a
commit 602175c9d7
2 changed files with 62 additions and 13 deletions

View file

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

View file

@ -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<ResourceAllocation<?>> allResourceAllocations = task
.getAllResourceAllocations();
for (ResourceAllocation<?> resourceAllocation : allResourceAllocations) {
resourceAllocation
.setOnDayAssignmentRemoval(new DetachDayAssignmentOnRemoval());
reassign(resourceAllocation, firstDayNotConsolidated,
endExclusive, resourceAllocation
.getOriginalTotalAssigment());
}
} else {
Set<PendingConsolidatedHoursPerResourceAllocation> pendingConsolidatedHours = consolidation
.getConsolidatedValues().last()
.getPendingConsolidatedHours();
for (PendingConsolidatedHoursPerResourceAllocation pendingConsolidatedHour : pendingConsolidatedHours) {
ResourceAllocation<?> resourceAllocation = pendingConsolidatedHour
.getResourceAllocation();
reassign(resourceAllocation, firstDayNotConsolidated,
endExclusive, pendingConsolidatedHour
.getPendingConsolidatedHours());
}
}
}
}
}