From b708d821f6818adaa7584fd692397a3fb6ae68a9 Mon Sep 17 00:00:00 2001 From: damien-git Date: Wed, 27 Mar 2024 07:46:35 -0400 Subject: [PATCH] [MODORDERS-1071] Approved invoices should not affect paymentStatus when reopening (#872) --- .../reopen/ReOpenCompositeOrderManager.java | 7 ++--- .../ReOpenCompositeOrderManagerTest.java | 29 +++++++++---------- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/folio/service/orders/flows/update/reopen/ReOpenCompositeOrderManager.java b/src/main/java/org/folio/service/orders/flows/update/reopen/ReOpenCompositeOrderManager.java index 94343dc5c..99ba81d86 100644 --- a/src/main/java/org/folio/service/orders/flows/update/reopen/ReOpenCompositeOrderManager.java +++ b/src/main/java/org/folio/service/orders/flows/update/reopen/ReOpenCompositeOrderManager.java @@ -106,7 +106,7 @@ private void updatePoLinePaymentStatus(CompositePoLine poLine, ReOpenCompositeOr var poLineInvoiceLinesMap = holder.getOrderLineInvoiceLines().stream().collect(groupingBy(InvoiceLine::getPoLineId)); List poLineInvoices = poLineInvoicesMap.get(poLine.getId()); - if (CollectionUtils.isNotEmpty(poLineInvoices) && isAnyInvoicesApprovedOrPaid(poLineInvoices)) { + if (CollectionUtils.isNotEmpty(poLineInvoices) && isAnyInvoicePaid(poLineInvoices)) { var invoiceLines = poLineInvoiceLinesMap.get(poLine.getId()); if (isAnyInvoiceLineReleaseEncumbrance(invoiceLines)) { poLine.setPaymentStatus(CompositePoLine.PaymentStatus.FULLY_PAID); @@ -122,9 +122,8 @@ private boolean isAnyInvoiceLineReleaseEncumbrance(List invoiceLine return invoiceLines.stream().anyMatch(InvoiceLine::getReleaseEncumbrance); } - private boolean isAnyInvoicesApprovedOrPaid(List poLineInvoices) { - return poLineInvoices.stream().anyMatch(invoice -> Invoice.Status.APPROVED.equals(invoice.getStatus()) || - Invoice.Status.PAID.equals(invoice.getStatus())); + private boolean isAnyInvoicePaid(List poLineInvoices) { + return poLineInvoices.stream().anyMatch(invoice -> Invoice.Status.PAID.equals(invoice.getStatus())); } private void updatePoLineReceiptStatus(CompositePoLine poLine, ReOpenCompositeOrderHolder holder) { diff --git a/src/test/java/org/folio/service/orders/flows/update/reopen/ReOpenCompositeOrderManagerTest.java b/src/test/java/org/folio/service/orders/flows/update/reopen/ReOpenCompositeOrderManagerTest.java index 6e8521146..962b8345e 100644 --- a/src/test/java/org/folio/service/orders/flows/update/reopen/ReOpenCompositeOrderManagerTest.java +++ b/src/test/java/org/folio/service/orders/flows/update/reopen/ReOpenCompositeOrderManagerTest.java @@ -111,11 +111,10 @@ void resetMocks() { @ParameterizedTest @CsvSource(value = {"Open:Expected:Awaiting Receipt:Awaiting Payment", - "Approved:Received:Partially Received:Fully Paid", + "Approved:Received:Partially Received:Awaiting Payment", "Paid:Received:Partially Received:Fully Paid"}, delimiter = ':') void shouldCheckPaymentAndReceiptStatusesIfInvoicesAndPiecesHaveSameStatuses( - String invoiceStatus, String pieceStatus, String expReceiptStatus, String expPaymentStatus) - throws ExecutionException, InterruptedException { + String invoiceStatus, String pieceStatus, String expReceiptStatus, String expPaymentStatus) { CompositePurchaseOrder oldOrder = getMockAsJson(ORDER_PATH).mapTo(CompositePurchaseOrder.class); CompositePoLine poLine1 = oldOrder.getCompositePoLines().get(0); String poLineId1 = poLine1.getId(); @@ -174,17 +173,16 @@ void shouldCheckPaymentAndReceiptStatusesIfInvoicesAndPiecesHaveSameStatuses( } @ParameterizedTest - @CsvSource(value = {"Open:Approved:Expected:Received:Awaiting Receipt:Partially Received:Awaiting Payment:Partially Paid:true:false", - "Open:Approved:Expected:Received:Awaiting Receipt:Partially Received:Awaiting Payment:Fully Paid:true:true", - "Approved:Open:Received:Expected:Partially Received:Awaiting Receipt:Fully Paid:Awaiting Payment:true:true", - "Approved:Open:Received:Expected:Partially Received:Awaiting Receipt:Fully Paid:Awaiting Payment:true:false", + @CsvSource(value = {"Open:Approved:Expected:Received:Awaiting Receipt:Partially Received:Awaiting Payment:Awaiting Payment:true:false", + "Open:Approved:Expected:Received:Awaiting Receipt:Partially Received:Awaiting Payment:Awaiting Payment:true:true", + "Approved:Open:Received:Expected:Partially Received:Awaiting Receipt:Awaiting Payment:Awaiting Payment:true:true", + "Approved:Open:Received:Expected:Partially Received:Awaiting Receipt:Awaiting Payment:Awaiting Payment:true:false", "Paid:Open:Expected:Received:Awaiting Receipt:Partially Received:Fully Paid:Awaiting Payment:true:true", "Paid:Open:Expected:Received:Awaiting Receipt:Partially Received:Partially Paid:Awaiting Payment:false:true"}, delimiter = ':') void shouldCheckPaymentAndReceiptStatusesIfInvoicesAndPiecesHaveDifferentStatuses( - String invoiceStatus1, String invoiceStatus2, String pieceStatus1, String pieceStatus2, - String expReceiptStatus1, String expReceiptStatus2, String expPaymentStatus1, String expPaymentStatus2, - boolean releaseEncumbrances1, boolean releaseEncumbrances2) - throws ExecutionException, InterruptedException { + String invoiceStatus1, String invoiceStatus2, String pieceStatus1, String pieceStatus2, + String expReceiptStatus1, String expReceiptStatus2, String expPaymentStatus1, String expPaymentStatus2, + boolean releaseEncumbrances1, boolean releaseEncumbrances2) { CompositePurchaseOrder oldOrder = getMockAsJson(ORDER_PATH).mapTo(CompositePurchaseOrder.class); CompositePoLine poLine1 = oldOrder.getCompositePoLines().get(0); String poLineId1 = poLine1.getId(); @@ -246,14 +244,13 @@ void shouldCheckPaymentAndReceiptStatusesIfInvoicesAndPiecesHaveDifferentStatuse @ParameterizedTest @CsvSource(value = { - "Open:Approved:Expected:Received:Awaiting Receipt:Partially Received:Awaiting Payment:Fully Paid", - "Approved:Open:Received:Expected:Partially Received:Awaiting Receipt:Fully Paid:Awaiting Payment", + "Open:Approved:Expected:Received:Awaiting Receipt:Partially Received:Awaiting Payment:Awaiting Payment", + "Approved:Open:Received:Expected:Partially Received:Awaiting Receipt:Awaiting Payment:Awaiting Payment", "Paid:Open:Expected:Received:Awaiting Receipt:Partially Received:Fully Paid:Awaiting Payment" }, delimiter = ':') void shouldCheckPaymentAndReceiptStatusesIfInvoicesAndPiecesHaveDifferentStatusesAndPolCoveredMoreThenOneInvoice( - String invoiceStatus1, String invoiceStatus2, String pieceStatus1, String pieceStatus2, - String expReceiptStatus1, String expReceiptStatus2, String expPaymentStatus1, String expPaymentStatus2) - throws ExecutionException, InterruptedException { + String invoiceStatus1, String invoiceStatus2, String pieceStatus1, String pieceStatus2, + String expReceiptStatus1, String expReceiptStatus2, String expPaymentStatus1, String expPaymentStatus2) { CompositePurchaseOrder oldOrder = getMockAsJson(ORDER_PATH).mapTo(CompositePurchaseOrder.class); CompositePoLine poLine1 = oldOrder.getCompositePoLines().get(0); String poLineId1 = poLine1.getId();