From 4f09a5cd0587b73edaf02568bca324b21d4655b8 Mon Sep 17 00:00:00 2001
From: Jonathan Druart <jonathan.druart@biblibre.com>
Date: Tue, 14 Jan 2014 13:33:58 +0100
Subject: [PATCH] Bug 11552; After a transfer, allow to search on the original
 order line

If an order is transferred from a basket to another, it should be
possible to retrieve it with the original ordernumber.

Test plan:
- transfer an order
- note the original ordernumber and the new one
- receive the order and, on the parcel page, try to find your order with
  the original ordernumber and the new one.

Signed-off-by: sonia bouis <sonia.bouis@univ-lyon3.fr>
Signed-off-by: Brendan Gallagher <brendan@bywatersolutions.com>
---
 C4/Acquisition.pm                          |   12 ++++++++++--
 t/db_dependent/Acquisition/TransferOrder.t |    9 ++++++++-
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/C4/Acquisition.pm b/C4/Acquisition.pm
index 8c4bfdc..17e55d3 100644
--- a/C4/Acquisition.pm
+++ b/C4/Acquisition.pm
@@ -1677,6 +1677,14 @@ sub SearchOrders {
             LEFT JOIN borrowers ON aqbasket.authorisedby=borrowers.borrowernumber
             LEFT JOIN biblio ON aqorders.biblionumber=biblio.biblionumber
             LEFT JOIN biblioitems ON biblioitems.biblionumber=biblio.biblionumber
+    };
+
+    # If we search on ordernumber, we retrieve the transfered order is a transfer has been done.
+    $query .= q{
+            LEFT JOIN aqorders_transfers ON aqorders_transfers.ordernumber_to = aqorders.ordernumber
+    } if $ordernumber;
+
+    $query .= q{
         WHERE (datecancellationprinted is NULL)
     };
 
@@ -1698,8 +1706,8 @@ sub SearchOrders {
     }
 
     if ( $ordernumber ) {
-        $query .= ' AND (aqorders.ordernumber=?)';
-        push @args, $ordernumber;
+        $query .= ' AND ( aqorders.ordernumber = ? OR aqorders_transfers.ordernumber_from = ? ) ';
+        push @args, ( $ordernumber, $ordernumber );
     }
     if( $search ) {
         $query .= ' AND (biblio.title LIKE ? OR biblio.author LIKE ? OR biblioitems.isbn LIKE ?)';
diff --git a/t/db_dependent/Acquisition/TransferOrder.t b/t/db_dependent/Acquisition/TransferOrder.t
index a608627..e517f7f 100644
--- a/t/db_dependent/Acquisition/TransferOrder.t
+++ b/t/db_dependent/Acquisition/TransferOrder.t
@@ -2,7 +2,7 @@
 
 use Modern::Perl;
 
-use Test::More tests => 8;
+use Test::More tests => 11;
 use C4::Context;
 use C4::Acquisition;
 use C4::Biblio;
@@ -78,6 +78,13 @@ is(scalar GetOrders($basketno2), 1, "1 order in basket2");
 ($order) = GetOrders($basketno2);
 is(scalar GetItemnumbersFromOrder($order->{ordernumber}), 1, "1 item in basket2's order");
 
+# Bug 11552
+my $orders = SearchOrders({ ordernumber => $newordernumber });
+is ( scalar( @$orders ), 1, 'SearchOrders returns 1 order with newordernumber' );
+$orders = SearchOrders({ ordernumber => $ordernumber });
+is ( scalar( @$orders ), 1, 'SearchOrders returns 1 order with [old]ordernumber' );
+is ( $orders->[0]->{ordernumber}, $newordernumber, 'SearchOrders returns newordernumber if [old]ordernumber is given' );
+
 ModReceiveOrder( $biblionumber, $newordernumber, 2, undef, undef, undef, undef, undef, undef, dt_from_string );
 CancelReceipt( $newordernumber );
 $order = GetOrder( $newordernumber );
-- 
1.7.10.4