diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/subcontract/impl/SubcontractServiceREST.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/subcontract/impl/SubcontractServiceREST.java index e5fd25c5b..b5ed60bf5 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/subcontract/impl/SubcontractServiceREST.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/subcontract/impl/SubcontractServiceREST.java @@ -45,6 +45,7 @@ import org.navalplanner.business.orders.daos.IOrderElementDAO; import org.navalplanner.business.orders.entities.Order; import org.navalplanner.business.orders.entities.OrderElement; import org.navalplanner.business.orders.entities.OrderStatusEnum; +import org.navalplanner.business.scenarios.daos.IScenarioDAO; import org.navalplanner.business.scenarios.entities.OrderVersion; import org.navalplanner.business.scenarios.entities.Scenario; import org.navalplanner.ws.common.api.InstanceConstraintViolationsDTO; @@ -82,6 +83,9 @@ public class SubcontractServiceREST implements ISubcontractService { @Autowired private IOrderSequenceDAO orderSequenceDAO; + @Autowired + private IScenarioDAO scenarioDAO; + @Override @POST @Consumes("application/xml") @@ -129,10 +133,14 @@ public class SubcontractServiceREST implements ISubcontractService { Order order; if (orderElement instanceof Order) { order = (Order) orderElement; + order.setVersionForScenario(current, version); + order.useSchedulingDataFor(version); } else { order = wrapInOrder(current, version, orderElement); } + addOrderToDerivedScenarios(current, version, order); + order.moveCodeToExternalCode(); order.setCodeAutogenerated(true); String code = orderSequenceDAO.getNextOrderCode(); @@ -172,6 +180,15 @@ public class SubcontractServiceREST implements ISubcontractService { instanceConstraintViolationsList); } + private void addOrderToDerivedScenarios(Scenario currentScenario, + OrderVersion orderVersion, Order order) { + List derivedScenarios = scenarioDAO + .getDerivedScenarios(currentScenario); + for (Scenario scenario : derivedScenarios) { + scenario.addOrder(order, orderVersion); + } + } + private void generateCodes(Order order) { OrderSequence orderSequence = orderSequenceDAO.getActiveOrderSequence(); int numberOfDigits = orderSequence.getNumberOfDigits();