diff --git a/src/main/java/org/etsi/osl/tmf/so641/reposervices/ServiceOrderRepoService.java b/src/main/java/org/etsi/osl/tmf/so641/reposervices/ServiceOrderRepoService.java index d7214c4134e38adee1fbce93d8b92e3100e1f5d8..cd5a5022e5c4d6df41acf94b4e31ff25654817dc 100644 --- a/src/main/java/org/etsi/osl/tmf/so641/reposervices/ServiceOrderRepoService.java +++ b/src/main/java/org/etsi/osl/tmf/so641/reposervices/ServiceOrderRepoService.java @@ -539,6 +539,7 @@ public class ServiceOrderRepoService { ServiceOrder so = this.findByUuid(id); boolean stateChanged = false; + boolean expectedCompletionDateChanged = false; //logger.info("so:" + so.toString()); for (ServiceOrderItem oi : so.getOrderItem() ) { @@ -590,7 +591,7 @@ public class ServiceOrderRepoService { if ( serviceOrderUpd.getExpectedCompletionDate()!= null ) { so.setExpectedCompletionDate(serviceOrderUpd.getExpectedCompletionDate()); - + expectedCompletionDateChanged = true; } if ( serviceOrderUpd.getStartDate()!= null ) { @@ -655,8 +656,15 @@ public class ServiceOrderRepoService { so.addNoteItem(noteItem); } - - + // Update each Service's end date to the updated Service Order's expected completion date + if (expectedCompletionDateChanged) { + List services = serviceRepoService.getServicesFromOrderID(id); + + for (String serviceId : services) { + org.etsi.osl.tmf.sim638.model.Service service = serviceRepoService.findByUuid(serviceId); + service.setEndDate(so.getExpectedCompletionDate()); + } + } diff --git a/src/test/java/org/etsi/osl/services/api/ServiceOrderIntegrationTest.java b/src/test/java/org/etsi/osl/services/api/ServiceOrderIntegrationTest.java index 3368f21209ed646541655f035e8bce49139067ce..017804bfc044adbd710d2f7999d0fc1dc7696406 100644 --- a/src/test/java/org/etsi/osl/services/api/ServiceOrderIntegrationTest.java +++ b/src/test/java/org/etsi/osl/services/api/ServiceOrderIntegrationTest.java @@ -33,6 +33,7 @@ import java.net.URI; import java.time.OffsetDateTime; import java.time.ZoneOffset; import java.util.ArrayList; +import java.util.List; import org.apache.camel.CamelContext; import org.apache.camel.RoutesBuilder; @@ -355,9 +356,19 @@ public class ServiceOrderIntegrationTest { ServiceOrder sspeccr1SO = JsonUtils.toJsonObj(sspectextSO, ServiceOrder.class); assertThat(sspeccr1SO).isNotNull(); - - - + + // Ensure that all Services' end dates were updated correctly + boolean allSupportingServicesEndDatesUpdatedToServiceOrderExpectedCompletionDate = true; + List services = serviceRepoService.getServicesFromOrderID(responseSO.getId()); + + for (String serviceId : services) { + Service service = serviceRepoService.findByUuid(serviceId); + if (!service.getEndDate().equals(responseSOUpd.getExpectedCompletionDate())) { + allSupportingServicesEndDatesUpdatedToServiceOrderExpectedCompletionDate = false; + break; + } + } + assertThat(allSupportingServicesEndDatesUpdatedToServiceOrderExpectedCompletionDate).isTrue(); } @WithMockUser(username="osadmin", roles = {"USER"})