Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,8 @@ public static String buildPoLineNumber(String poNumber, String sequence) {
return poNumber + DASH_SEPARATOR + sequence;
}

public static List<PoLine> sortPoLinesByPoLineNumber(List<PoLine> poLines) {
public static void sortPoLinesByPoLineNumber(List<PoLine> poLines) {
poLines.sort(PoLineCommonUtil::comparePoLinesByPoLineNumber);
return poLines;
}

private static int comparePoLinesByPoLineNumber(PoLine poLine1, PoLine poLine2) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ public Future<Void> validateOrderForUpdate(CompositePurchaseOrder compPO, Compos
.compose(ok -> {
if (isTransitionToPending(poFromStorage, compPO)) {
checkOrderUnopenPermissions(requestContext);
return unOpenCompositeOrderManager.checkRequests(compPO, requestContext);
return unOpenCompositeOrderManager.checkRequests(compPO, poFromStorage, requestContext);
}
return Future.succeededFuture();
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,21 +91,26 @@ public UnOpenCompositeOrderManager(PurchaseOrderLineService purchaseOrderLineSer
}

public Future<Void> process(CompositePurchaseOrder compPO, CompositePurchaseOrder poFromStorage, boolean deleteHoldings, RequestContext requestContext) {
return updateAndGetOrderWithLines(compPO, requestContext)
.map(aVoid -> encumbranceWorkflowStrategyFactory.getStrategy(OrderWorkflowType.OPEN_TO_PENDING))
.compose(strategy -> strategy.processEncumbrances(compPO, poFromStorage, requestContext))
if (CollectionUtils.isEmpty(compPO.getPoLines())) {
compPO.setPoLines(poFromStorage.getPoLines());
}
var strategy = encumbranceWorkflowStrategyFactory.getStrategy(OrderWorkflowType.OPEN_TO_PENDING);
return strategy.processEncumbrances(compPO, poFromStorage, requestContext)
.compose(ok -> processInventory(compPO.getPoLines(), deleteHoldings, requestContext))
.compose(ok -> asFuture(() -> compPO.getPoLines().forEach(this::makePoLinePending)))
.compose(ok -> updatePoLinesSummary(compPO.getPoLines(), requestContext));

}

public Future<Void> rollbackInventory(CompositePurchaseOrder compPO, RequestContext requestContext) {
return processPoLines(compPO.getPoLines(), poLine -> processInventory(poLine, true, requestContext));
}

public Future<Void> checkRequests(CompositePurchaseOrder compPO, RequestContext requestContext) {
List<PoLine> poLines = compPO.getPoLines().stream()
public Future<Void> checkRequests(CompositePurchaseOrder compPO, CompositePurchaseOrder poFromStorage, RequestContext requestContext) {
List<PoLine> poLines = compPO.getPoLines();
if (CollectionUtils.isEmpty(poLines)) {
poLines = poFromStorage.getPoLines();
}
poLines = poLines.stream()
.filter(poLine -> !Boolean.TRUE.equals(poLine.getIsPackage()))
.toList();
HashMap<String, List<String>> tenantIdToPoLineIds = createTenantIdToPoLineIdsMap(poLines);
Expand Down Expand Up @@ -142,15 +147,6 @@ private HashMap<String, List<String>> createTenantIdToPoLineIdsMap(List<PoLine>
return tenantIdToPoLineIds;
}

private Future<CompositePurchaseOrder> updateAndGetOrderWithLines(CompositePurchaseOrder compPO, RequestContext requestContext) {
if (CollectionUtils.isNotEmpty(compPO.getPoLines())) {
return Future.succeededFuture(compPO);
}
return purchaseOrderLineService.getPoLinesByOrderId(compPO.getId(), requestContext)
.map(poLines -> compPO.withPoLines(PoLineCommonUtil.sortPoLinesByPoLineNumber(poLines)))
.map(v -> compPO);
}

private void makePoLinePending(PoLine poLine) {
if (SUPPORTED_PAYMENT_STATUSES.contains(poLine.getPaymentStatus())) {
poLine.setPaymentStatus(PoLine.PaymentStatus.PENDING);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -528,7 +528,7 @@ void testErrorWhenItemHasRequest() {
PoLine poLine = getPoLine(order);
prepareInitialSetup(order, orderFromStorage, poLine, 1);
//When
Future<Void> future = unOpenCompositeOrderManager.checkRequests(order, requestContext);
Future<Void> future = unOpenCompositeOrderManager.checkRequests(order, orderFromStorage, requestContext);
//Then
assertTrue(future.failed());
HttpException exception = (HttpException) future.cause();
Expand Down