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

(-)a/C4/Biblio.pm (-1 / +1 lines)
Lines 434-440 sub DelBiblio { Link Here
434
434
435
    # We delete any existing holds
435
    # We delete any existing holds
436
    require C4::Reserves;
436
    require C4::Reserves;
437
    my ($count, $reserves) = C4::Reserves::GetReservesFromBiblionumber($biblionumber);
437
    my $reserves = C4::Reserves::GetReservesFromBiblionumber({ biblionumber => $biblionumber });
438
    foreach my $res ( @$reserves ) {
438
    foreach my $res ( @$reserves ) {
439
        C4::Reserves::CancelReserve({ reserve_id => $res->{'reserve_id'} });
439
        C4::Reserves::CancelReserve({ reserve_id => $res->{'reserve_id'} });
440
    }
440
    }
(-)a/C4/ILSDI/Services.pm (-2 / +2 lines)
Lines 209-215 sub GetRecords { Link Here
209
209
210
        # Get most of the needed data
210
        # Get most of the needed data
211
        my $biblioitemnumber = $biblioitem->{'biblioitemnumber'};
211
        my $biblioitemnumber = $biblioitem->{'biblioitemnumber'};
212
        my @reserves         = GetReservesFromBiblionumber( $biblionumber, undef, undef );
212
        my $reserves         = GetReservesFromBiblionumber({ biblionumber => $biblionumber });
213
        my $issues           = GetBiblioIssues($biblionumber);
213
        my $issues           = GetBiblioIssues($biblionumber);
214
        my $items            = GetItemsByBiblioitemnumber($biblioitemnumber);
214
        my $items            = GetItemsByBiblioitemnumber($biblioitemnumber);
215
215
Lines 226-232 sub GetRecords { Link Here
226
226
227
        # Hashref building...
227
        # Hashref building...
228
        $biblioitem->{'items'}->{'item'}       = $items;
228
        $biblioitem->{'items'}->{'item'}       = $items;
229
        $biblioitem->{'reserves'}->{'reserve'} = $reserves[1];
229
        $biblioitem->{'reserves'}->{'reserve'} = $reserves;
230
        $biblioitem->{'issues'}->{'issue'}     = $issues;
230
        $biblioitem->{'issues'}->{'issue'}     = $issues;
231
231
232
        push @records, $biblioitem;
232
        push @records, $biblioitem;
(-)a/C4/Reserves.pm (-7 / +12 lines)
Lines 267-283 sub GetReserve { Link Here
267
267
268
=head2 GetReservesFromBiblionumber
268
=head2 GetReservesFromBiblionumber
269
269
270
  ($count, $title_reserves) = GetReservesFromBiblionumber($biblionumber);
270
  my $reserves = GetReservesFromBiblionumber({
271
    biblionumber => $biblionumber,
272
    itemnumber => $itemnumber,
273
    all_dates => 1|0
274
  });
271
275
272
This function gets the list of reservations for one C<$biblionumber>, returning a count
276
This function gets the list of reservations for one C<$biblionumber>,
273
of the reserves and an arrayref pointing to the reserves for C<$biblionumber>.
277
returning an arrayref pointing to the reserves for C<$biblionumber>.
274
278
275
=cut
279
=cut
276
280
277
sub GetReservesFromBiblionumber {
281
sub GetReservesFromBiblionumber {
278
    my ($biblionumber) = shift or return (0, []);
282
    my ( $params ) = @_;
279
    my ($all_dates) = shift;
283
    my $biblionumber = $params->{biblionumber} or return [];
280
    my ($itemnumber) = shift;
284
    my $itemnumber = $params->{itemnumber};
285
    my $all_dates = $params->{all_dates} // 0;
281
    my $dbh   = C4::Context->dbh;
286
    my $dbh   = C4::Context->dbh;
282
287
283
    # Find the desired items in the reserves
288
    # Find the desired items in the reserves
Lines 352-358 sub GetReservesFromBiblionumber { Link Here
352
        }
357
        }
353
        push @results, $data;
358
        push @results, $data;
354
    }
359
    }
355
    return ( $#results + 1, \@results );
360
    return \@results;
356
}
361
}
357
362
358
=head2 GetReservesFromItemnumber
363
=head2 GetReservesFromItemnumber
(-)a/C4/SIP/ILS/Item.pm (-2 / +2 lines)
Lines 95-102 sub new { Link Here
95
    }
95
    }
96
	my $borrower = GetMember(borrowernumber=>$issue->{'borrowernumber'});
96
	my $borrower = GetMember(borrowernumber=>$issue->{'borrowernumber'});
97
	$item->{patron} = $borrower->{'cardnumber'};
97
	$item->{patron} = $borrower->{'cardnumber'};
98
    my ($whatever, $arrayref) = GetReservesFromBiblionumber($item->{biblionumber});
98
    my $reserves = GetReservesFromBiblionumber({ biblionumber => $item->{biblionumber} });
99
	$item->{hold_queue} = [ sort priority_sort @$arrayref ];
99
	$item->{hold_queue} = [ sort priority_sort @$reserves ];
100
	$item->{hold_shelf}    = [( grep {   defined $_->{found}  and $_->{found} eq 'W' } @{$item->{hold_queue}} )];
100
	$item->{hold_shelf}    = [( grep {   defined $_->{found}  and $_->{found} eq 'W' } @{$item->{hold_queue}} )];
101
	$item->{pending_queue} = [( grep {(! defined $_->{found}) or  $_->{found} ne 'W' } @{$item->{hold_queue}} )];
101
	$item->{pending_queue} = [( grep {(! defined $_->{found}) or  $_->{found} ne 'W' } @{$item->{hold_queue}} )];
102
	$self = $item;
102
	$self = $item;
(-)a/acqui/parcel.pl (-1 / +1 lines)
Lines 174-180 for my $order ( @orders ) { Link Here
174
    $line{holds} = 0;
174
    $line{holds} = 0;
175
    my @itemnumbers = GetItemnumbersFromOrder( $order->{ordernumber} );
175
    my @itemnumbers = GetItemnumbersFromOrder( $order->{ordernumber} );
176
    for my $itemnumber ( @itemnumbers ) {
176
    for my $itemnumber ( @itemnumbers ) {
177
        my ( $count ) = &GetReservesFromBiblionumber($line{biblionumber}, undef, $itemnumber);
177
        my ( $count ) = &GetReservesFromBiblionumber({ biblionumber => $line{biblionumber}, itemnumber => $itemnumber });
178
        $line{holds} += $count;
178
        $line{holds} += $count;
179
    }
179
    }
180
    $line{budget} = GetBudgetByOrderNumber( $line{ordernumber} );
180
    $line{budget} = GetBudgetByOrderNumber( $line{ordernumber} );
(-)a/catalogue/ISBDdetail.pl (-1 / +2 lines)
Lines 113-119 $template->param ( Link Here
113
);
113
);
114
114
115
115
116
my ( $holdcount, $holds ) = C4::Reserves::GetReservesFromBiblionumber($biblionumber,1);
116
my $holds = C4::Reserves::GetReservesFromBiblionumber({ biblionumber => $biblionumber, all_dates => 1 });
117
my $holdcount = scalar( @$holds );
117
$template->param( holdcount => $holdcount, holds => $holds );
118
$template->param( holdcount => $holdcount, holds => $holds );
118
119
119
output_html_with_http_headers $query, $cookie, $template->output;
120
output_html_with_http_headers $query, $cookie, $template->output;
(-)a/catalogue/MARCdetail.pl (-1 / +2 lines)
Lines 336-342 $template->param ( Link Here
336
    searchid            => $query->param('searchid'),
336
    searchid            => $query->param('searchid'),
337
);
337
);
338
338
339
my ( $holdcount, $holds ) = C4::Reserves::GetReservesFromBiblionumber($biblionumber,1);
339
my $holds = C4::Reserves::GetReservesFromBiblionumber({ biblionumber => $biblionumber, all_dates => 1 });
340
my $holdcount = scalar( @$holds );
340
$template->param( holdcount => $holdcount, holds => $holds );
341
$template->param( holdcount => $holdcount, holds => $holds );
341
342
342
output_html_with_http_headers $query, $cookie, $template->output;
343
output_html_with_http_headers $query, $cookie, $template->output;
(-)a/catalogue/detail.pl (-1 / +2 lines)
Lines 406-412 if (C4::Context->preference('TagsEnabled') and $tag_quantity = C4::Context->pref Link Here
406
                                'sort'=>'-weight', limit=>$tag_quantity}));
