View | Details | Raw Unified | Return to bug 15516
Collapse All | Expand All

(-)a/circ/circulation.pl (-1 / +1 lines)
Lines 503-509 if ($patron) { Link Here
503
    my $holds = Koha::Holds->search( { borrowernumber => $borrowernumber } ); # FIXME must be Koha::Patron->holds
503
    my $holds = Koha::Holds->search( { borrowernumber => $borrowernumber } ); # FIXME must be Koha::Patron->holds
504
    my $waiting_holds = $holds->waiting;
504
    my $waiting_holds = $holds->waiting;
505
    $template->param(
505
    $template->param(
506
        holds_count  => $holds->count(),
506
        holds_count  => $holds->count_holds,
507
        WaitingHolds => $waiting_holds,
507
        WaitingHolds => $waiting_holds,
508
    );
508
    );
509
509
(-)a/circ/view_holdsqueue.pl (+10 lines)
Lines 56-61 if ($run_report) { Link Here
56
            locationslimit => $locationslimit
56
            locationslimit => $locationslimit
57
        }
57
        }
58
    );
58
    );
59
    for my $item (@$items) {
60
        my $related_hold = Koha::Holds->search(
61
            {
62
                borrowernumber => $item->{borrowernumber}, reservedate => $item->{reservedate},
63
                biblionumber   => $item->{biblionumber}
64
            },
65
            { order_by => 'reservedate' }
66
        )->next;
67
        $item->{hold_group_id} = $related_hold ? $related_hold->hold_group_id : undef;
68
    }
