From bed84b2a4856cd29093345835b716669883a920f Mon Sep 17 00:00:00 2001 From: Alex Buckley Date: Wed, 10 Oct 2018 10:05:33 +0000 Subject: [PATCH] Bug 21528: Single line for hold groups in intranet side Sponsored-By: Brimbank Library, Australia --- .../prog/en/modules/reserve/request.tt | 46 ++++++++++++++++++++-- reserve/request.pl | 38 +++++++++++++++++- 2 files changed, 78 insertions(+), 6 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt index c70969b..a2304f3 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt @@ -809,6 +809,48 @@ function checkMultiHold() {   [% IF SuspendHoldsIntranet %] [% END %] + [% IF (grouped_holds) %] + [% FOREACH group_level_hold IN grouped_holds %] + + Group hold: hold group + + [% INCLUDE 'patron-title.inc' patron=group_level_hold.patron hide_patron_infos_if_needed=1 %] + [% group_level_hold.hold.reservenotes %] + [% group_level_hold.hold.reservedate | $KohaDates %] + [% group_level_hold.hold.expirationdate | $KohaDates %] + + [% IF ( group_level_hold.hold.found ) %] + [% IF ( group_level_hold.hold.atdestination ) %] + [% IF ( group_level_hold.hold.found ) %] + Item waiting at [% group_level_hold.hold.wbrname %] since [% group_level_hold.hold.waiting_date | $KohaDates %] + [% ELSE %] + Waiting to be pulled + [% END %] + [% ELSE %] + Item being transferred to [% group_level_hold.hold.wbrname %] + [% END %] + [% ELSE %] + [% IF Koha.Preference('IndependentBranches') && Branches.all().size == 1 %] + [% Branches.GetName(group_level_hold.hold.branchcode) %] + [% ELSE %] + + [% END %] + [% END %] + + + [% IF group_level_hold.hold.hold_group_id %] +
(part of a hold group)
+ [% END %] + + + + + + [% END %] + [% END %] + [% FOREACH reserveloo IN biblioloo.reserveloop %] @@ -917,9 +959,6 @@ function checkMultiHold() { [% END %] [% END %] - [% IF reserveloo.hold_group_id %] -
(part of a hold group)
- [% END %] [% IF ( CAN_user_reserveforothers_modify_holds_priority ) %] @@ -959,7 +998,6 @@ function checkMultiHold() { [% END # IF SuspendHoldsIntranet %] - [% END %] [% END %] diff --git a/reserve/request.pl b/reserve/request.pl index 4cf6c07..c848dcd 100755 --- a/reserve/request.pl +++ b/reserve/request.pl @@ -42,6 +42,7 @@ use Koha::DateUtils; use C4::Utils::DataTables::Members; use C4::Members; use C4::Search; # enabled_staff_search_views +use Data::Dumper; use Koha::Biblios; use Koha::DateUtils; @@ -568,6 +569,7 @@ foreach my $biblionumber (@biblionumbers) { } @reserves ) { + my $priority = $res->priority(); my %reserve; my @optionloop; @@ -580,7 +582,6 @@ foreach my $biblionumber (@biblionumbers) { } ); } - if ( $res->is_found() ) { $reserve{'holdingbranch'} = $res->item()->holdingbranch(); $reserve{'biblionumber'} = $res->item()->biblionumber(); @@ -631,10 +632,43 @@ foreach my $biblionumber (@biblionumbers) { $reserve{itemtype} = $res->itemtype(); $reserve{branchcode} = $res->branchcode(); $reserve{'hold_group_id'} = $res->hold_group_id; - push( @reserveloop, \%reserve ); } + my %reserve_records; + my $count = 0; + foreach my $reserve ( @reserves ) { + warn $reserve->reserve_id; + if ($reserve->hold_group_id) { + # Keep track of which hold_group_id (duplicated field) go with each reserve_id (unique field) + $reserve_records{ $reserve->hold_group_id }->{ $reserve->reserve_id }++; + warn $reserve->reserve_id; + @reserveloop = grep { $_->{reserve_id} != $reserve->reserve_id } @reserveloop; + }else { + warn $reserve->reserve_id; + warn $reserve->hold_group_id; + } + } + my @grouped_parts; + for my $hold_group ( sort { $a <=> $b } keys %reserve_records ) { + my @reserveids = sort { $a <=> $b } keys %{ $reserve_records{ $hold_group } }; + + my @holds = GetHoldGroupHolds($hold_group); + my $hold = $holds[0]; + my $patron = Koha::Patrons->find( {borrowernumber => $hold->{borrowernumber}} ); + + # Merge the itemnumbers with each hold_group_id + push @grouped_parts, { + hold_group_id => $hold_group, + reserve_id => join(', ', sort { $a <=> $b } @reserveids), + hold => $hold, + patron => $patron, + }; + } + if (@grouped_parts) { + $template->param( grouped_holds => \@grouped_parts ); + } + # get the time for the form name... my $time = time(); -- 2.1.4