406
                                'sort'=>'-weight', limit=>$tag_quantity}));
407
}
407
}
408
408
409
my ( $holdcount, $holds ) = C4::Reserves::GetReservesFromBiblionumber($biblionumber,1);
409
my $holds = C4::Reserves::GetReservesFromBiblionumber({ biblionumber => $biblionumber, all_dates => 1 });
410
my $holdcount = scalar ( @$holds );
410
$template->param( holdcount => $holdcount, holds => $holds );
411
$template->param( holdcount => $holdcount, holds => $holds );
411
my $StaffDetailItemSelection = C4::Context->preference('StaffDetailItemSelection');
412
my $StaffDetailItemSelection = C4::Context->preference('StaffDetailItemSelection');
412
if ($StaffDetailItemSelection) {
413
if ($StaffDetailItemSelection) {
(-)a/catalogue/imageviewer.pl (-1 / +2 lines)
Lines 78-84 $template->{VARS}->{'norequests'} = $norequests; Link Here
78
$template->param(C4::Search::enabled_staff_search_views);
78
$template->param(C4::Search::enabled_staff_search_views);
79
$template->{VARS}->{'biblio'} = $biblio;
79
$template->{VARS}->{'biblio'} = $biblio;
80
80
81
my ( $holdcount, $holds ) = C4::Reserves::GetReservesFromBiblionumber($biblionumber,1);
81
my $holds = C4::Reserves::GetReservesFromBiblionumber({ biblionumber => $biblionumber, all_dates => 1 });
82
my $holdcount = scalar( @$holds );
82
$template->param( holdcount => $holdcount, holds => $holds );
83
$template->param( holdcount => $holdcount, holds => $holds );
83
84
84
output_html_with_http_headers $query, $cookie, $template->output;
85
output_html_with_http_headers $query, $cookie, $template->output;
(-)a/catalogue/labeledMARCdetail.pl (-1 / +2 lines)
Lines 137-143 $template->param ( Link Here
137
    searchid            => $query->param('searchid'),
137
    searchid            => $query->param('searchid'),
138
);
138
);
139
139
140
my ( $holdcount, $holds ) = C4::Reserves::GetReservesFromBiblionumber($biblionumber,1);
140
my $holds= C4::Reserves::GetReservesFromBiblionumber({ biblionumber => $biblionumber, all_dates => 1 });
141
my $holdcount = scalar( @$holds );
141
$template->param( holdcount => $holdcount, holds => $holds );
142
$template->param( holdcount => $holdcount, holds => $holds );
142
143
143
output_html_with_http_headers $query, $cookie, $template->output;
144
output_html_with_http_headers $query, $cookie, $template->output;
(-)a/catalogue/moredetail.pl (-1 / +2 lines)
Lines 217-223 $template->param(ONLY_ONE => 1) if ( $itemnumber && $showncount != @items ); Link Here
217
$template->{'VARS'}->{'searchid'} = $query->param('searchid');
217
$template->{'VARS'}->{'searchid'} = $query->param('searchid');
218
218
219
219
220
my ( $holdcount, $holds ) = GetReservesFromBiblionumber($biblionumber,1);
220
my $holds = GetReservesFromBiblionumber({ biblionumber => $biblionumber, all_dates => 1 });
221
my $holdcount = scalar( @$holds );
221
$template->param( holdcount => $holdcount, holds => $holds );
222
$template->param( holdcount => $holdcount, holds => $holds );
222
223
223
output_html_with_http_headers $query, $cookie, $template->output;
224
output_html_with_http_headers $query, $cookie, $template->output;
(-)a/opac/opac-detail.pl (-2 / +2 lines)
Lines 539-546 for ( C4::Context->preference("OPACShowHoldQueueDetails") ) { Link Here
539
}
539
}
540
my $has_hold;
540
my $has_hold;
541
if ( $show_holds_count || $show_priority) {
541
if ( $show_holds_count || $show_priority) {
542
    my ($reserve_count,$reserves) = GetReservesFromBiblionumber($biblionumber);
542
    my $reserves = GetReservesFromBiblionumber({ biblionumber => $biblionumber });
543
    $template->param( holds_count  => $reserve_count ) if $show_holds_count;
543
    $template->param( holds_count  => scalar( @$reserves ) ) if $show_holds_count;
544
    foreach (@$reserves) {
544
    foreach (@$reserves) {
545
        $item_reserves{ $_->{itemnumber} }++ if $_->{itemnumber};
545
        $item_reserves{ $_->{itemnumber} }++ if $_->{itemnumber};
546
        if ($show_priority && $_->{borrowernumber} == $borrowernumber) {
546
        if ($show_priority && $_->{borrowernumber} == $borrowernumber) {
(-)a/opac/opac-reserve.pl (-2 / +2 lines)
Lines 147-154 foreach my $biblioNumber (@biblionumbers) { Link Here
147
    }
147
    }
148
148
149
    # Compute the priority rank.
149
    # Compute the priority rank.
150
    my ( $rank, $reserves ) =
150
    my $reserves = GetReservesFromBiblionumber({ biblionumber => $biblioNumber, all_dates => 1 });
151
      GetReservesFromBiblionumber( $biblioNumber, 1 );
151
    my $rank = scalar( @$reserves );
152
    $biblioData->{reservecount} = 1;    # new reserve
152
    $biblioData->{reservecount} = 1;    # new reserve
153
    foreach my $res (@{$reserves}) {
153
    foreach my $res (@{$reserves}) {
154
        my $found = $res->{found};
154
        my $found = $res->{found};
(-)a/reserve/request.pl (-2 / +3 lines)
Lines 196-202 foreach my $biblionumber (@biblionumbers) { Link Here
196
    }
196
    }
197
197
198
    # get existing reserves .....
198
    # get existing reserves .....
199
    my ( $count, $reserves ) = GetReservesFromBiblionumber($biblionumber,1);
199
    my $reserves = GetReservesFromBiblionumber({ biblionumber => $biblionumber, all_dates => 1 });
200
    my $count = scalar( @$reserves );
200
    my $totalcount = $count;
201
    my $totalcount = $count;
201
    my $holds_count = 0;
202
    my $holds_count = 0;
202
    my $alreadyreserved = 0;
203
    my $alreadyreserved = 0;
Lines 446-452 foreach my $biblionumber (@biblionumbers) { Link Here
446
447
447
    # existingreserves building
448
    # existingreserves building
448
    my @reserveloop;
449
    my @reserveloop;
449
    ( $count, $reserves ) = GetReservesFromBiblionumber($biblionumber,1);
450
    $reserves = GetReservesFromBiblionumber({ biblionumber => $biblionumber, all_dates => 1 });
450
    foreach my $res ( sort {
451
    foreach my $res ( sort {
451
            my $a_found = $a->{found} || '';
452
            my $a_found = $a->{found} || '';
452
            my $b_found = $a->{found} || '';
453
            my $b_found = $a->{found} || '';
(-)a/serials/routing-preview.pl (-3 / +3 lines)
Lines 71-78 if($ok){ Link Here
71
71
72
	if (C4::Context->preference('RoutingListAddReserves')){
72
	if (C4::Context->preference('RoutingListAddReserves')){
73
		# get existing reserves .....
73
		# get existing reserves .....
74
		my ($count,$reserves) = GetReservesFromBiblionumber($biblio);
74
        my $reserves = GetReservesFromBiblionumber({ biblionumber => $biblio });
75
		my $totalcount = $count;
75
        my $count = scalar( @$reserves );
76
        my $totalcount = $count;
76
		foreach my $res (@$reserves) {
77
		foreach my $res (@$reserves) {
77
			if ($res->{'found'} eq 'W') {
78
			if ($res->{'found'} eq 'W') {
78
				$count--;
79
				$count--;
79
- 

Return to bug 9823