59
69
60
    $template->param(
70
    $template->param(
61
        branchlimit    => $branchlimit,
71
        branchlimit    => $branchlimit,
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/hold-group-modal.inc (+15 lines)
Line 0 Link Here
1
<div id="hold-group-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="hold-group-modal-label">
2
    <div class="modal-dialog" role="document">
3
        <div class="modal-content">
4
            <div class="modal-header">
5
                <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
6
                <h4 class="modal-title" id="hold-group-modal-label">Hold group</h4>
7
            </div>
8
            <div class="modal-body">
9
            </div>
10
            <div class="modal-footer">
11
                <button type="button" class="btn btn-default deny" data-dismiss="modal">Close</button>
12
            </div>
13
        </div><!-- /.modal-content -->
14
    </div><!-- /.modal-dialog -->
15
</div><!-- /.modal -->
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc (+3 lines)
Lines 220-225 Link Here
220
                    [%- IF hold.non_priority -%]
220
                    [%- IF hold.non_priority -%]
221
                        <br><i>Non priority hold</i>
221
                        <br><i>Non priority hold</i>
222
                    [%- END -%]
222
                    [%- END -%]
223
                    [%- IF hold.hold_group_id -%]
224
                        <div>(part of a <a href="/cgi-bin/koha/reserve/hold-group.pl?hold_group_id=[% hold.hold_group_id | uri %]" class="hold-group">hold group</a>)</div>
225
                    [%- END -%]
223
                </td>
226
                </td>
224
                [%- IF ( CAN_user_reserveforothers_modify_holds_priority ) -%]
227
                [%- IF ( CAN_user_reserveforothers_modify_holds_priority ) -%]
225
                [%- UNLESS hold.found -%]
228
                [%- UNLESS hold.found -%]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt (+3 lines)
Lines 951-956 Link Here
951
    </div> <!-- /.modal-dialog -->
951
    </div> <!-- /.modal-dialog -->
952
</div> <!-- /#barcodeSubmittedModal -->
952
</div> <!-- /#barcodeSubmittedModal -->
953
953
954
[% INCLUDE 'hold-group-modal.inc' %]
955
954
[% MACRO jsinclude BLOCK %]
956
[% MACRO jsinclude BLOCK %]
955
    [% INCLUDE 'datatables.inc' %]
957
    [% INCLUDE 'datatables.inc' %]
956
    [% INCLUDE 'columns_settings.inc' %]
958
    [% INCLUDE 'columns_settings.inc' %]
Lines 990-995 Link Here
990
    [% END %]
992
    [% END %]
991
    [% Asset.js("js/holds.js") | $raw %]
993
    [% Asset.js("js/holds.js") | $raw %]
992
    [% INCLUDE 'calendar.inc' %]
994
    [% INCLUDE 'calendar.inc' %]
995
    [% Asset.js("js/hold-group.js") | $raw %]
993
    <script>
996
    <script>
994
        table_settings_issues_table = [% TablesSettings.GetTableSettings( 'circ', 'circulation', 'issues-table', 'json' ) | $raw %]
997
        table_settings_issues_table = [% TablesSettings.GetTableSettings( 'circ', 'circulation', 'issues-table', 'json' ) | $raw %]
995
        table_settings_relatives_issues_table = [% TablesSettings.GetTableSettings( 'circ', 'circulation', 'relatives-issues-table', 'json' ) | $raw %]
998
        table_settings_relatives_issues_table = [% TablesSettings.GetTableSettings( 'circ', 'circulation', 'relatives-issues-table', 'json' ) | $raw %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt (+6 lines)
Lines 108-113 Link Here
108
                [% ELSE %]
108
                [% ELSE %]
109
                    [% IF ( biblio.biblioitem.publicationyear ) %]<p>[% biblio.biblioitem.publicationyear | html %]</p>[% END %]
109
                    [% IF ( biblio.biblioitem.publicationyear ) %]<p>[% biblio.biblioitem.publicationyear | html %]</p>[% END %]
110
                [% END %]
110
                [% END %]
111
                [% IF ( hold.hold_group_id ) %]
112
                    <p>(part of a <a class="hold-group" href="/cgi-bin/koha/reserve/hold-group.pl?hold_group_id=[% hold.hold_group_id | html %]">hold group</a>)</p>
113
                [% END %]
111
            </td>
114
            </td>
112
        [% ELSE %]
115
        [% ELSE %]
113
            <td>"</td>
116
            <td>"</td>
Lines 319-328 Link Here
319
        </div> <!-- /.col-sm-2.col-sm-pull-10 -->
322
        </div> <!-- /.col-sm-2.col-sm-pull-10 -->
320
     </div> <!-- /.row -->
323
     </div> <!-- /.row -->
321
324
325
     [% INCLUDE 'hold-group-modal.inc' %]
326
322
[% MACRO jsinclude BLOCK %]
327
[% MACRO jsinclude BLOCK %]
323
    [% INCLUDE 'calendar.inc' %]
328
    [% INCLUDE 'calendar.inc' %]
324
    [% INCLUDE 'datatables.inc' %]
329
    [% INCLUDE 'datatables.inc' %]
325
    [% INCLUDE 'columns_settings.inc' %]
330
    [% INCLUDE 'columns_settings.inc' %]
331
    [% Asset.js("js/hold-group.js") | $raw %]
326
    <script>
332
    <script>
327
        $(document).ready(function() {
333
        $(document).ready(function() {
328
          var table_settings = [% TablesSettings.GetTableSettings('circ', 'holds', 'holds-to-pull', 'json') | $raw %];
334
          var table_settings = [% TablesSettings.GetTableSettings('circ', 'holds', 'holds-to-pull', 'json') | $raw %];
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/view_holdsqueue.tt (+6 lines)
Lines 197-202 Link Here
197
                            [% ELSE %]
197
                            [% ELSE %]
198
                                <strong><a href="/cgi-bin/koha/catalogue/moredetail.pl?itemnumber=[% itemsloo.itemnumber | uri %]&biblionumber=[% itemsloo.biblionumber | uri %]#item[% itemsloo.itemnumber | uri %]">[% itemsloo.barcode | uri %]</a></strong> <em>or any available</em>
198
                                <strong><a href="/cgi-bin/koha/catalogue/moredetail.pl?itemnumber=[% itemsloo.itemnumber | uri %]&biblionumber=[% itemsloo.biblionumber | uri %]#item[% itemsloo.itemnumber | uri %]">[% itemsloo.barcode | uri %]</a></strong> <em>or any available</em>
199
                            [% END %]
199
                            [% END %]
200
                            [% IF itemsloo.hold_group_id %]
201
                                <div>(part of a <a href="/cgi-bin/koha/reserve/hold-group.pl?hold_group_id=[% itemsloo.hold_group_id | uri %]" class="hold-group">hold group</a>)</div>
202
                            [% END %]
200
                        </td>
203
                        </td>
201
                        <td class="hq-patron">
204
                        <td class="hq-patron">
202
                          <p>
205
                          <p>
Lines 289-297 Link Here
289
    </form>
292
    </form>
290
[% END %]
293
[% END %]
291
294
295
[% INCLUDE 'hold-group-modal.inc' %]
296
292
[% MACRO jsinclude BLOCK %]
297
[% MACRO jsinclude BLOCK %]
293
    [% INCLUDE 'datatables.inc' %]
298
    [% INCLUDE 'datatables.inc' %]
294
    [% INCLUDE 'columns_settings.inc' %]
299
    [% INCLUDE 'columns_settings.inc' %]
300
    [% Asset.js("js/hold-group.js") | $raw %]
295
    <script>
301
    <script>
296
        $(document).ready(function() {
302
        $(document).ready(function() {
297
            var holdst;
303
            var holdst;
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt (+3 lines)
Lines 685-690 Link Here
685
            [% INCLUDE 'modals/resolve_return_claim.inc' %]
685
            [% INCLUDE 'modals/resolve_return_claim.inc' %]
686
        [% END %]
686
        [% END %]
687
687
688
        [% INCLUDE 'hold-group-modal.inc' %]
689
688
[% MACRO jsinclude BLOCK %]
690
[% MACRO jsinclude BLOCK %]
689
    [% INCLUDE 'datatables.inc' %]
691
    [% INCLUDE 'datatables.inc' %]
690
    [% Asset.js("lib/jquery/plugins/rowGroup/dataTables.rowGroup.min.js") | $raw %]
692
    [% Asset.js("lib/jquery/plugins/rowGroup/dataTables.rowGroup.min.js") | $raw %]
Lines 723-728 Link Here
723
    [% INCLUDE 'str/members-menu.inc' %]
725
    [% INCLUDE 'str/members-menu.inc' %]
724
    [% Asset.js("js/members-menu.js") | $raw %]
726
    [% Asset.js("js/members-menu.js") | $raw %]
725
    [% Asset.js("js/recalls.js") | $raw %]
727
    [% Asset.js("js/recalls.js") | $raw %]
728
    [% Asset.js("js/hold-group.js") | $raw %]
726
    <script>
729
    <script>
727
        const LoadCheckoutsTableDelay = 0;
730
        const LoadCheckoutsTableDelay = 0;
728
731
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/hold-group.tt (+30 lines)
Line 0 Link Here
1
[% INCLUDE 'doc-head-open.inc' %]
2
  <title>Holds group ([% hold_group.id | html %]) &rsaquo; Holds &rsaquo; Circulation &rsaquo; Koha</title>
3
  [% INCLUDE 'doc-head-close.inc' %]
4
</head>
5
<body id="hold-group">
6
  <h1>Holds group ([% hold_group.id | html %])</h1>
7
  <div id="main">
8
    [% holds = hold_group.holds %]
9
    [% IF holds.count %]
10
      <table>
11
        <thead>
12
          <tr>
13
            <th>Title</th>
14
            <th>Priority</th>
15
            <th>Notes</th>
16
          </tr>
17
        </thead>
18
        <tbody>
19
          [% FOREACH hold IN holds %]
20
            [% biblio = hold.biblio %]
21
            <tr>
22
              <td><a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblio.biblionumber | uri %]">[% biblio.title | html %]</a></td>
23
              <td>[% hold.priority | html %]</td>
24
              <td>[% hold.reservenotes | html %]</td>
25
            </tr>
26
          [% END %]
27
        </tbody>
28
      <table>
29
    [% END %]
30
  [% INCLUDE 'intranet-bottom.inc' %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt (-2 / +11 lines)
Lines 590-596 Link Here
590
590
591
                            [% UNLESS ( multi_hold ) %]
591
                            [% UNLESS ( multi_hold ) %]
592
                                <li>
592
                                <li>
593
                                    <label for="requestany">Hold next available item </label>
593
                                    <label for="requestany">Hold next available item: </label>
594
                                    [% IF force_hold_level == 'item' || force_hold_level == 'item_group'  %]
594
                                    [% IF force_hold_level == 'item' || force_hold_level == 'item_group'  %]
595
                                        <input type="checkbox" id="requestany" name="request" disabled="true" />
595
                                        <input type="checkbox" id="requestany" name="request" disabled="true" />
596
                                    [% ELSIF force_hold_level == 'record' %]
596
                                    [% ELSIF force_hold_level == 'record' %]
Lines 604-610 Link Here
604
604
605
                                [% IF remaining_holds_for_record > 1 %]
605
                                [% IF remaining_holds_for_record > 1 %]
606
                                    <li>
606
                                    <li>
607
                                        <label for="holds_to_place_count">Holds to place (count)</label>
607
                                        <label for="holds_to_place_count">Holds to place (count): </label>
608
                                        <input type="text" inputmode="numeric" pattern="[0-9]*" id="holds_to_place_count" name="holds_to_place_count" maxlength="[% remaining_holds_for_record | html %]" value="1" />
608
                                        <input type="text" inputmode="numeric" pattern="[0-9]*" id="holds_to_place_count" name="holds_to_place_count" maxlength="[% remaining_holds_for_record | html %]" value="1" />
609
                                    </li>
609
                                    </li>
610
                                [% ELSE %]
610
                                [% ELSE %]
Lines 617-622 Link Here
617
                                <input name="non_priority" id="non_priority" type="checkbox" />
617
                                <input name="non_priority" id="non_priority" type="checkbox" />
618
                                <span class="hint">A non priority hold doesn't prevent a current checkout from renewing</span>
618
                                <span class="hint">A non priority hold doesn't prevent a current checkout from renewing</span>
619
                            </li>
619
                            </li>
620
621
                            <li id="hold_group_list_item">
622
                                <label for="hold_group">Treat as hold group: </label>
623
                                <input name="hold_group" id="hold_group" type="checkbox" />
624
                                <span class="hint">Place a hold on the next available title from this group</span>
625
                            </li>
620
                        </ol>
626
                        </ol>
621
627
622
                        [% UNLESS ( multi_hold ) %]
628
                        [% UNLESS ( multi_hold ) %]
Lines 1288-1293 Link Here
1288
        </div>
1294
        </div>
1289
    </div>
1295
    </div>
1290
1296
1297
    [% INCLUDE 'hold-group-modal.inc' %]
1298
1291
[% MACRO jsinclude BLOCK %]
1299
[% MACRO jsinclude BLOCK %]
1292
    [% INCLUDE 'datatables.inc' %]
1300
    [% INCLUDE 'datatables.inc' %]
1293
    [% INCLUDE 'calendar.inc' %]
1301
    [% INCLUDE 'calendar.inc' %]
Lines 1295-1300 Link Here
1295
    [% Asset.js("lib/hc-sticky.js") | $raw %]
1303
    [% Asset.js("lib/hc-sticky.js") | $raw %]
1296
    [% INCLUDE 'select2.inc' %]
1304
    [% INCLUDE 'select2.inc' %]
1297
    [% Asset.js("js/holds.js") | $raw%]
1305
    [% Asset.js("js/holds.js") | $raw%]
1306
    [% Asset.js("js/hold-group.js") | $raw %]
1298
1307
1299
    [% SET url_biblio_params = "biblionumber=" _ biblionumbers.join("&amp;biblionumber=") %]
1308
    [% SET url_biblio_params = "biblionumber=" _ biblionumbers.join("&amp;biblionumber=") %]
1300
    [% IF multi_hold %]
1309
    [% IF multi_hold %]
(-)a/koha-tmpl/intranet-tmpl/prog/js/hold-group.js (+8 lines)
Line 0 Link Here
1
$(document).ready(function() {
2
    $('body').on('click', 'a.hold-group', function() {
3
        var href = $(this).attr('href');
4
        $('#hold-group-modal .modal-body').load(href + " #main");
5
        $('#hold-group-modal').modal('show');
6
        return false;
7
    });
8
});
(-)a/koha-tmpl/intranet-tmpl/prog/js/holds.js (+6 lines)
Lines 164-169 $(document).ready(function() { Link Here
164
                                title += " - <span class='" + span_class + "'>" + oObj.itemnotes.escapeHtml() + "</span>"
164
                                title += " - <span class='" + span_class + "'>" + oObj.itemnotes.escapeHtml() + "</span>"
165
                            }
165
                            }
166
166
167
                            if ( oObj.hold_group_id ) {
168
                                title += '<br>';
169
                                var link = '<a class="hold-group" href="/cgi-bin/koha/reserve/hold-group.pl?hold_group_id=' + oObj.hold_group_id + '">' + __("part of a hold group") +'</a>'
170
                                title += '<span>(' + link + ')</span>';
171
                            }
172
167
                            return title;
173
                            return title;
168
                        }
174
                        }
169
                    },
175
                    },
(-)a/members/moremember.pl (-2 / +2 lines)
Lines 208-214 if ( $patron->is_expired || $patron->is_going_to_expire ) { Link Here
208
my $holds = Koha::Holds->search( { borrowernumber => $borrowernumber } ); # FIXME must be Koha::Patron->holds
208
my $holds = Koha::Holds->search( { borrowernumber => $borrowernumber } ); # FIXME must be Koha::Patron->holds
209
my $waiting_holds = $holds->waiting;
209
my $waiting_holds = $holds->waiting;
210
$template->param(
210
$template->param(
211
    holds_count  => $holds->count(),
211
    holds_count  => $holds->count_holds,
212
    WaitingHolds => $waiting_holds,
212
    WaitingHolds => $waiting_holds,
213
);
213
);
214
214
Lines 292-298 my $patron_lists_count = $patron->get_lists_with_patron->count(); Link Here
292
$template->param(
292
$template->param(
293
    patron          => $patron,
293
    patron          => $patron,
294
    issuecount      => $patron->checkouts->count,
294
    issuecount      => $patron->checkouts->count,
295
    holds_count     => $patron->holds->count,
295
    holds_count     => $patron->holds->count_holds,
296
    fines           => $patron->account->balance,
296
    fines           => $patron->account->balance,
297
    translated_language => $translated_language,
297
    translated_language => $translated_language,
298
    detailview      => 1,
298
    detailview      => 1,
(-)a/opac/opac-reserve.pl (-1 / +1 lines)
Lines 182-188 $template->param( branch => $branch ); Link Here
182
if ( $query->param('place_reserve') ) {
182
if ( $query->param('place_reserve') ) {
183
    my $reserve_cnt = 0;
183
    my $reserve_cnt = 0;
184
    if ($maxreserves) {
184
    if ($maxreserves) {
185
        $reserve_cnt = $patron->holds->count;
185
        $reserve_cnt = $patron->holds->count_holds;
186
    }
186
    }
187
187
188
    # List is composed of alternating biblio/item/branch
188
    # List is composed of alternating biblio/item/branch
(-)a/reserve/hold-group.pl (+42 lines)
Line 0 Link Here
1
#!/usr/bin/perl
2
3
# This file is part of Koha.
4
#
5
# Koha is free software; you can redistribute it and/or modify it
6
# under the terms of the GNU General Public License as published by
7
# the Free Software Foundation; either version 3 of the License, or
8
# (at your option) any later version.
9
#
10
# Koha is distributed in the hope that it will be useful, but
11
# WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
# GNU General Public License for more details.
14
#
15
# You should have received a copy of the GNU General Public License
16
# along with Koha; if not, see <http://www.gnu.org/licenses>.
17
18
use Modern::Perl;
19
use CGI qw( -utf8 );
20
21
use C4::Auth qw( get_template_and_user );
22
use C4::Output qw( output_html_with_http_headers );
23
use Koha::HoldGroups;
24
25
my $cgi = CGI->new;
26
my ( $template, $loggedinuser, $cookie, $flags ) = get_template_and_user(
27
    {
28
        template_name => "reserve/hold-group.tt",
29
        query         => $cgi,
30
        type          => "intranet",
31
        flagsrequired => { circulate => 'circulate_remaining_permissions' },
32
    }
33
);
34
35
my $reserve_group_id = $cgi->param('hold_group_id');
36
my $hold_group       = Koha::HoldGroups->find($reserve_group_id);
37
38
$template->param(
39
    hold_group => $hold_group,
40
);
41
42
output_html_with_http_headers $cgi, $cookie, $template->output;
(-)a/reserve/placerequest.pl (+10 lines)
Lines 30-35 use C4::Auth qw( checkauth ); Link Here
30
30
31
use Koha::Items;
31
use Koha::Items;
32
use Koha::Patrons;
32
use Koha::Patrons;
33
use Koha::HoldGroup;
33
34
34
my $input = CGI->new();
35
my $input = CGI->new();
35
36
Lines 49-54 my $item_group_id = $input->param('item_group_id'); Link Here
49
my $expirationdate = $input->param('expiration_date');
50
my $expirationdate = $input->param('expiration_date');
50
my $itemtype       = $input->param('itemtype') || undef;
51
my $itemtype       = $input->param('itemtype') || undef;
51
my $non_priority   = $input->param('non_priority');
52
my $non_priority   = $input->param('non_priority');
53
my $hold_group_param     = $input->param('hold_group') || undef;
54
my $hold_group;
52
55
53
my $patron = Koha::Patrons->find( $borrowernumber );
56
my $patron = Koha::Patrons->find( $borrowernumber );
54
57
Lines 67-72 my $found; Link Here
67
70
68
if ( $patron ) {
71
if ( $patron ) {
69
72
73
    if ( $hold_group_param ) {
74
        $hold_group = Koha::HoldGroup->new->store;
75
    }
76
70
    foreach my $biblionumber ( keys %bibinfos ) {
77
    foreach my $biblionumber ( keys %bibinfos ) {
71
78
72
        my $can_override = C4::Context->preference('AllowHoldPolicyOverride');
79
        my $can_override = C4::Context->preference('AllowHoldPolicyOverride');
Lines 97-102 if ( $patron ) { Link Here
97
                            found            => $found,
104
                            found            => $found,
98
                            itemtype         => $itemtype,
105
                            itemtype         => $itemtype,
99
                            non_priority     => $non_priority,
106
                            non_priority     => $non_priority,
107
                            hold_group_id    => $hold_group ? $hold_group->id : undef,
100
                        }
108
                        }
101
                    );
109
                    );
102
110
Lines 120-125 if ( $patron ) { Link Here
120
                        found            => $found,
128
                        found            => $found,
121
                        itemtype         => $itemtype,
129
                        itemtype         => $itemtype,
122
                        non_priority     => $non_priority,
130
                        non_priority     => $non_priority,
131
                        hold_group_id    => $hold_group ? $hold_group->id : undef,
123
                    }
132
                    }
124
                );
133
                );
125
            }
134
            }
Lines 142-147 if ( $patron ) { Link Here
142
                            itemtype         => $itemtype,
151
                            itemtype         => $itemtype,
143
                            non_priority     => $non_priority,
152
                            non_priority     => $non_priority,
144
                            item_group_id    => $item_group_id,
153
                            item_group_id    => $item_group_id,
154
                            hold_group_id    => $hold_group ? $hold_group->id : undef,
145
                        }
155
                        }
146
                    );
156
                    );
147
                }
157
                }
(-)a/reserve/request.pl (-1 / +2 lines)
Lines 180-186 if ($borrowernumber_hold && !$action) { Link Here
180
    # we check the reserves of the user, and if they can reserve a document
180
    # we check the reserves of the user, and if they can reserve a document
181
    # FIXME At this time we have a simple count of reservs, but, later, we could improve the infos "title" ...
181
    # FIXME At this time we have a simple count of reservs, but, later, we could improve the infos "title" ...
182
182
183
    my $reserves_count = $patron->holds->count;
183
    my $reserves_count = $patron->holds->count_holds;
184
184
185
    my $new_reserves_count = scalar( @biblionumbers );
185
    my $new_reserves_count = scalar( @biblionumbers );
186
186
Lines 640-645 if ( ( $findborrower && $borrowernumber_hold || $findclub && $club_hold ) Link Here
640
                $reserve{branchcode}       = $res->branchcode();
640
                $reserve{branchcode}       = $res->branchcode();
641
                $reserve{non_priority}     = $res->non_priority();
641
                $reserve{non_priority}     = $res->non_priority();
642
                $reserve{object}           = $res;
642
                $reserve{object}           = $res;
643
                $reserve{hold_group_id}    = $res->hold_group_id;
643
644
644
                if ( $holds_count_per_patron->{ $reserve{'borrowernumber'} } == 1 ) {
645
                if ( $holds_count_per_patron->{ $reserve{'borrowernumber'} } == 1 ) {
645
                    $reserve{'change_hold_type_allowed'} = 1;
646
                    $reserve{'change_hold_type_allowed'} = 1;
(-)a/svc/holds (-1 / +1 lines)
Lines 115-120 while ( my $h = $holds_rs->next() ) { Link Here
115
        priority              => $h->priority(),
115
        priority              => $h->priority(),
116
        reservenotes          => $h->reservenotes(),
116
        reservenotes          => $h->reservenotes(),
117
        itemtype_limit        => $itemtype_limit,
117
        itemtype_limit        => $itemtype_limit,
118
        hold_group_id         => $h->hold_group_id,
118
        reservedate_formatted => $h->reservedate()
119
        reservedate_formatted => $h->reservedate()
119
        ? output_pref( { dt => dt_from_string( $h->reservedate() ), dateonly => 1 } )
120
        ? output_pref( { dt => dt_from_string( $h->reservedate() ), dateonly => 1 } )
120
        : q{},
121
        : q{},
121
- 

Return to bug 15516