From 3f3e4c6b060f871e7b8f4d8fb09d423a0f89fcc6 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Tue, 14 Sep 2021 19:29:27 +0000 Subject: [PATCH] Bug 29015: Add options for itemtpye, collection, and shelving location to view_holdsqueue.pl This patch makes the code for itemtypeslimit work, and adds options for shelving location and collection code This also remove the 'post' method from the form to allow easy bookmarking To test: 1 - Add holds to your system 2 - Run the holds queue builder 3 - Browse to Circulation->Holds queue 4 - Note the library dropdown 5 - Apply patch 6 - Reload and note new options 7 - Test that both limits and 'All' options work as expected 8 - Note that description at top includes options when selected "### items found for All libraries and item type:(Books)" Signed-off-by: Owen Leonard --- C4/HoldsQueue.pm | 23 ++++++++++++---- circ/view_holdsqueue.pl | 13 ++++++++-- .../prog/en/includes/html_helpers.inc | 10 +++++++ .../prog/en/modules/circ/view_holdsqueue.tt | 26 ++++++++++++++++++- 4 files changed, 64 insertions(+), 8 deletions(-) diff --git a/C4/HoldsQueue.pm b/C4/HoldsQueue.pm index 06b0b2a2ef..f3c7614750 100644 --- a/C4/HoldsQueue.pm +++ b/C4/HoldsQueue.pm @@ -122,14 +122,14 @@ sub UpdateTransportCostMatrix { =head2 GetHoldsQueueItems - GetHoldsQueueItems($branch); + GetHoldsQueueItems({ branchlimit => $branch, itemtypeslimit => $itype, ccodeslimit => $ccode, locationslimit => $location ); Returns hold queue for a holding branch. If branch is omitted, then whole queue is returned =cut sub GetHoldsQueueItems { - my ($branchlimit) = @_; + my $params = shift; my $dbh = C4::Context->dbh; my @bind_params = (); @@ -143,10 +143,23 @@ sub GetHoldsQueueItems { JOIN biblio USING (biblionumber) LEFT JOIN biblioitems USING (biblionumber) LEFT JOIN items USING ( itemnumber) + WHERE 1=1 /; - if ($branchlimit) { - $query .=" WHERE tmp_holdsqueue.holdingbranch = ?"; - push @bind_params, $branchlimit; + if ($params->{branchlimit}) { + $query .="AND tmp_holdsqueue.holdingbranch = ? "; + push @bind_params, $params->{branchlimit}; + } + if( $params->{itemtypeslimit} ) { + $query .=" AND items.itype = ? "; + push @bind_params, $params->{itemtypeslimit}; + } + if( $params->{ccodeslimit} ) { + $query .=" AND items.ccode = ? "; + push @bind_params, $params->{ccodeslimit}; + } + if( $params->{locationslimit} ) { + $query .=" AND items.location = ? "; + push @bind_params, $params->{locationslimit}; } $query .= " ORDER BY ccode, location, cn_sort, author, title, pickbranch, reservedate"; my $sth = $dbh->prepare($query); diff --git a/circ/view_holdsqueue.pl b/circ/view_holdsqueue.pl index 81b900ba2a..cb0cabc9b5 100755 --- a/circ/view_holdsqueue.pl +++ b/circ/view_holdsqueue.pl @@ -44,15 +44,24 @@ my $params = $query->Vars; my $run_report = $params->{'run_report'}; my $branchlimit = $params->{'branchlimit'}; my $itemtypeslimit = $params->{'itemtypeslimit'}; +my $ccodeslimit = $params->{'ccodeslimit'}; +my $locationslimit = $params->{'locationslimit'}; if ( $run_report ) { - # XXX GetHoldsQueueItems() does not support $itemtypeslimit! - my $items = GetHoldsQueueItems($branchlimit, $itemtypeslimit); + my $items = GetHoldsQueueItems({ + branchlimt => $branchlimit, + itemtypeslimit => $itemtypeslimit, + ccodeslimit => $ccodeslimit, + locationslimit => $locationslimit + }); for my $item ( @$items ) { $item->{patron} = Koha::Patrons->find( $item->{borrowernumber} ); } $template->param( branchlimit => $branchlimit, + itemtypeslimit => $itemtypeslimit, + ccodeslimit => $ccodeslimit, + locationslimit => $locationslimit, total => scalar @$items, itemsloop => $items, run_report => $run_report, diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers.inc index 86eab2547f..f408f0f750 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers.inc @@ -47,6 +47,16 @@ [% END %] [% END %] +[% BLOCK options_for_authorised_values %] + [% FOREACH av IN authorised_values %] + [% IF av.authorised_value == selected_av %] + + [% ELSE %] + + [% END %] + [% END %] +[% END %] + [% BLOCK options_for_item_types %] [% FOREACH itemtype IN itemtypes %] [% IF itemtype.itemtype == selected_itemtype %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/view_holdsqueue.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/view_holdsqueue.tt index 564ab5f54f..6c9e5ffea1 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/view_holdsqueue.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/view_holdsqueue.tt @@ -65,6 +65,9 @@ [% IF ( total ) %]
[% total | html %] items found for [% IF ( branchlimit ) %][% Branches.GetName( branchlimit ) | html %][% ELSE %]All libraries[% END %] + [% IF ( itemtypeslimit ) %] and item type:([% ItemTypes.GetDescription( itemtypeslimit ) | html %])[% END %] + [% IF ( ccodeslimit ) %] and collection code:([% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.ccode' authorised_value = ccodeslimit ) | html %])[% END %] + [% IF ( locationslimit ) %] and shelving location:([% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location' authorised_value = locationslimit ) | html %])[% END %]
[% ELSE %]
No items found.
@@ -200,7 +203,7 @@ [% END %] [% UNLESS ( total ) %] -
+
  1. @@ -210,6 +213,27 @@ [% PROCESS options_for_libraries libraries => Branches.all( only_from_group => 1 ) %]
  2. +
  3. + + +
  4. +
  5. + + +
  6. +
  7. + + +
-- 2.20.1