From ef7de2a70f8633b9dd800fe47296e4816583925e Mon Sep 17 00:00:00 2001 From: Alex Buckley Date: Thu, 4 Oct 2018 19:49:27 +0000 Subject: [PATCH] Bug 21528: Display reserves in hold_group as single row in template --- .../prog/en/modules/reserve/request.tt | 48 ++++++++++++++++++++-- reserve/request.pl | 32 +++++++++++++++ 2 files changed, 77 insertions(+), 3 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..3e2e09c 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt @@ -809,7 +809,49 @@ function checkMultiHold() {   [% IF SuspendHoldsIntranet %] [% END %] - [% FOREACH reserveloo IN biblioloo.reserveloop %] + + [% IF (grouped_holds) %] + [% FOREACH group_level_hold IN grouped_holds %] + + + + [% INCLUDE 'patron-title.inc' patron=group_level_hold.patron hide_patron_infos_if_needed=1 %] + [% group_level_hold.hold.notes %] + [% group_level_hold.hold.date %] + [% group_level_hold.hold.expirationdate %] + + [% 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 %] + [% ELSE %] + [% FOREACH reserveloo IN biblioloo.reserveloop %] @@ -889,7 +931,7 @@ function checkMultiHold() { [% IF ( reserveloo.found ) %] - [% IF ( reserveloo.barcodenumber ) %] + [% IF ( reserveloo.barcodenumber ) %] [% reserveloo.barcodenumber %] [% ELSE %] @@ -959,7 +1001,7 @@ function checkMultiHold() { [% END # IF SuspendHoldsIntranet %] - + [% END %] [% END %] [% END %] diff --git a/reserve/request.pl b/reserve/request.pl index f876be3..43ae106 100755 --- a/reserve/request.pl +++ b/reserve/request.pl @@ -53,6 +53,7 @@ use Koha::ItemTypes; use Koha::Libraries; use Koha::Patrons; use POSIX qw(strftime); +use Data::Dumper; my $dbh = C4::Context->dbh; my $input = new CGI; @@ -635,6 +636,37 @@ foreach my $biblionumber (@biblionumbers) { push( @reserveloop, \%reserve ); } + my %reserve_records; + for my $reserve ( @reserveloop ) { + if ($reserve->{'hold_group_id'}) { + # Keep track of which hold_group_id (duplicated field) go with each itemnumber (unique field) + $reserve_records{ $reserve->{hold_group_id} }->{ $reserve->{itemnumber} }++; + } + } + + my @grouped_parts; + for my $hold_group ( sort { $a <=> $b } keys %reserve_records ) { + my @tickets = 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 ticket ids with each ipn + push @grouped_parts, { + hold_group_id => $hold_group, + itemnumber => join(', ', sort { $a <=> $b } @tickets), + hold => $hold, + patron => $patron, + }; + } + + foreach my $hold (@grouped_parts) { + warn Dumper($hold->{hold}); + } + if (@grouped_parts) { + $template->param( grouped_holds => \@grouped_parts ); + } + # get the time for the form name... my $time = time(); -- 2.1.4