[Bug #1192] Fix bug

Also fix some other problems that prevented to create an order from a
template.

FEA: ItEr75S04BugFixing
This commit is contained in:
Óscar González Fernández 2011-09-27 18:23:50 +02:00
parent ed16e9b1ad
commit 47000bc477
4 changed files with 24 additions and 4 deletions

View file

@ -1444,4 +1444,8 @@ public abstract class OrderElement extends IntegrationEntity implements
}
}
public List<OrderVersion> getOrderVersions() {
return new ArrayList<OrderVersion>(schedulingDatasForVersion.keySet());
}
}

View file

@ -398,7 +398,7 @@ public class OrderModel extends IntegrationEntityModel implements IOrderModel {
loadNeededDataForConversation();
Order order = createOrderFrom((OrderTemplate) templateDAO
.findExistingEntity(template.getId()));
planningStateCreator.createOn(desktop, order);
planningState = planningStateCreator.createOn(desktop, order);
forceLoadAdvanceAssignmentsAndMeasurements(planningState.getOrder());
initializeOrder();
}

View file

@ -169,6 +169,9 @@ public class PlanningStateCreator {
}
void setupScenario(Order order) {
if (!order.hasNoVersions()) {
return;
}
Scenario currentScenario = scenarioManager.getCurrent();
OrderVersion orderVersion = currentScenario.addOrder(order);
order.setVersionForScenario(currentScenario, orderVersion);
@ -428,8 +431,8 @@ public class PlanningStateCreator {
public void saveVersioningInfo() throws IllegalStateException {
current.saveVersioningInfo();
}
}
public void afterCommit() {
if (current instanceof ChangeScenarioInfoOnSave) {
current = new UsingOwnerScenario(current.getCurrentScenario(),
@ -466,12 +469,24 @@ public class PlanningStateCreator {
public void saveVersioningInfo() {
OrderVersion orderVersion = order.getCurrentVersionInfo()
.getOrderVersion();
if (order.isNewObject()) {
scenarioDAO.updateDerivedScenariosWithNewVersion(null, order,
currentScenario, orderVersion);
}
orderVersion.savingThroughOwner();
synchronizeWithSchedule(order,
TaskSource.persistTaskSources(taskSourceDAO));
synchronizeWithSchedule(order, getPersistence());
order.writeSchedulingDataChanges();
}
IOptionalPersistence getPersistence() {
if (order.isNewObject()) {
return TaskSource
.persistButDontRemoveTaskSources(taskSourceDAO);
} else {
return TaskSource.persistTaskSources(taskSourceDAO);
}
}
@Override
public void afterCommit() {
// do nothing

View file

@ -748,6 +748,7 @@ public class SaveCommandBuilder {
private void dontPoseAsTransientObjectAnymore(OrderElement orderElement) {
orderElement.dontPoseAsTransientObjectAnymore();
dontPoseAsTransientObjectAnymore(orderElement.getOrderVersions());
dontPoseAsTransientObjectAnymore(orderElement
.getTaskSourcesFromBottomToTop());
dontPoseAsTransientObjectAnymore(orderElement