Set tasks as START_IN_FIXED_DATE when manual allocation is applied
FEA: ItEr75S23FixAllocationModel
This commit is contained in:
parent
5ea9505610
commit
7d1b96db5c
5 changed files with 32 additions and 12 deletions
|
|
@ -2179,4 +2179,11 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
|
|||
: null;
|
||||
}
|
||||
|
||||
public boolean isManualAssignmentFunction() {
|
||||
if (assignmentFunction != null) {
|
||||
return assignmentFunction.isManual();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1021,4 +1021,22 @@ public class Task extends TaskElement implements ITaskPositionConstrained {
|
|||
return !calendar.getCapacityOn(PartialDay.wholeDay(day)).isZero();
|
||||
}
|
||||
|
||||
public static void convertOnStartInFixedDate(Task task) {
|
||||
TaskPositionConstraint taskConstraint = task.getPositionConstraint();
|
||||
if (taskConstraint.isValid(PositionConstraintType.START_IN_FIXED_DATE,
|
||||
task.getIntraDayStartDate())) {
|
||||
taskConstraint.update(PositionConstraintType.START_IN_FIXED_DATE,
|
||||
task.getIntraDayStartDate());
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isManualAnyAllocation() {
|
||||
for (ResourceAllocation<?> each : resourceAllocations) {
|
||||
if (each.isManualAssignmentFunction()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,10 +28,8 @@ import org.navalplanner.business.common.exceptions.ValidationException;
|
|||
import org.navalplanner.business.externalcompanies.daos.IExternalCompanyDAO;
|
||||
import org.navalplanner.business.externalcompanies.entities.ExternalCompany;
|
||||
import org.navalplanner.business.planner.daos.ISubcontractedTaskDataDAO;
|
||||
import org.navalplanner.business.planner.entities.PositionConstraintType;
|
||||
import org.navalplanner.business.planner.entities.SubcontractedTaskData;
|
||||
import org.navalplanner.business.planner.entities.Task;
|
||||
import org.navalplanner.business.planner.entities.TaskPositionConstraint;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
|
|
@ -109,22 +107,13 @@ public class SubcontractModel implements ISubcontractModel {
|
|||
}
|
||||
|
||||
task.removeAllSatisfiedResourceAllocations();
|
||||
convertOnStartOnFixedDate(task);
|
||||
Task.convertOnStartInFixedDate(task);
|
||||
}
|
||||
|
||||
recalculateTaskLength();
|
||||
}
|
||||
}
|
||||
|
||||
private void convertOnStartOnFixedDate(Task task) {
|
||||
TaskPositionConstraint taskConstraint = task.getPositionConstraint();
|
||||
if (taskConstraint.isValid(PositionConstraintType.START_IN_FIXED_DATE,
|
||||
task.getIntraDayStartDate())) {
|
||||
taskConstraint.update(PositionConstraintType.START_IN_FIXED_DATE,
|
||||
task.getIntraDayStartDate());
|
||||
}
|
||||
}
|
||||
|
||||
private void recalculateTaskLength() {
|
||||
GanttDate previousStartDate = ganttTask.getBeginDate();
|
||||
GanttDate previousEnd = ganttTask.getEndDate();
|
||||
|
|
|
|||
|
|
@ -136,6 +136,9 @@ public class AdvancedAllocationTabCreator {
|
|||
Validate
|
||||
.isTrue(allocationResult.getAggregate() == modifiedAllocations);
|
||||
allocationResult.applyTo(planningState.getCurrentScenario(), task);
|
||||
if (task.isManualAnyAllocation()) {
|
||||
Task.convertOnStartInFixedDate(task);
|
||||
}
|
||||
updateParentsPositions(task);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -143,6 +143,9 @@ public class AdvancedAllocationTaskController extends GenericForwardComposer {
|
|||
@Override
|
||||
public void accepted(AggregateOfResourceAllocations aggregate) {
|
||||
allocation.applyTo(planningState.getCurrentScenario(), task);
|
||||
if (task.isManualAnyAllocation()) {
|
||||
Task.convertOnStartInFixedDate(task);
|
||||
}
|
||||
askForReloads();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue