From c210346ffc33149e25ae8134d454940d7f8dbbaf Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 11 Mar 2014 09:54:55 +0100 Subject: [PATCH] Bug 11170: Fix an unnecessarily convoluted logic This patch also adds POD and UT. Signed-off-by: Jonathan Druart --- C4/Acquisition.pm | 6 +++--- t/db_dependent/Acquisition.t | 20 +++++++++++++++++++- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/C4/Acquisition.pm b/C4/Acquisition.pm index 5b59519..7d493c9 100644 --- a/C4/Acquisition.pm +++ b/C4/Acquisition.pm @@ -1630,12 +1630,14 @@ sub CancelReceipt { basketno => $basketno, owner => $owner, pending => $pending + ordered => $ordered }); Searches for orders. C<$owner> Finds order for the logged in user. C<$pending> Finds pending orders. Ignores completed and cancelled orders. +C<$ordered> Finds orders to receive only (status 'ordered' or 'partial'). C<@results> is an array of references-to-hash with the keys are fields @@ -1681,12 +1683,10 @@ sub SearchOrders { WHERE (datecancellationprinted is NULL) }; - if ( $pending ) { + if ( $pending or $ordered ) { $query .= q{ AND (quantity > quantityreceived OR quantityreceived is NULL)}; } if ( $ordered ) { - $query .= q{ AND (quantity > quantityreceived OR quantityreceived is NULL)} - unless $pending; $query .= q{ AND aqorders.orderstatus IN ( "ordered", "partial" )}; } diff --git a/t/db_dependent/Acquisition.t b/t/db_dependent/Acquisition.t index 87f0f0f..e78b39c 100755 --- a/t/db_dependent/Acquisition.t +++ b/t/db_dependent/Acquisition.t @@ -8,7 +8,7 @@ use POSIX qw(strftime); use C4::Bookseller qw( GetBookSellerFromId ); -use Test::More tests => 64; +use Test::More tests => 66; BEGIN { use_ok('C4::Acquisition'); @@ -700,6 +700,15 @@ ok( "SearchOrders with pending params gets only pending orders (bug 10723)" ); +$search_orders = SearchOrders({ + booksellerid => $booksellerid, + basketno => $basketno, + pending => 1, + ordered => 1, +}); +is( scalar (@$search_orders), 0, "SearchOrders with pending and ordered params gets only pending ordered orders (bug 11170)" ); + + # # Test GetBudgetByOrderNumber # @@ -760,6 +769,15 @@ is( join( " ", @$test_extra_fields ), is( join( " ", @$test_different_fields ), '', "GetLateOrders gets orders with the right content in every fields" ); +$search_orders = SearchOrders({ + booksellerid => $booksellerid, + basketno => $basketno, + pending => 1, + ordered => 1, +}); +is( scalar (@$search_orders), 3, "SearchOrders with pending and ordered params gets only pending ordered orders. After closing the basket, orders are marked as 'ordered' (bug 11170)" ); + + # # Test AddClaim # -- 1.7.10.4