From 48e46751fef525e3d9a2693cfe62d14e5e86fd41 Mon Sep 17 00:00:00 2001 From: Julian Maurice Date: Wed, 7 Sep 2016 15:45:16 +0200 Subject: [PATCH] Bug 15516: Reword 'reserve group' to 'hold group' Signed-off-by: Josef Moravec Signed-off-by: Michal Denar --- C4/Reserves.pm | 64 +++++++++---------- .../data/mysql/atomicupdate/bug_15516.sql | 16 ++--- installer/data/mysql/kohastructure.sql | 18 +++--- .../prog/en/includes/hold-group-modal.inc | 27 ++++++++ .../prog/en/includes/holds_table.inc | 4 +- .../prog/en/includes/reserve-group-modal.inc | 27 -------- .../prog/en/includes/strings.inc | 2 + .../prog/en/modules/circ/pendingreserves.tt | 6 +- .../prog/en/modules/members/moremember.tt | 2 +- .../{reserve-group.tt => hold-group.tt} | 18 +++--- .../prog/en/modules/reserve/request.tt | 2 +- koha-tmpl/intranet-tmpl/prog/js/holds.js | 4 +- reserve/{reserve-group.pl => hold-group.pl} | 10 +-- reserve/placerequest.pl | 4 +- svc/holds | 2 +- t/db_dependent/Reserves/ReserveCount.t | 22 +++---- 16 files changed, 115 insertions(+), 113 deletions(-) create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/hold-group-modal.inc delete mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/reserve-group-modal.inc rename koha-tmpl/intranet-tmpl/prog/en/modules/reserve/{reserve-group.tt => hold-group.tt} (50%) rename reserve/{reserve-group.pl => hold-group.pl} (82%) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index b990086080..d1c89f39f0 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -138,9 +138,9 @@ BEGIN { GetMaxPatronHoldsForRecord - &AddReserveGroup - &DeleteReserveGroup - &GetReserveGroupReserves + &AddHoldGroup + &DeleteHoldGroup + &GetHoldGroupHolds ); @EXPORT_OK = qw( MergeHolds ); } @@ -167,7 +167,7 @@ sub AddReserve { $branch, $borrowernumber, $biblionumber, $bibitems, $priority, $resdate, $expdate, $notes, $title, $checkitem, $found, $itemtype, - $reserve_group_id + $hold_group_id ) = @_; $resdate = output_pref( { str => dt_from_string( $resdate ), dateonly => 1, dateformat => 'iso' }) @@ -216,7 +216,7 @@ sub AddReserve { expirationdate => $expdate, itemtype => $itemtype, item_level_hold => $checkitem ? 1 : 0, - reserve_group_id => $reserve_group_id, + hold_group_id => $hold_group_id, } )->store(); $hold->set_waiting() if $found eq 'W'; @@ -535,7 +535,7 @@ sub GetReserveCount { SELECT COUNT(*) AS counter FROM reserves WHERE borrowernumber = ? - AND reserve_group_id is NULL"; #added by 15516 + AND hold_group_id is NULL"; #added by 15516 my $sth = $dbh->prepare($query); $sth->execute($borrowernumber); my $row = $sth->fetchrow_hashref; @@ -544,10 +544,10 @@ sub GetReserveCount { $count += $row->{counter}; $query = " - SELECT COUNT(DISTINCT reserve_group_id) AS counter + SELECT COUNT(DISTINCT hold_group_id) AS counter FROM reserves WHERE borrowernumber = ? - AND reserve_group_id is not NULL + AND hold_group_id is not NULL "; $sth = $dbh->prepare($query); $sth->execute($borrowernumber); @@ -1122,14 +1122,14 @@ sub ModReserveAffect { $hold->itemnumber($itemnumber); $hold->set_waiting($transferToDo); - if ($hold->reserve_group_id) { + if ($hold->hold_group_id) { # Delete other reserves from same group $dbh->do(q{ DELETE FROM reserves - WHERE reserve_group_id = ? + WHERE hold_group_id = ? AND reserve_id != ? - }, undef, $hold->reserve_group_id, $hold->reserve_id); - DeleteReserveGroup($hold->reserve_group_id); + }, undef, $hold->hold_group_id, $hold->reserve_id); + DeleteHoldGroup($hold->hold_group_id); } _koha_notify_reserve( $hold->reserve_id ) @@ -2231,54 +2231,54 @@ sub GetHoldRule { return $sth->fetchrow_hashref(); } -=head2 AddReserveGroup +=head2 AddHoldGroup - my $reserve_group_id = AddReserveGroup(); + my $hold_group_id = AddHoldGroup(); -Creates a new reserve group and returns its ID +Creates a new hold group and returns its ID =cut -sub AddReserveGroup { +sub AddHoldGroup { my $dbh = C4::Context->dbh; - $dbh->do('INSERT INTO reserve_group VALUES ()'); - return $dbh->last_insert_id(undef, undef, 'reserve_group', undef); + $dbh->do('INSERT INTO hold_group VALUES ()'); + return $dbh->last_insert_id(undef, undef, 'hold_group', undef); } -=head2 DeleteReserveGroup +=head2 DeleteHoldGroup - DeleteReserveGroup($reserve_group_id); + DeleteHoldGroup($hold_group_id); -Delete a reserve group. Reserves that belong to this group are not removed. +Delete a hold group. Reserves that belong to this group are not removed. =cut -sub DeleteReserveGroup { - my ($reserve_group_id) = @_; +sub DeleteHoldGroup { + my ($hold_group_id) = @_; my $dbh = C4::Context->dbh; - my $query = 'DELETE FROM reserve_group WHERE reserve_group_id = ?'; - $dbh->do($query, undef, $reserve_group_id); + my $query = 'DELETE FROM hold_group WHERE hold_group_id = ?'; + $dbh->do($query, undef, $hold_group_id); } -=head2 GetReserveGroupReserves +=head2 GetHoldGroupHolds - my @reserves = GetReserveGroupReserves($reserve_group_id); + my @reserves = GetHoldGroupHolds($hold_group_id); -Fetch all reserve from a reserve group. +Fetch all reserve from a hold group. =cut -sub GetReserveGroupReserves { - my ($reserve_group_id) = @_; +sub GetHoldGroupHolds { + my ($hold_group_id) = @_; my $dbh = C4::Context->dbh; my $reserves = $dbh->selectall_arrayref(q{ SELECT * FROM reserves - WHERE reserve_group_id = ? - }, { Slice => {} }, $reserve_group_id); + WHERE hold_group_id = ? + }, { Slice => {} }, $hold_group_id); return () unless defined $reserves; diff --git a/installer/data/mysql/atomicupdate/bug_15516.sql b/installer/data/mysql/atomicupdate/bug_15516.sql index cad3cc5f5e..bc2c0598f3 100644 --- a/installer/data/mysql/atomicupdate/bug_15516.sql +++ b/installer/data/mysql/atomicupdate/bug_15516.sql @@ -1,11 +1,11 @@ -DROP TABLE IF EXISTS reserve_group; -CREATE TABLE reserve_group ( - reserve_group_id int unsigned NOT NULL AUTO_INCREMENT, - PRIMARY KEY (reserve_group_id) +DROP TABLE IF EXISTS hold_group; +CREATE TABLE hold_group ( + hold_group_id int unsigned NOT NULL AUTO_INCREMENT, + PRIMARY KEY (hold_group_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -ALTER TABLE reserves ADD COLUMN reserve_group_id int unsigned NULL DEFAULT NULL; -ALTER TABLE reserves ADD CONSTRAINT reserves_ibfk_6 FOREIGN KEY (reserve_group_id) REFERENCES reserve_group (reserve_group_id) ON DELETE SET NULL ON UPDATE CASCADE; +ALTER TABLE reserves ADD COLUMN hold_group_id int unsigned NULL DEFAULT NULL; +ALTER TABLE reserves ADD CONSTRAINT reserves_ibfk_6 FOREIGN KEY (hold_group_id) REFERENCES hold_group (hold_group_id) ON DELETE SET NULL ON UPDATE CASCADE; -ALTER TABLE old_reserves ADD COLUMN reserve_group_id int unsigned NULL DEFAULT NULL; -ALTER TABLE old_reserves ADD CONSTRAINT old_reserves_ibfk_5 FOREIGN KEY (reserve_group_id) REFERENCES reserve_group (reserve_group_id) ON DELETE SET NULL ON UPDATE CASCADE; +ALTER TABLE old_reserves ADD COLUMN hold_group_id int unsigned NULL DEFAULT NULL; +ALTER TABLE old_reserves ADD CONSTRAINT old_reserves_ibfk_5 FOREIGN KEY (hold_group_id) REFERENCES hold_group (hold_group_id) ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index 4d8c8dbb03..b54edc4d54 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -1714,7 +1714,7 @@ CREATE TABLE `old_issues` ( -- lists items that were checked out and have been r ON DELETE SET NULL ON UPDATE SET NULL, CONSTRAINT `old_issues_ibfk_2` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) ON DELETE SET NULL ON UPDATE SET NULL, - CONSTRAINT `old_reserves_ibfk_5` FOREIGN KEY (reserve_group_id) REFERENCES reserve_group (reserve_group_id) + CONSTRAINT `old_reserves_ibfk_5` FOREIGN KEY (hold_group_id) REFERENCES hold_group (hold_group_id) ON DELETE SET NULL ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; @@ -1819,7 +1819,7 @@ CREATE TABLE `reserves` ( -- information related to holds/reserves in Koha `suspend_until` DATETIME NULL DEFAULT NULL, `itemtype` VARCHAR(10) NULL DEFAULT NULL, -- If record level hold, the optional itemtype of the item the patron is requesting `item_level_hold` BOOLEAN NOT NULL DEFAULT 0, -- Is the hpld placed at item level - `reserve_group_id` int unsigned NULL DEFAULT NULL, -- Id used on reservations spanning multiple titles + `hold_group_id` int unsigned NULL DEFAULT NULL, -- Id used on reservations spanning multiple titles PRIMARY KEY (`reserve_id`), KEY priorityfoundidx (priority,found), KEY `borrowernumber` (`borrowernumber`), @@ -1832,17 +1832,17 @@ CREATE TABLE `reserves` ( -- information related to holds/reserves in Koha CONSTRAINT `reserves_ibfk_3` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `reserves_ibfk_4` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `reserves_ibfk_5` FOREIGN KEY (`itemtype`) REFERENCES `itemtypes` (`itemtype`) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT `reserves_ibfk_6` FOREIGN KEY (`reserve_group_id`) REFERENCES `reserve_group` (`reserve_group_id`) ON DELETE SET NULL ON UPDATE CASCADE + CONSTRAINT `reserves_ibfk_6` FOREIGN KEY (`hold_group_id`) REFERENCES `hold_group` (`hold_group_id`) ON DELETE SET NULL ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- --- Table structure for table reserve_group +-- Table structure for table hold_group -- -DROP TABLE IF EXISTS `reserve_group`; -CREATE TABLE `reserve_group` ( - `reserve_group_id` int unsigned NOT NULL AUTO_INCREMENT, - PRIMARY KEY(`reserve_group_id`) +DROP TABLE IF EXISTS `hold_group`; +CREATE TABLE `hold_group` ( + `hold_group_id` int unsigned NOT NULL AUTO_INCREMENT, + PRIMARY KEY(`hold_group_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- @@ -1871,7 +1871,7 @@ CREATE TABLE `old_reserves` ( -- this table holds all holds/reserves that have b `suspend_until` DATETIME NULL DEFAULT NULL, -- the date this hold is suspended until (NULL for infinitely) `itemtype` VARCHAR(10) NULL DEFAULT NULL, -- If record level hold, the optional itemtype of the item the patron is requesting `item_level_hold` BOOLEAN NOT NULL DEFAULT 0, -- Is the hpld placed at item level - `reserve_group_id` int unsigned NULL DEFAULT NULL, -- The id of a group of titles reservations fulfilled when one title is picked + `hold_group_id` int unsigned NULL DEFAULT NULL, -- The id of a group of titles reservations fulfilled when one title is picked PRIMARY KEY (`reserve_id`), KEY `old_reserves_borrowernumber` (`borrowernumber`), KEY `old_reserves_biblionumber` (`biblionumber`), diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/hold-group-modal.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/hold-group-modal.inc new file mode 100644 index 0000000000..48d9d33468 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/hold-group-modal.inc @@ -0,0 +1,27 @@ + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc index 545034898e..b2617af018 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc @@ -164,8 +164,8 @@ [% END %] [% END %] - [% IF hold.reserve_group_id %] -
(part of a reserve group)
+ [% IF hold.hold_group_id %] +
(part of a hold group)
[% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/reserve-group-modal.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/reserve-group-modal.inc deleted file mode 100644 index 2a3e68b157..0000000000 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/reserve-group-modal.inc +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/strings.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/strings.inc index eb7bfda139..b6eca6b81b 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/strings.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/strings.inc @@ -46,4 +46,6 @@ var CURRENT = _(" (current) "); var MSG_NO_ITEMTYPE = _("No itemtype"); var MSG_CHECKOUTS_BY_ITEMTYPE = _("Number of checkouts by item type"); + var PART_OF_A = _("(part of a %s)"); + var HOLD_GROUP = _("hold group"); diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt index ffd0a5ec54..2e48614af0 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt @@ -80,8 +80,8 @@ [% INCLUDE 'biblio-title.inc' biblio=reserveloo %]

[% IF ( reserveloo.author ) %]

by [% reserveloo.author | html %]

[% END %] - [% IF reserveloo.reserve_group_id %] -

(part of a reserve group)

+ [% IF reserveloo.hold_group_id %] +

(part of a hold group)

[% END %] [% ELSE %] @@ -308,5 +308,5 @@ [% END %] [%# TODO: this module needs to be separated to html and js part to be included correctly %] -[% INCLUDE 'reserve-group-modal.inc' %] +[% INCLUDE 'hold-group-modal.inc' %] [% INCLUDE 'intranet-bottom.inc' %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt index ffe501d012..5b59d0039f 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt @@ -957,5 +957,5 @@ [% END %] -[% INCLUDE 'reserve-group-modal.inc' %] +[% INCLUDE 'hold-group-modal.inc' %] [% INCLUDE 'intranet-bottom.inc' %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/reserve-group.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/hold-group.tt similarity index 50% rename from koha-tmpl/intranet-tmpl/prog/en/modules/reserve/reserve-group.tt rename to koha-tmpl/intranet-tmpl/prog/en/modules/reserve/hold-group.tt index 8926c0a4ca..cb5f9274c8 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/reserve-group.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/hold-group.tt @@ -1,12 +1,12 @@ [% USE Biblio %] [% INCLUDE 'doc-head-open.inc' %] - Koha › Circulation › Holds › Holds group ([% reserve_group_id %]) + Koha › Circulation › Holds › Holds group ([% hold_group_id %]) [% INCLUDE 'doc-head-close.inc' %] - -

Holds group ([% reserve_group_id %])

+ +

Holds group ([% hold_group_id %])

- [% IF reserves.size %] + [% IF holds.size %] @@ -16,12 +16,12 @@ - [% FOREACH reserve IN reserves %] - [% biblio = Biblio.Get(reserve.biblionumber) %] + [% FOREACH hold IN holds %] + [% biblio = Biblio.Get(hold.biblionumber) %] - - - + + + [% END %] 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 dd0bba33cf..e77a73aa83 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt @@ -975,6 +975,6 @@ [% END %] -[% INCLUDE 'reserve-group-modal.inc' %] +[% INCLUDE 'hold-group-modal.inc' %] [% INCLUDE 'intranet-bottom.inc' %] diff --git a/koha-tmpl/intranet-tmpl/prog/js/holds.js b/koha-tmpl/intranet-tmpl/prog/js/holds.js index de6f875002..6f0653633e 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/holds.js +++ b/koha-tmpl/intranet-tmpl/prog/js/holds.js @@ -44,9 +44,9 @@ $(document).ready(function() { title += " - " + oObj.itemnotes.escapeHtml() + "" } - if (oObj.reserve_group_id) { + if (oObj.hold_group_id) { title += '
'; - var link = '' + RESERVE_GROUP +'' + var link = '' + HOLD_GROUP +'' title += '' + PART_OF_A.format(link) + ''; } diff --git a/reserve/reserve-group.pl b/reserve/hold-group.pl similarity index 82% rename from reserve/reserve-group.pl rename to reserve/hold-group.pl index 91ed958538..fbffa13ac1 100755 --- a/reserve/reserve-group.pl +++ b/reserve/hold-group.pl @@ -24,19 +24,19 @@ use C4::Reserves; my $cgi = new CGI; my ($template, $loggedinuser, $cookie) = get_template_and_user({ - template_name => "reserve/reserve-group.tt", + template_name => "reserve/hold-group.tt", query => $cgi, type => "intranet", authnotrequired => 0, flagsrequired => { circulate => 'circulate_remaining_permissions' }, }); -my $reserve_group_id = $cgi->param('reserve_group_id'); -my @reserves = GetReserveGroupReserves($reserve_group_id); +my $hold_group_id = $cgi->param('hold_group_id'); +my @reserves = GetHoldGroupHolds($hold_group_id); $template->param( - reserve_group_id => $reserve_group_id, - reserves => \@reserves, + hold_group_id => $hold_group_id, + holds => \@holds, ); output_html_with_http_headers $cgi, $cookie, $template->output; diff --git a/reserve/placerequest.pl b/reserve/placerequest.pl index 05282facb1..68e6d51df7 100755 --- a/reserve/placerequest.pl +++ b/reserve/placerequest.pl @@ -75,9 +75,9 @@ my $found; if ( $type eq 'str8' && $borrower ) { - my $reserve_group_id; + my $hold_group_id; if ($multi_hold && $requestany) { - $reserve_group_id = AddReserveGroup(); + $hold_group_id = AddReserveGroup(); } foreach my $biblionumber ( keys %bibinfos ) { diff --git a/svc/holds b/svc/holds index 6505ddce47..2239599efa 100755 --- a/svc/holds +++ b/svc/holds @@ -108,7 +108,7 @@ while ( my $h = $holds_rs->next() ) { waiting_here => $h->branch()->branchcode() eq $branch, priority => $h->priority(), itemtype_limit => $itemtype_limit, - reserve_group_id => $h->reserve_group_id, + hold_group_id => $h->hold_group_id, reservedate_formatted => $h->reservedate() ? output_pref( { dt => dt_from_string( $h->reservedate() ), dateonly => 1 } ) diff --git a/t/db_dependent/Reserves/ReserveCount.t b/t/db_dependent/Reserves/ReserveCount.t index f5724a06ad..dc0f9e74d3 100644 --- a/t/db_dependent/Reserves/ReserveCount.t +++ b/t/db_dependent/Reserves/ReserveCount.t @@ -50,7 +50,7 @@ my $biblio = $builder->build( { source => 'Biblio', } ); my $biblionumber = $biblio->{biblionumber}; # Use AddReserve instead of TestBuilder because i don't manage -# to make TestBuilder set reserve_group_id to null. Idea ? +# to make TestBuilder set hold_group_id to null. Idea ? my $reserve_id = AddReserve($branchcode, $borrowernumber, $biblionumber, $biblionumber, 1, undef, undef, undef $biblio->{title}, undef, undef, undef); @@ -58,9 +58,9 @@ $biblio->{title}, undef, undef, undef); is(GetReserveCount($borrowernumber), 1, 'Test borrower has 1 reserve.'); my $reserves_group = $builder->build({ - source => 'ReserveGroup', + source => 'HoldGroup', value => { - reserve_group_id => 1 + hold_group_id => 1 } }); @@ -68,46 +68,46 @@ my $reserve2 = $builder->build({ source => 'Reserve', value => { borrowernumber => $borrowernumber, - reserve_group_id => 1 + hold_group_id => 1 } }); my $reserve3 = $builder->build({ source => 'Reserve', value => { borrowernumber => $borrowernumber, - reserve_group_id => 1 + hold_group_id => 1 } }); is(GetReserveCount($borrowernumber), 2, 'Test borrower has 2 reserve.'); my $reserves_group2 = $builder->build({ - source => 'ReserveGroup', + source => 'HoldGroup', value => { - reserve_group_id => 2 + hold_group_id => 2 } }); -my $reserve_group_id2 = $reserves_group2->{reserve_group_id}; +my $hold_group_id2 = $reserves_group2->{hold_group_id}; my $reserve4 = $builder->build({ source => 'Reserve', value => { borrowernumber => $borrowernumber, - reserve_group_id => 2 + hold_group_id => 2 } }); my $reserve5 = $builder->build({ source => 'Reserve', value => { borrowernumber => $borrowernumber, - reserve_group_id => 2 + hold_group_id => 2 } }); my $reserve6 = $builder->build({ source => 'Reserve', value => { borrowernumber => $borrowernumber, - reserve_group_id => 2 + hold_group_id => 2 } }); -- 2.20.1
[% biblio.title %][% reserve.priority %][% reserve.reservenotes %][% biblio.title %][% hold.priority %][% hold.reservenotes %]