From 4651bbff213996c3c1e9364855de02de568596f4 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 20 Aug 2013 15:06:08 +0200 Subject: [PATCH] Bug 10852: serials search improvements This patch adds 3 filters for the serials search: - location - callnumber - expiration date To test: - Search serials by location and/or callnumber and/or expiration date and check that results are consistent. Signed-off-by: Mathieu Saby Signed-off-by: Kyle M Hall Signed-off-by: Galen Charlton --- C4/Serials.pm | 12 ++++ .../prog/en/modules/serials/serials-search.tt | 65 ++++++++++++++++++- serials/serials-search.pl | 15 ++++- 3 files changed, 88 insertions(+), 4 deletions(-) diff --git a/C4/Serials.pm b/C4/Serials.pm index 6d188e7685..7e17a048d7 100644 --- a/C4/Serials.pm +++ b/C4/Serials.pm @@ -682,6 +682,10 @@ sub SearchSubscriptions { push @where_strs, "biblioitems.ean LIKE ?"; push @where_args, "%$args->{ean}%"; } + if ( $args->{callnumber} ) { + push @where_strs, "subscription.callnumber LIKE ?"; + push @where_args, "%$args->{callnumber}%"; + } if( $args->{publisher} ){ push @where_strs, "biblioitems.publishercode LIKE ?"; push @where_args, "%$args->{publisher}%"; @@ -694,6 +698,14 @@ sub SearchSubscriptions { push @where_strs, "subscription.branchcode = ?"; push @where_args, "$args->{branch}"; } + if ( $args->{location} ) { + push @where_strs, "subscription.location = ?"; + push @where_args, "$args->{location}"; + } + if ( $args->{expiration_date} ) { + push @where_strs, "subscription.enddate <= ?"; + push @where_args, "$args->{expiration_date}"; + } if( defined $args->{closed} ){ push @where_strs, "subscription.closed = ?"; push @where_args, "$args->{closed}"; 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 a5f9795839..c6cb4d4dcc 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 @@ -1,9 +1,11 @@ [% USE Branches %] [% INCLUDE 'doc-head-open.inc' %] [% USE KohaDates %] +[% USE KohaAuthorisedValues %] Koha › Serials [% biblionumber %] [% INCLUDE 'doc-head-close.inc' %] +[% INCLUDE 'calendar.inc' %] [% INCLUDE 'datatables-strings.inc' %] @@ -72,6 +74,10 @@ [% END %] +
  • + + +
  • @@ -93,6 +99,25 @@ [% END %]
  • + [% IF locations %] +
  • + + +
  • + [% END %] +
  • + + +
  • @@ -118,6 +143,7 @@ Title Notes Library + Location Call number Expiration date [% IF ( routing && CAN_user_serials_routing ) %] @@ -133,8 +159,9 @@ - - + + + [% IF ( routing && CAN_user_serials_routing ) %][% END %] @@ -156,6 +183,9 @@ [% IF ( subscription.branchcode ) %][% Branches.GetName( subscription.branchcode ) %][% END %] + + [% IF ( subscription.location ) %][% KohaAuthorisedValues.GetByCode( 'LOC', subscription.location ) %][% END %] + [% IF ( subscription.callnumber ) %][% subscription.callnumber %][% END %] @@ -203,6 +233,7 @@ Title Notes Library + Location Call number     @@ -214,7 +245,8 @@ - + + @@ -238,6 +270,9 @@ [% IF ( subscription.branchcode ) %][% Branches.GetName( subscription.branchcode ) %][% END %] + + [% IF ( subscription.location ) %][% KohaAuthorisedValues.GetByCode( 'LOC', subscription.location ) %][% END %] + [% IF ( subscription.callnumber ) %][% subscription.callnumber %][% END %] @@ -294,6 +329,10 @@ [% END %] +
  • + + +
  • @@ -315,6 +354,26 @@ [% END %]
  • + [% IF locations %] +
  • + + +
  • + [% END %] +
  • + + +
  • +
    diff --git a/serials/serials-search.pl b/serials/serials-search.pl index 28dc9d00a4..b4e771521d 100755 --- a/serials/serials-search.pl +++ b/serials/serials-search.pl @@ -36,14 +36,19 @@ use C4::Context; use C4::Output; use C4::Serials; +use Koha::DateUtils; + my $query = new CGI; my $title = $query->param('title_filter') || ''; 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 $bookseller = $query->param('bookseller_filter') || ''; my $biblionumber = $query->param('biblionumber') || ''; my $branch = $query->param('branch_filter') || ''; +my $location = $query->param('location_filter') || ''; +my $expiration_date = $query->param('expiration_date_filter') || ''; my $routing = $query->param('routing') || C4::Context->preference("RoutingSerials"); my $searched = $query->param('searched') || 0; my @subscriptionids = $query ->param('subscriptionid'); @@ -51,7 +56,7 @@ my $op = $query->param('op'); my ( $template, $loggedinuser, $cookie ) = get_template_and_user( { - template_name => "serials/serials-search.tmpl", + template_name => "serials/serials-search.tt", query => $query, type => "intranet", authnotrequired => 0, @@ -70,6 +75,7 @@ if ( $op and $op eq "close" ) { } } +my $expiration_date_dt = $expiration_date ? dt_from_string( $expiration_date ) : undef; my @subscriptions; if ($searched){ @subscriptions = SearchSubscriptions( @@ -78,9 +84,12 @@ if ($searched){ title => $title, issn => $ISSN, ean => $EAN, + callnumber => $callnumber, publisher => $publisher, bookseller => $bookseller, branch => $branch, + location => $location, + expiration_date => $expiration_date_dt, } ); } @@ -115,6 +124,7 @@ foreach (sort keys %$branches){ }; } + $template->param( openedsubscriptions => \@openedsubscriptions, closedsubscriptions => \@closedsubscriptions, @@ -122,9 +132,12 @@ $template->param( title_filter => $title, ISSN_filter => $ISSN, EAN_filter => $EAN, + callnumber_filter => $callnumber, publisher_filter => $publisher, bookseller_filter => $bookseller, branch_filter => $branch, + locations => C4::Koha::GetAuthorisedValues('LOC', $location), + expiration_date_filter => $expiration_date_dt, branches_loop => \@branches_loop, done_searched => $searched, routing => $routing, -- 2.39.5