From 14658b1e4cf23c607ba16f855b5861c4dd7d61a9 Mon Sep 17 00:00:00 2001 From: Jonathan Druart 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. --- 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 67ea46e..81800fd 100644 --- a/C4/Acquisition.pm +++ b/C4/Acquisition.pm @@ -1687,6 +1687,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) }; @@ -1708,8 +1716,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