@@ -, +, @@
template
---
.../prog/en/modules/reserve/request.tt | 48 ++++++++++++++++++++--
reserve/request.pl | 32 +++++++++++++++
2 files changed, 77 insertions(+), 3 deletions(-)
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt
+++ a/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 %]
+
+ [% 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 %]
--- a/reserve/request.pl
+++ a/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();
--