diff --git a/src/main/java/org/folio/orders/utils/HelperUtils.java b/src/main/java/org/folio/orders/utils/HelperUtils.java index b1d5885a7..2f09d0027 100644 --- a/src/main/java/org/folio/orders/utils/HelperUtils.java +++ b/src/main/java/org/folio/orders/utils/HelperUtils.java @@ -155,7 +155,7 @@ public static Integer calculateTotalLocationQuantity(Location location) { */ public static int calculateTotalQuantity(CompositePoLine compPOL) { Cost cost = compPOL.getCost(); - int eQuantity = ObjectUtils.defaultIfNull(cost.getQuantityElectronic(), 0); + int eQuantity = ObjectUtils.defaultIfNull(cost.getQuantityElectronic(), 0); int physicalQuantity = ObjectUtils.defaultIfNull(cost.getQuantityPhysical(), 0); return eQuantity + physicalQuantity; } @@ -177,7 +177,7 @@ public static int calculateInventoryItemsQuantity(CompositePoLine compPOL) { /** * Calculates items quantity for specified locations. * - * @param compPOL composite PO Line + * @param compPOL composite PO Line * @param locations list of locations to calculate quantity for * @return quantity of items expected in the inventory for PO Line * @see #calculateInventoryItemsQuantity(CompositePoLine) @@ -297,27 +297,25 @@ public static MonetaryAmount calculateEncumbranceEffectiveAmount(MonetaryAmount } public static int getPhysicalLocationsQuantity(List locations) { - if (CollectionUtils.isNotEmpty(locations)) { - return locations.stream() - .map(Location::getQuantityPhysical) - .filter(Objects::nonNull) - .mapToInt(Integer::intValue) - .sum(); - } else { + if (CollectionUtils.isEmpty(locations)) { return 0; } + return locations.stream() + .map(Location::getQuantityPhysical) + .filter(Objects::nonNull) + .mapToInt(Integer::intValue) + .sum(); } public static int getElectronicLocationsQuantity(List locations) { - if (CollectionUtils.isNotEmpty(locations)) { - return locations.stream() - .map(Location::getQuantityElectronic) - .filter(Objects::nonNull) - .mapToInt(Integer::intValue) - .sum(); - } else { + if (CollectionUtils.isEmpty(locations)) { return 0; } + return locations.stream() + .map(Location::getQuantityElectronic) + .filter(Objects::nonNull) + .mapToInt(Integer::intValue) + .sum(); } /** @@ -375,8 +373,6 @@ public static CompositePurchaseOrder convertToCompositePurchaseOrder(JsonObject } public static boolean changeOrderStatus(PurchaseOrder purchaseOrder, List poLines) { - boolean isUpdateRequired = false; - if (toBeCancelled(purchaseOrder, poLines)) { purchaseOrder.setWorkflowStatus(PurchaseOrder.WorkflowStatus.CLOSED); purchaseOrder.setCloseReason(new CloseReason().withReason(REASON_CANCELLED)); @@ -384,14 +380,17 @@ public static boolean changeOrderStatus(PurchaseOrder purchaseOrder, List values, String fieldName, boolean strictMatch) { @@ -468,8 +467,7 @@ public static void verifyTitles(Map> lineIdTitles, Map> titles, Map poLineById) { - if (titles.keySet().stream().anyMatch(lineId -> titles.get(lineId).size() > 1 && - !poLineById.get(lineId).getIsPackage())) { + if (titles.keySet().stream().anyMatch(lineId -> titles.get(lineId).size() > 1 && !poLineById.get(lineId).getIsPackage())) { throw new HttpException(400, MULTIPLE_NONPACKAGE_TITLES); } } @@ -498,17 +496,17 @@ public static ConversionQuery getConversionQuery(Double exchangeRate, String fro } public static void makePoLinePending(CompositePoLine poLine) { - if (poLine.getPaymentStatus() == CompositePoLine.PaymentStatus.AWAITING_PAYMENT) { - poLine.setPaymentStatus(CompositePoLine.PaymentStatus.PENDING); - } - if (poLine.getReceiptStatus() == CompositePoLine.ReceiptStatus.AWAITING_RECEIPT) { - poLine.setReceiptStatus(CompositePoLine.ReceiptStatus.PENDING); - } + if (poLine.getPaymentStatus() == CompositePoLine.PaymentStatus.AWAITING_PAYMENT) { + poLine.setPaymentStatus(CompositePoLine.PaymentStatus.PENDING); + } + if (poLine.getReceiptStatus() == CompositePoLine.ReceiptStatus.AWAITING_RECEIPT) { + poLine.setReceiptStatus(CompositePoLine.ReceiptStatus.PENDING); + } } public static ConversionQuery buildConversionQuery(PoLine poLine, String systemCurrency) { Cost cost = poLine.getCost(); - if (cost.getExchangeRate() != null){ + if (cost.getExchangeRate() != null) { return ConversionQueryBuilder.of().setBaseCurrency(cost.getCurrency()) .setTermCurrency(systemCurrency) .set(RATE_KEY, cost.getExchangeRate()).build(); diff --git a/src/main/java/org/folio/service/pieces/flows/update/PieceUpdateFlowInventoryManager.java b/src/main/java/org/folio/service/pieces/flows/update/PieceUpdateFlowInventoryManager.java index fbd148c77..198de6ae0 100644 --- a/src/main/java/org/folio/service/pieces/flows/update/PieceUpdateFlowInventoryManager.java +++ b/src/main/java/org/folio/service/pieces/flows/update/PieceUpdateFlowInventoryManager.java @@ -45,9 +45,7 @@ public Future processInventory(PieceUpdateHolder holder, RequestContext re .compose(aVoid -> { if (Boolean.TRUE.equals(holder.getOriginPoLine().getIsPackage())) { return packagePoLineUpdateInventory(holder, requestContext); - } - else - { + } else { return nonPackagePoLineUpdateInventory(holder, requestContext); } }); @@ -93,15 +91,15 @@ private Future handleHolding(PieceUpdateHolder holder, RequestContext if (instanceId != null && DefaultPieceFlowsValidator.isCreateHoldingForPiecePossible(pieceToUpdate, poLineToSave)) { Location location = new Location().withLocationId(pieceToUpdate.getLocationId()); return inventoryManager.getOrCreateHoldingsRecord(instanceId, location, requestContext) - .map(holdingId -> { - Optional.ofNullable(holdingId).ifPresent(holdingIdP -> { - pieceToUpdate.setLocationId(null); - pieceToUpdate.setHoldingId(holdingId); - location.setLocationId(null); - location.setHoldingId(holdingId); - }); - return location; - }); + .map(holdingId -> { + Optional.ofNullable(holdingId).ifPresent(holdingIdP -> { + pieceToUpdate.setLocationId(null); + pieceToUpdate.setHoldingId(holdingId); + location.setLocationId(null); + location.setHoldingId(holdingId); + }); + return location; + }); } return Future.succeededFuture(new Location().withLocationId(pieceToUpdate.getLocationId())); } @@ -109,20 +107,21 @@ private Future handleHolding(PieceUpdateHolder holder, RequestContext private Future handleItem(PieceUpdateHolder holder, RequestContext requestContext) { CompositePoLine poLineToSave = holder.getPoLineToSave(); Piece pieceToUpdate = holder.getPieceToUpdate(); - if (DefaultPieceFlowsValidator.isCreateItemForPiecePossible(pieceToUpdate, poLineToSave)) { - return inventoryManager.getItemRecordById(pieceToUpdate.getItemId(), true, requestContext) - .compose(jsonItem -> { - if (holder.isCreateItem() && (jsonItem == null || jsonItem.isEmpty()) && pieceToUpdate.getHoldingId() != null) { + if (!DefaultPieceFlowsValidator.isCreateItemForPiecePossible(pieceToUpdate, poLineToSave)) { + return Future.succeededFuture(); + } + return inventoryManager.getItemRecordById(pieceToUpdate.getItemId(), true, requestContext) + .compose(jsonItem -> { + boolean noJsonItem = jsonItem == null || jsonItem.isEmpty(); + if (holder.isCreateItem() && noJsonItem && pieceToUpdate.getHoldingId() != null) { return pieceUpdateInventoryService.manualPieceFlowCreateItemRecord(pieceToUpdate, poLineToSave, requestContext); - } else if (jsonItem != null && !jsonItem.isEmpty()) { - return updateItemWithFields(jsonItem, poLineToSave, pieceToUpdate).compose( - aVoid -> inventoryManager.updateItem(jsonItem, requestContext).map(item -> jsonItem.getString(ID))); - } else { - return Future.succeededFuture(); } + if (!noJsonItem) { + return updateItemWithFields(jsonItem, poLineToSave, pieceToUpdate) + .compose(ignored -> inventoryManager.updateItem(jsonItem, requestContext).map(item -> jsonItem.getString(ID))); + } + return Future.succeededFuture(); }); - } - return Future.succeededFuture(); } private Future updateItemWithFields(JsonObject item, CompositePoLine compPOL, Piece piece) { @@ -137,28 +136,27 @@ private Future updateItemWithFields(JsonObject item, CompositePoLine compP private Future nonPackageUpdateTitleWithInstance(PieceUpdateHolder holder, RequestContext requestContext) { CompositePoLine poLineToSave = holder.getPoLineToSave(); Piece pieceToUpdate = holder.getPieceToUpdate(); - if (poLineToSave.getInstanceId() == null && !PoLineCommonUtil.isInventoryUpdateNotRequired(poLineToSave)) { - return titlesService.getTitleById(pieceToUpdate.getTitleId(), requestContext) - .compose(title -> { - if (title.getInstanceId() == null) { - return createTitleInstance(title, requestContext); - } - return Future.succeededFuture(title.getInstanceId()); - }) - .map(instanceId -> poLineToSave.withInstanceId(instanceId).getInstanceId()); + if (poLineToSave.getInstanceId() != null || PoLineCommonUtil.isInventoryUpdateNotRequired(poLineToSave)) { + return Future.succeededFuture(poLineToSave.getInstanceId()); } - return Future.succeededFuture(poLineToSave.getInstanceId()); + return titlesService.getTitleById(pieceToUpdate.getTitleId(), requestContext) + .compose(title -> { + if (title.getInstanceId() == null) { + return createTitleInstance(title, requestContext); + } + return Future.succeededFuture(title.getInstanceId()); + }) + .map(instanceId -> poLineToSave.withInstanceId(instanceId).getInstanceId()); } private Future packageUpdateTitleWithInstance(Title title, RequestContext requestContext) { if (title.getInstanceId() != null) { return Future.succeededFuture(title); - } else { - return inventoryManager.getOrCreateInstanceRecord(title, requestContext) - .map(title::withInstanceId) - .compose(titleWithInstanceId -> titlesService.saveTitle(titleWithInstanceId, requestContext)) - .map(v -> title); } + return inventoryManager.getOrCreateInstanceRecord(title, requestContext) + .map(title::withInstanceId) + .compose(titleWithInstanceId -> titlesService.saveTitle(titleWithInstanceId, requestContext)) + .map(v -> title); } private Future<String> createTitleInstance(Title title, RequestContext requestContext) {