diff --git a/libreplan-webapp/src/main/java/org/libreplan/ws/orders/impl/OrderElementServiceREST.java b/libreplan-webapp/src/main/java/org/libreplan/ws/orders/impl/OrderElementServiceREST.java index 65aa42c3b..aaf1d487c 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/ws/orders/impl/OrderElementServiceREST.java +++ b/libreplan-webapp/src/main/java/org/libreplan/ws/orders/impl/OrderElementServiceREST.java @@ -21,6 +21,8 @@ package org.libreplan.ws.orders.impl; +import java.util.UUID; + import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.GET; @@ -31,7 +33,9 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; +import org.libreplan.business.common.daos.IEntitySequenceDAO; import org.libreplan.business.common.daos.IIntegrationEntityDAO; +import org.libreplan.business.common.entities.EntityNameEnum; import org.libreplan.business.common.exceptions.InstanceNotFoundException; import org.libreplan.business.common.exceptions.ValidationException; import org.libreplan.business.orders.daos.IOrderDAO; @@ -73,6 +77,9 @@ public class OrderElementServiceREST extends @Autowired private IScenarioManager scenarioManager; + @Autowired + private IEntitySequenceDAO entitySequenceDAO; + @Override @GET @Transactional(readOnly = true) @@ -139,6 +146,18 @@ public class OrderElementServiceREST extends OrderLineGroup parent = orderElement.getParent(); parent.remove(orderElement); + if (!parent.isOrder() && parent.getChildren().isEmpty()) { + OrderElement newElement = parent.toLeaf(); + if (!order.isCodeAutogenerated()) { + newElement.setCode(UUID.randomUUID().toString()); + } + parent.getParent().replace(parent, newElement); + if (order.isCodeAutogenerated()) { + order.generateOrderElementCodes(entitySequenceDAO + .getNumberOfDigitsCode(EntityNameEnum.ORDER)); + } + } + orderDAO.save(order); }