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

(-)a/C4/Reserves.pm (-1 / +18 lines)
Lines 305-310 are excluded from the list. Link Here
305
=cut
305
=cut
306
306
307
sub GetReservesFromBiblionumber {
307
sub GetReservesFromBiblionumber {
308
309
308
    my ( $params ) = @_;
310
    my ( $params ) = @_;
309
    my $biblionumber = $params->{biblionumber} or return [];
311
    my $biblionumber = $params->{biblionumber} or return [];
310
    my $itemnumber = $params->{itemnumber};
312
    my $itemnumber = $params->{itemnumber};
Lines 633-647 sub GetReserveCount { Link Here
633
635
634
    my $dbh = C4::Context->dbh;
636
    my $dbh = C4::Context->dbh;
635
637
638
    my $count = 0;
636
    my $query = "
639
    my $query = "
637
        SELECT COUNT(*) AS counter
640
        SELECT COUNT(*) AS counter
638
        FROM reserves
641
        FROM reserves
639
        WHERE borrowernumber = ?
642
        WHERE borrowernumber = ?
643
        AND reserve_group_id is NULL
640
    ";
644
    ";
641
    my $sth = $dbh->prepare($query);
645
    my $sth = $dbh->prepare($query);
642
    $sth->execute($borrowernumber);
646
    $sth->execute($borrowernumber);
643
    my $row = $sth->fetchrow_hashref;
647
    my $row = $sth->fetchrow_hashref;
644
    return $row->{counter};
648
    $count += $row->{counter};
649
650
    $query = "
651
        SELECT COUNT(DISTINCT reserve_group_id) AS counter
652
        FROM reserves
653
        WHERE borrowernumber = ?
654
        AND reserve_group_id is not NULL
655
    ";
656
    $sth = $dbh->prepare($query);
657
    $sth->execute($borrowernumber);
658
    $row = $sth->fetchrow_hashref;
659
    $count += $row->{counter};
660
661
    return $count;
645
}
662
}
646
663
647
=head2 GetOtherReserves
664
=head2 GetOtherReserves
(-)a/opac/opac-reserve.pl (-3 / +3 lines)
Lines 192-198 foreach my $biblioNumber (@biblionumbers) { Link Here
192
if ( $query->param('place_reserve') ) {
192
if ( $query->param('place_reserve') ) {
193
    my $reserve_cnt = 0;
193
    my $reserve_cnt = 0;
194
    if ($maxreserves) {
194
    if ($maxreserves) {
195
        $reserve_cnt = GetReservesFromBorrowernumber( $borrowernumber );
195
        $reserve_cnt = GetReserveCount( $borrowernumber );
196
    }
196
    }
197
197
198
    # List is composed of alternating biblio/item/branch
198
    # List is composed of alternating biblio/item/branch
Lines 344-355 if ( Koha::Patrons->find( $borrowernumber )->is_debarred ) { Link Here
344
}
344
}
345
345
346
my @reserves = GetReservesFromBorrowernumber( $borrowernumber );
346
my @reserves = GetReservesFromBorrowernumber( $borrowernumber );
347
my $reserves_count = scalar(@reserves);
347
my $reserves_count = GetReserveCount($borrowernumber);
348
$template->param( RESERVES => \@reserves );
348
$template->param( RESERVES => \@reserves );
349
if ( $maxreserves && ( $reserves_count >= $maxreserves ) ) {
349
if ( $maxreserves && ( $reserves_count >= $maxreserves ) ) {
350
    $template->param( message => 1 );
350
    $template->param( message => 1 );
351
    $noreserves = 1;
351
    $noreserves = 1;
352
    $template->param( too_many_reserves => scalar(@reserves));
352
    $template->param( too_many_reserves => $reserves_count);
353
}
353
}
354
354
355
unless ( $noreserves ) {
355
unless ( $noreserves ) {
(-)a/t/db_dependent/Reserves/ReserveCount.t (-1 / +116 lines)
Line 0 Link Here
0
- 
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 under the
6
# terms of the GNU General Public License as published by the Free Software
7
# Foundation; either version 3 of the License, or (at your option) any later
8
# version.
9
#
10
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
11
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12
# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License along
15
# with Koha; if not, write to the Free Software Foundation, Inc.,
16
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17
18
use Modern::Perl;
19
20
use Test::More tests => 3;
21
use t::lib::TestBuilder;
22
23
use C4::Context;
24
use C4::Biblio;
25
use C4::Items;
26
use C4::Reserves;
27
28
use Koha::Database;
29
30
31
32
my $dbh = C4::Context->dbh;
33
$dbh->{AutoCommit} = 0;
34
$dbh->{RaiseError} = 1;
35
36
my $builder = t::lib::TestBuilder->new();
37
38
my $categorycode = $builder->build({ source => 'Category' })->{ categorycode };
39
my $branchcode = $builder->build({ source => 'Branch' })->{ branchcode };
40
my $borrower = $builder->build({
41
    source => 'Borrower',
42
    value => {
43
        branchcode   => $branchcode,
44
        categorycode => $categorycode
45
    }
46
});
47
my $borrowernumber = $borrower->{borrowernumber};
48
49
my $biblio = $builder->build( { source => 'Biblio', } );
50
my $biblionumber = $biblio->{biblionumber};
51
52
# Use AddReserve instead of TestBuilder because i don't manage
53
# to make TestBuilder set reserve_group_id to null. Idea ?
54
my $reserve_id = AddReserve($branchcode, $borrowernumber,
55
$biblionumber, $biblionumber, 1, undef, undef, undef
56
$biblio->{title}, undef, undef, undef);
57
58
is(GetReserveCount($borrowernumber), 1, 'Test borrower has 1 reserve.');
59
60
my $reserves_group = $builder->build({
61
    source => 'ReserveGroup',
62
    value => {
63
        reserve_group_id => 1
64
    }
65
});
66
67
my $reserve2 = $builder->build({
68
    source => 'Reserve',
69
    value => {
70
        borrowernumber => $borrowernumber,
71
        reserve_group_id => 1
72
    }
73
});
74
my $reserve3 = $builder->build({
75
    source => 'Reserve',
76
    value => {
77
        borrowernumber => $borrowernumber,
78
        reserve_group_id => 1
79
    }
80
});
81
82
is(GetReserveCount($borrowernumber), 2, 'Test borrower has 2 reserve.');
83
84
my $reserves_group2 = $builder->build({
85
    source => 'ReserveGroup',
86
    value => {
87
        reserve_group_id => 2
88
    }
89
});
90
my $reserve_group_id2 = $reserves_group2->{reserve_group_id};
91
92
my $reserve4 = $builder->build({
93
    source => 'Reserve',
94
    value => {
95
        borrowernumber => $borrowernumber,
96
        reserve_group_id => 2
97
    }
98
});
99
my $reserve5 = $builder->build({
100
    source => 'Reserve',
101
    value => {
102
        borrowernumber => $borrowernumber,
103
        reserve_group_id => 2
104
    }
105
});
106
my $reserve6 = $builder->build({
107
    source => 'Reserve',
108
    value => {
109
        borrowernumber => $borrowernumber,
110
        reserve_group_id => 2
111
    }
112
});
113
114
is(GetReserveCount($borrowernumber), 3, 'Test borrower has 2 reserve.');
115
116
$dbh->rollback;

Return to bug 15516