[Bug #989] Fix bug
Discount the removed allocations too. FEA: ItEr74S04BugFixing
This commit is contained in:
parent
e7bf3dc4dd
commit
1c8f0ca864
5 changed files with 40 additions and 25 deletions
|
|
@ -231,10 +231,10 @@ public class GenericResourceAllocation extends
|
|||
|
||||
private IAssignedEffortForResource assignedEffortCalculatorOverriden = null;
|
||||
|
||||
public void overrideAssignedHoursForResource(
|
||||
GenericResourceAllocation allocation) {
|
||||
assignedEffortCalculatorOverriden = allocation
|
||||
.getAssignedEffortForResource();
|
||||
public void discountAssignedHoursForResourceFrom(
|
||||
Collection<? extends ResourceAllocation<?>> allocations) {
|
||||
assignedEffortCalculatorOverriden = new AssignedEffortDiscounting(
|
||||
allocations);
|
||||
}
|
||||
|
||||
private IAssignedEffortForResource getAssignedEffortForResource() {
|
||||
|
|
|
|||
|
|
@ -104,11 +104,12 @@ public abstract class AllocationRow {
|
|||
}
|
||||
|
||||
public static List<ResourcesPerDayModification> createAndAssociate(
|
||||
Task task, Collection<? extends AllocationRow> rows) {
|
||||
Task task, Collection<? extends AllocationRow> rows,
|
||||
Collection<? extends ResourceAllocation<?>> requestedToRemove) {
|
||||
List<ResourcesPerDayModification> result = new ArrayList<ResourcesPerDayModification>();
|
||||
for (AllocationRow each : rows) {
|
||||
ResourcesPerDayModification modification = each
|
||||
.toResourcesPerDayModification(task);
|
||||
.toResourcesPerDayModification(task, requestedToRemove);
|
||||
result.add(modification);
|
||||
each.setTemporal(modification.getBeingModified());
|
||||
}
|
||||
|
|
@ -126,11 +127,12 @@ public abstract class AllocationRow {
|
|||
}
|
||||
|
||||
public static List<HoursModification> createHoursModificationsAndAssociate(
|
||||
Task task, List<AllocationRow> currentRows) {
|
||||
Task task, List<AllocationRow> currentRows,
|
||||
Collection<? extends ResourceAllocation<?>> requestedToRemove) {
|
||||
List<HoursModification> result = new ArrayList<HoursModification>();
|
||||
for (AllocationRow each : currentRows) {
|
||||
HoursModification hoursModification = each
|
||||
.toHoursModification(task);
|
||||
HoursModification hoursModification = each.toHoursModification(
|
||||
task, requestedToRemove);
|
||||
result.add(hoursModification);
|
||||
each.setTemporal(hoursModification.getBeingModified());
|
||||
}
|
||||
|
|
@ -238,9 +240,11 @@ public abstract class AllocationRow {
|
|||
}
|
||||
|
||||
public abstract ResourcesPerDayModification toResourcesPerDayModification(
|
||||
Task task);
|
||||
Task task,
|
||||
Collection<? extends ResourceAllocation<?>> requestedToRemove);
|
||||
|
||||
public abstract HoursModification toHoursModification(Task task);
|
||||
public abstract HoursModification toHoursModification(Task task,
|
||||
Collection<? extends ResourceAllocation<?>> requestedToRemove);
|
||||
|
||||
public boolean isCreating() {
|
||||
return origin == null;
|
||||
|
|
|
|||
|
|
@ -31,11 +31,11 @@ import org.joda.time.LocalDate;
|
|||
import org.navalplanner.business.calendars.entities.ThereAreHoursOnWorkHoursCalculator.CapacityResult;
|
||||
import org.navalplanner.business.orders.entities.HoursGroup;
|
||||
import org.navalplanner.business.planner.entities.CalculatedValue;
|
||||
import org.navalplanner.business.planner.entities.ResourceAllocation;
|
||||
import org.navalplanner.business.planner.entities.Task;
|
||||
import org.navalplanner.business.planner.entities.DerivedAllocationGenerator.IWorkerFinder;
|
||||
import org.navalplanner.business.planner.entities.ResourceAllocation.Direction;
|
||||
import org.navalplanner.business.planner.entities.ResourceAllocation;
|
||||
import org.navalplanner.business.planner.entities.ResourceAllocation.AllocationsSpecified.INotFulfilledReceiver;
|
||||
import org.navalplanner.business.planner.entities.ResourceAllocation.Direction;
|
||||
import org.navalplanner.business.planner.entities.Task;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.HoursModification;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.ResourcesPerDayModification;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
|
|
@ -254,7 +254,7 @@ public class AllocationRowsHandler {
|
|||
|
||||
private void calculateNumberOfHoursAllocation() {
|
||||
List<ResourcesPerDayModification> allocations = AllocationRow
|
||||
.createAndAssociate(task, currentRows);
|
||||
.createAndAssociate(task, currentRows, requestedToRemove);
|
||||
if (isForwardsAllocation()) {
|
||||
ResourceAllocation.allocating(allocations).allocateUntil(
|
||||
formBinder.getAllocationEnd());
|
||||
|
|
@ -270,7 +270,7 @@ public class AllocationRowsHandler {
|
|||
|
||||
private void calculateEndDateOrStartDateAllocation() {
|
||||
List<ResourcesPerDayModification> allocations = AllocationRow
|
||||
.createAndAssociate(task, currentRows);
|
||||
.createAndAssociate(task, currentRows, requestedToRemove);
|
||||
ResourceAllocation.allocating(allocations).untilAllocating(
|
||||
task.getAllocationDirection(),
|
||||
formBinder.getAssignedHours(), notFullfiledReceiver());
|
||||
|
|
@ -294,7 +294,8 @@ public class AllocationRowsHandler {
|
|||
|
||||
private void calculateResourcesPerDayAllocation() {
|
||||
List<HoursModification> hours = AllocationRow
|
||||
.createHoursModificationsAndAssociate(task, currentRows);
|
||||
.createHoursModificationsAndAssociate(task, currentRows,
|
||||
requestedToRemove);
|
||||
if (isForwardsAllocation()) {
|
||||
ResourceAllocation.allocatingHours(hours).allocateUntil(
|
||||
formBinder.getAllocationEnd());
|
||||
|
|
|
|||
|
|
@ -117,26 +117,34 @@ public class GenericAllocationRow extends AllocationRow {
|
|||
}
|
||||
|
||||
@Override
|
||||
public ResourcesPerDayModification toResourcesPerDayModification(Task task) {
|
||||
GenericResourceAllocation newGeneric = createGenericAllocation(task);
|
||||
public ResourcesPerDayModification toResourcesPerDayModification(Task task,
|
||||
Collection<? extends ResourceAllocation<?>> requestedToRemove) {
|
||||
GenericResourceAllocation newGeneric = createGenericAllocation(task,
|
||||
requestedToRemove);
|
||||
return ResourcesPerDayModification
|
||||
.create(newGeneric, getNonConsolidatedResourcesPerDay(), this.resources);
|
||||
}
|
||||
|
||||
private GenericResourceAllocation createGenericAllocation(Task task) {
|
||||
private GenericResourceAllocation createGenericAllocation(Task task,
|
||||
Collection<? extends ResourceAllocation<?>> allocationsRemoved) {
|
||||
GenericResourceAllocation result = GenericResourceAllocation.create(
|
||||
task, resourceType, criterions);
|
||||
GenericResourceAllocation origin = (GenericResourceAllocation) getOrigin();
|
||||
Set<ResourceAllocation<?>> discountFrom = new HashSet<ResourceAllocation<?>>(
|
||||
allocationsRemoved);
|
||||
if (origin != null) {
|
||||
result.overrideAssignedHoursForResource(origin);
|
||||
result.overrideConsolidatedDayAssignments(origin);
|
||||
discountFrom.add(origin);
|
||||
}
|
||||
result.discountAssignedHoursForResourceFrom(discountFrom);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HoursModification toHoursModification(Task task) {
|
||||
return HoursModification.create(createGenericAllocation(task),
|
||||
public HoursModification toHoursModification(Task task,
|
||||
Collection<? extends ResourceAllocation<?>> requestedToRemove) {
|
||||
return HoursModification.create(
|
||||
createGenericAllocation(task, requestedToRemove),
|
||||
getHoursFromInput(), resources);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -106,7 +106,8 @@ public class SpecificAllocationRow extends AllocationRow {
|
|||
private Resource resource;
|
||||
|
||||
@Override
|
||||
public ResourcesPerDayModification toResourcesPerDayModification(Task task) {
|
||||
public ResourcesPerDayModification toResourcesPerDayModification(Task task,
|
||||
Collection<? extends ResourceAllocation<?>> requestedToRemove) {
|
||||
return ResourcesPerDayModification.create(createSpecific(task),
|
||||
getNonConsolidatedResourcesPerDay());
|
||||
}
|
||||
|
|
@ -121,7 +122,8 @@ public class SpecificAllocationRow extends AllocationRow {
|
|||
}
|
||||
|
||||
@Override
|
||||
public HoursModification toHoursModification(Task task) {
|
||||
public HoursModification toHoursModification(Task task,
|
||||
Collection<? extends ResourceAllocation<?>> requestedToRemove) {
|
||||
return HoursModification.create(createSpecific(task),
|
||||
getHoursFromInput());
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue