Bug 14669: Add search option for managing library to orders search
Currently the order search can't be limited by managing library. The patch adds the search option to the order history search form and a column for the managing library to the search results table. To test: - Create some baskets with orders - Set managing library for some, but also have some without - Apply patch - prove t/db_dependent/Acquisition.t - Go to Aquisition > Orders search tab on top > Advanced search link - Search for orders without limiting Orders with and without managing library set should show up - Limit search to a specific managing library - Verify results match expectations Signed-off-by: Alex Sassmannshausen <alex@komputilo.eu> Signed-off-by: Nick Clemens <nick@bywatersolutions.com> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
This commit is contained in:
parent
1e727da044
commit
018bcce2f7
|
|
@ -2276,6 +2276,7 @@ params:
|
|||
budget
|
||||
orderstatus (note that orderstatus '' will retrieve orders
|
||||
of any status except cancelled)
|
||||
managing_library
|
||||
biblionumber
|
||||
get_canceled_order (if set to a true value, cancelled orders will
|
||||
be included)
|
||||
|
|
@ -2296,7 +2297,8 @@ returns:
|
|||
'ordernumber' => '1',
|
||||
'quantity' => 1,
|
||||
'quantityreceived' => undef,
|
||||
'title' => 'The Adventures of Huckleberry Finn'
|
||||
'title' => 'The Adventures of Huckleberry Finn',
|
||||
'managing_library' => 'CPL'
|
||||
}
|
||||
|
||||
=cut
|
||||
|
|
@ -2322,6 +2324,7 @@ sub GetHistory {
|
|||
my $ordernumber = $params{ordernumber};
|
||||
my $search_children_too = $params{search_children_too} || 0;
|
||||
my $created_by = $params{created_by} || [];
|
||||
my $managing_library = $params{managing_library};
|
||||
my $ordernumbers = $params{ordernumbers} || [];
|
||||
my $additional_fields = $params{additional_fields} // [];
|
||||
|
||||
|
|
@ -2358,6 +2361,7 @@ sub GetHistory {
|
|||
aqbasket.basketgroupid,
|
||||
aqbasket.authorisedby,
|
||||
concat( borrowers.firstname,' ',borrowers.surname) AS authorisedbyname,
|
||||
branch as managing_library,
|
||||
aqbasketgroups.name as groupname,
|
||||
aqbooksellers.name,
|
||||
aqbasket.creationdate,
|
||||
|
|
@ -2484,6 +2488,11 @@ sub GetHistory {
|
|||
push @query_params, @$created_by;
|
||||
}
|
||||
|
||||
if ( $managing_library ) {
|
||||
$query .= " AND aqbasket.branch = ? ";
|
||||
push @query_params, $managing_library;
|
||||
}
|
||||
|
||||
if ( @$ordernumbers ) {
|
||||
$query .= ' AND (aqorders.ordernumber IN ( ' . join (',', ('?') x @$ordernumbers ) . '))';
|
||||
push @query_params, @$ordernumbers;
|
||||
|
|
|
|||
|
|
@ -89,15 +89,17 @@ my $filters = {
|
|||
ordernumber => scalar $input->param('ordernumber'),
|
||||
search_children_too => scalar $input->param('search_children_too'),
|
||||
created_by => [ $input->multi_param('created_by') ],
|
||||
managing_library => scalar $input->param('managing_library'),
|
||||
};
|
||||
|
||||
my $from_placed_on = eval { dt_from_string( scalar $input->param('from') ) } || dt_from_string;
|
||||
my $to_placed_on = eval { dt_from_string( scalar $input->param('to') ) } || dt_from_string;
|
||||
unless ( $input->param('from') ) {
|
||||
# Fill the form with year-1
|
||||
$from_placed_on->set_time_zone('floating')->subtract( years => 1 );
|
||||
}
|
||||
$filters->{from_placed_on} = output_pref( { dt => $from_placed_on, dateformat => 'iso', dateonly => 1 } ),
|
||||
$filters->{to_placed_on} = output_pref( { dt => $to_placed_on, dateformat => 'iso', dateonly => 1 } ),
|
||||
$filters->{from_placed_on} = output_pref( { dt => $from_placed_on, dateformat => 'iso', dateonly => 1 } );
|
||||
$filters->{to_placed_on} = output_pref( { dt => $to_placed_on, dateformat => 'iso', dateonly => 1 } );
|
||||
my @additional_fields = Koha::AdditionalFields->search( { tablename => 'aqbasket', searchable => 1 } );
|
||||
$template->param( available_additional_fields => \@additional_fields );
|
||||
my @additional_field_filters;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
[% USE Koha %]
|
||||
[% USE Branches %]
|
||||
[% USE KohaDates %]
|
||||
<ol>
|
||||
<li><label for="title">Title: </label> <input type="text" name="title" id="title" value="[% filters.title | html %]" /></li>
|
||||
|
|
@ -15,6 +16,13 @@
|
|||
<div id="basket_creators" style="float:left;"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<label for="managing_library">Managing library: </label>
|
||||
<select name="managing_library" id="managing_library">
|
||||
<option value="">Any library</option>
|
||||
[% PROCESS options_for_libraries libraries => Branches.all(selected => '') %]
|
||||
</select>
|
||||
</li>
|
||||
<li><label for="booksellerinvoicenumber ">Bookseller invoice no: </label> <input type="text" name="booksellerinvoicenumber" id="booksellerinvoicenumber" value="[% filters.booksellerinvoicenumber | html %]" /></li>
|
||||
<li>
|
||||
<label for="basketgroupname">Basket group:</label>
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
[% USE Asset %]
|
||||
[% USE KohaDates %]
|
||||
[% USE ColumnsSettings %]
|
||||
[% USE Branches %]
|
||||
[% SET footerjs = 1 %]
|
||||
[% INCLUDE 'doc-head-open.inc' %]
|
||||
<title>Koha › Acquisitions › [% IF ( order_loop ) %]Orders search › Search results[% ELSE %]Order search[% END %]</title>
|
||||
|
|
@ -38,7 +39,8 @@
|
|||
<th>Status</th>
|
||||
<th>Basket</th>
|
||||
<th>Basket creator</th>
|
||||
<th>Basket group</th>
|
||||
<th>Basket group</th>
|
||||
<th>Managing library</th>
|
||||
<th>Invoice number</th>
|
||||
<th class="anti-the">Summary</th>
|
||||
<th>Vendor</th>
|
||||
|
|
@ -75,6 +77,7 @@
|
|||
|
||||
[% END %]
|
||||
</td>
|
||||
<td>[% Branches.GetName(order.managing_library) | html %]</td>
|
||||
<td>[% IF ( order.invoicenumber ) %]
|
||||
<a href="/cgi-bin/koha/acqui/parcel.pl?invoiceid=[% order.invoiceid | uri %]">[% order.invoicenumber | html %]</a>
|
||||
[% ELSE %]
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ use Modern::Perl;
|
|||
|
||||
use POSIX qw(strftime);
|
||||
|
||||
use Test::More tests => 77;
|
||||
use Test::More tests => 78;
|
||||
use t::lib::Mocks;
|
||||
use Koha::Database;
|
||||
use Koha::Acquisition::Basket;
|
||||
|
|
@ -838,4 +838,42 @@ subtest 'Test for get_rounded_price' => sub {
|
|||
is( $rounded_result3, $round_down_price, "Price ($down_price) was correctly rounded ($rounded_result3)" );
|
||||
|
||||
};
|
||||
|
||||
subtest 'GetHistory - managing library' => sub {
|
||||
|
||||
plan tests => 1;
|
||||
|
||||
my $orders = GetHistory(managing_library => 'CPL');
|
||||
|
||||
my $builder = t::lib::TestBuilder->new;
|
||||
|
||||
my $order_basket1 = $builder->build({ source => 'Aqbasket', value => { branch => 'CPL' } });
|
||||
my $orderinfo1 ={
|
||||
basketno => $order_basket1->{basketno},
|
||||
rrp => 19.99,
|
||||
replacementprice => undef,
|
||||
quantity => 1,
|
||||
quantityreceived => 0,
|
||||
datereceived => undef,
|
||||
datecancellationprinted => undef,
|
||||
};
|
||||
my $order1 = $builder->build({ source => 'Aqorder', value => $orderinfo1 });
|
||||
|
||||
my $order_basket2 = $builder->build({ source => 'Aqbasket', value => { branch => 'LIB' } });
|
||||
my $orderinfo2 ={
|
||||
basketno => $order_basket2->{basketno},
|
||||
rrp => 19.99,
|
||||
replacementprice => undef,
|
||||
quantity => 1,
|
||||
quantityreceived => 0,
|
||||
datereceived => undef,
|
||||
datecancellationprinted => undef,
|
||||
};
|
||||
my $order2 = $builder->build({ source => 'Aqorder', value => $orderinfo2 });
|
||||
|
||||
my $history = GetHistory(managing_library => 'CPL');
|
||||
is( scalar( @$history), scalar ( @$orders ) +1, "GetHistory returns number of orders");
|
||||
|
||||
};
|
||||
|
||||
$schema->storage->txn_rollback();
|
||||
|
|
|
|||
Loading…
Reference in New Issue