From 5dcaf44865f31012e6f78fe447ee5788d9222ecc Mon Sep 17 00:00:00 2001 From: Briana Date: Thu, 21 Jan 2016 01:53:25 +0000 Subject: [PATCH] Bug 14875 - Search serials by barcode This patch is only for the advanced search To test: 1. Go to serials 2. If required make a new subscription and/or then click on advanced search 3. See that there is no barcode field. 4. Apply patch and repeat steps, there should now be a barcode field. 5. Type in a barcode and hit search. See that your book shows up. --- C4/Serials.pm | 12 ++++++++++-- .../prog/en/modules/serials/serials-search.tt | 16 +++++++++++++++- serials/serials-search.pl | 3 +++ 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/C4/Serials.pm b/C4/Serials.pm index c09a198..10dfa79 100644 --- a/C4/Serials.pm +++ b/C4/Serials.pm @@ -549,7 +549,8 @@ The valid search fields are: ean callnumber location - publisher + publisher + barcode bookseller branch expiration_date @@ -589,6 +590,7 @@ sub SearchSubscriptions { LEFT JOIN biblio ON biblio.biblionumber = subscription.biblionumber LEFT JOIN biblioitems ON biblioitems.biblionumber = subscription.biblionumber LEFT JOIN aqbooksellers ON subscription.aqbooksellerid = aqbooksellers.id + LEFT JOIN items ON items.biblionumber = biblio.biblionumber |; $query .= q| WHERE 1|; my @where_strs; @@ -625,7 +627,13 @@ sub SearchSubscriptions { if( $args->{publisher} ){ push @where_strs, "biblioitems.publishercode LIKE ?"; push @where_args, "%$args->{publisher}%"; + } + if( $args->{barcode} ){ + push @where_strs, "items.barcode LIKE ?"; + push @where_args, "%$args->{barcode}%"; } + + if( $args->{bookseller} ){ push @where_strs, "aqbooksellers.name LIKE ?"; push @where_args, "%$args->{bookseller}%"; @@ -659,7 +667,7 @@ sub SearchSubscriptions { $query .= " ORDER BY " . $args->{orderby} if $args->{orderby}; my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare($query); + my $sth = $dbh->prepare($query); $sth->execute(@where_args); my $results = $sth->fetchall_arrayref( {} ); diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt index be67cfa..6ade013 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt @@ -81,6 +81,13 @@ + +
  • + + +
  • + +
  • @@ -338,7 +345,7 @@ [% IF ( routing && CAN_user_serials_routing ) %] [% UNLESS ( subscription.cannotedit ) %]
  • - Reopen + Reopen
  • [% END %] [% END # IF ( routing && CAN_user_serials_routing ) %] @@ -401,6 +408,13 @@ + +
  • + + +
  • + +
  • diff --git a/serials/serials-search.pl b/serials/serials-search.pl index 3e73c56..eb5ce8a 100755 --- a/serials/serials-search.pl +++ b/serials/serials-search.pl @@ -46,6 +46,7 @@ my $ISSN = $query->param('ISSN_filter') || ''; my $EAN = $query->param('EAN_filter') || ''; my $callnumber = $query->param('callnumber_filter') || ''; my $publisher = $query->param('publisher_filter') || ''; +my $barcode = $query->param('barcode_filter') || ''; my $bookseller = $query->param('bookseller_filter') || ''; my $biblionumber = $query->param('biblionumber') || ''; my $branch = $query->param('branch_filter') || ''; @@ -104,6 +105,7 @@ if ($searched){ ean => $EAN, callnumber => $callnumber, publisher => $publisher, + barcode => $barcode, bookseller => $bookseller, branch => $branch, additional_fields => [ map{ { name => $_, value => $additional_field_filters->{$_}{value}, authorised_value_category => $additional_field_filters->{$_}{authorised_value_category} } } keys %$additional_field_filters ], @@ -153,6 +155,7 @@ $template->param( EAN_filter => $EAN, callnumber_filter => $callnumber, publisher_filter => $publisher, + barcode_filter => $barcode, bookseller_filter => $bookseller, branch_filter => $branch, locations => C4::Koha::GetAuthorisedValues('LOC', $location), -- 1.7.10.4