diff --git a/NEWS.md b/NEWS.md
index a4ffae8b..dff8aade 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,3 +1,6 @@
+## v1.2.4 2024-12-12
+* MODDCB-152: Support for intermediate requests
+
## v1.2.3 2024-12-02
* MODDCB-90: Accept existing circulation request ID
* MODDCB-105: Accept existing circulation request ID (borrowing transaction)
diff --git a/pom.xml b/pom.xml
index 8649c093..fdd41d90 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
org.folio
mod-dcb
mod-dcb
- 1.2.4-SNAPSHOT
+ 1.2.5-SNAPSHOT
Manage DCB related transactions in folio
jar
diff --git a/src/main/java/org/folio/dcb/service/impl/EcsRequestTransactionsServiceImpl.java b/src/main/java/org/folio/dcb/service/impl/EcsRequestTransactionsServiceImpl.java
index 722660b2..2d409777 100644
--- a/src/main/java/org/folio/dcb/service/impl/EcsRequestTransactionsServiceImpl.java
+++ b/src/main/java/org/folio/dcb/service/impl/EcsRequestTransactionsServiceImpl.java
@@ -1,7 +1,9 @@
package org.folio.dcb.service.impl;
import static org.folio.dcb.domain.dto.DcbTransaction.RoleEnum.BORROWER;
+import static org.folio.dcb.domain.dto.DcbTransaction.RoleEnum.BORROWING_PICKUP;
import static org.folio.dcb.domain.dto.DcbTransaction.RoleEnum.LENDER;
+import static org.folio.dcb.domain.dto.DcbTransaction.RoleEnum.PICKUP;
import java.util.UUID;
@@ -49,7 +51,10 @@ public TransactionStatusResponse createEcsRequestTransactions(String ecsRequestT
RequestStatus.from(circulationRequest.getStatus()))) {
if (dcbTransaction.getRole() == LENDER) {
createLenderEcsRequestTransactions(ecsRequestTransactionsId, dcbTransaction, circulationRequest);
- } else if(dcbTransaction.getRole() == BORROWER) {
+ } else if(dcbTransaction.getRole() == BORROWER
+ || dcbTransaction.getRole() == PICKUP
+ || dcbTransaction.getRole() == BORROWING_PICKUP) {
+
createBorrowerEcsRequestTransactions(ecsRequestTransactionsId, dcbTransaction,
circulationRequest);
} else {
diff --git a/src/main/resources/swagger.api/schemas/CirculationRequest.yaml b/src/main/resources/swagger.api/schemas/CirculationRequest.yaml
index a8fb0c56..c45a1fd3 100644
--- a/src/main/resources/swagger.api/schemas/CirculationRequest.yaml
+++ b/src/main/resources/swagger.api/schemas/CirculationRequest.yaml
@@ -18,6 +18,7 @@ CirculationRequest:
enum:
- Primary
- Secondary
+ - Intermediate
requestLevel:
description: Level of the request - Item or Title
type: string
diff --git a/src/test/java/org/folio/dcb/controller/EcsRequestTransactionsApiControllerTest.java b/src/test/java/org/folio/dcb/controller/EcsRequestTransactionsApiControllerTest.java
index 3b30281f..7b53e395 100644
--- a/src/test/java/org/folio/dcb/controller/EcsRequestTransactionsApiControllerTest.java
+++ b/src/test/java/org/folio/dcb/controller/EcsRequestTransactionsApiControllerTest.java
@@ -2,7 +2,9 @@
import static org.folio.dcb.utils.EntityUtils.CIRCULATION_REQUEST_ID;
import static org.folio.dcb.utils.EntityUtils.createBorrowingEcsRequestTransactionByRole;
+import static org.folio.dcb.utils.EntityUtils.createBorrowingPickupEcsRequestTransactionByRole;
import static org.folio.dcb.utils.EntityUtils.createLendingEcsRequestTransactionByRole;
+import static org.folio.dcb.utils.EntityUtils.createPickupEcsRequestTransactionByRole;
import static org.hamcrest.Matchers.is;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
@@ -83,6 +85,32 @@ void createBorrowingEcsRequestTest() throws Exception {
.andExpect(status().isCreated());
}
+ @Test
+ void createPickupEcsRequestTest() throws Exception {
+ removeExistedTransactionFromDbIfSoExists();
+
+ this.mockMvc.perform(
+ post("/ecs-request-transactions/" + CIRCULATION_REQUEST_ID)
+ .content(asJsonString(createPickupEcsRequestTransactionByRole()))
+ .headers(defaultHeaders())
+ .contentType(MediaType.APPLICATION_JSON)
+ .accept(MediaType.APPLICATION_JSON))
+ .andExpect(status().isCreated());
+ }
+
+ @Test
+ void createBorrowingPickupEcsRequestTest() throws Exception {
+ removeExistedTransactionFromDbIfSoExists();
+
+ this.mockMvc.perform(
+ post("/ecs-request-transactions/" + CIRCULATION_REQUEST_ID)
+ .content(asJsonString(createBorrowingPickupEcsRequestTransactionByRole()))
+ .headers(defaultHeaders())
+ .contentType(MediaType.APPLICATION_JSON)
+ .accept(MediaType.APPLICATION_JSON))
+ .andExpect(status().isCreated());
+ }
+
@Test
void checkErrorStatusForInvalidRequest() throws Exception {
DcbTransaction dcbTransaction = createLendingEcsRequestTransactionByRole();
diff --git a/src/test/java/org/folio/dcb/utils/EntityUtils.java b/src/test/java/org/folio/dcb/utils/EntityUtils.java
index 48d1b1e1..9e469962 100644
--- a/src/test/java/org/folio/dcb/utils/EntityUtils.java
+++ b/src/test/java/org/folio/dcb/utils/EntityUtils.java
@@ -92,6 +92,24 @@ public static DcbTransaction createBorrowingEcsRequestTransactionByRole() {
.build();
}
+ public static DcbTransaction createPickupEcsRequestTransactionByRole() {
+ return DcbTransaction.builder()
+ .requestId(REQUEST_ID)
+ .item(createDcbItem())
+ .role(DcbTransaction.RoleEnum.PICKUP)
+ .pickup(createDcbPickup())
+ .build();
+ }
+
+ public static DcbTransaction createBorrowingPickupEcsRequestTransactionByRole() {
+ return DcbTransaction.builder()
+ .requestId(REQUEST_ID)
+ .item(createDcbItem())
+ .role(DcbTransaction.RoleEnum.BORROWING_PICKUP)
+ .pickup(createDcbPickup())
+ .build();
+ }
+
public static org.folio.dcb.domain.dto.ServicePointRequest createServicePointRequest() {
return org.folio.dcb.domain.dto.ServicePointRequest.builder()
.id(PICKUP_SERVICE_POINT_ID)