@@ -, +, @@ translatability - If not yet done, apply patch from Bug 15244 - Run t/db_dependent/Reserves.t, verify that it passes OK - Apply this patch - Run t/db_dependent/Reserves.t again, should pass OK - Set syspref 'maxreserves' to 1 - Try to place a hold for a patron who already has holds - Verify that the warning message displays the value above - Set the syspref to a high value - Try to place a hold for a patron who has reached the maximum allowed holds defined by issuing rules - Verify that the warning message with the maximum number of holds allowed by issuing rules - Try to trigger other warning messages and/or carefully review code in request.tt line 307 and following. Additonal messages to trigger are: - Already in possession - Hold already placed - Age restricted - No items available - Too many holds --- C4/Reserves.pm | 45 +++++++++++++------- .../prog/en/modules/reserve/request.tt | 24 +++++------ reserve/request.pl | 10 ++++- t/db_dependent/Reserves.t | 7 ++- 4 files changed, 57 insertions(+), 29 deletions(-) --- a/C4/Reserves.pm +++ a/C4/Reserves.pm @@ -107,6 +107,7 @@ BEGIN { &GetReserveCount &GetReserveInfo &GetReserveStatus + &GetAllowedReserves &GetOtherReserves @@ -458,18 +459,6 @@ sub CanItemBeReserved{ my $controlbranch = C4::Context->preference('ReservesControlBranch'); - # we retrieve user rights on this itemtype and branchcode - my $sth = $dbh->prepare("SELECT categorycode, itemtype, branchcode, reservesallowed - FROM issuingrules - WHERE (categorycode in (?,'*') ) - AND (itemtype IN (?,'*')) - AND (branchcode IN (?,'*')) - ORDER BY - categorycode DESC, - itemtype DESC, - branchcode DESC;" - ); - my $querycount ="SELECT count(*) as count FROM reserves @@ -492,10 +481,11 @@ sub CanItemBeReserved{ } # we retrieve rights - $sth->execute($borrower->{'categorycode'}, $item->{'itype'}, $branchcode); - if(my $rights = $sth->fetchrow_hashref()){ + my $rights = GetAllowedReserves($borrower->{'categorycode'}, $item->{'itype'}, $branchcode); + + if( $rights ){ $ruleitemtype = $rights->{itemtype}; - $allowedreserves = $rights->{reservesallowed}; + $allowedreserves = $rights->{reservesallowed}; }else{ $ruleitemtype = '*'; } @@ -581,6 +571,31 @@ sub CanReserveBeCanceledFromOpac { } +=head2 GetAllowedReserves + + $number = &GetAllowedReserves($borrowernumber, $itemtype, $branchcode); + +this function returns the rights for a patron on itemtype and branchcode. +=cut + +sub GetAllowedReserves { + my ($categorycode, $itemtype, $branchcode) = @_; + my $dbh = C4::Context->dbh; + my $sth = $dbh->prepare("SELECT categorycode, itemtype, branchcode, reservesallowed + FROM issuingrules + WHERE (categorycode in (?,'*') ) + AND (itemtype IN (?,'*')) + AND (branchcode IN (?,'*')) + ORDER BY + categorycode DESC, + itemtype DESC, + branchcode DESC;" + ); + $sth->execute($categorycode, $itemtype, $branchcode); + return $sth->fetchrow_hashref(); +} + + =head2 GetReserveCount $number = &GetReserveCount($borrowernumber); --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt @@ -233,7 +233,7 @@ function checkMultiHold() { [% IF ( messagetransfert ) %]