my ($borrowernumber, $itemnumber) = @_;
my $dbh = C4::Context->dbh;
+ my $ruleitemtype; # itemtype of the matching issuing rule
my $allowedreserves = 0;
# we retrieve borrowers and items informations #
+ # item->{itype} will come for biblioitems if necessery
my $item = GetItem($itemnumber);
# If an item is damaged and we don't allow holds on damaged items, we can stop right here
my $borrower = C4::Members::GetMember('borrowernumber'=>$borrowernumber);
my $controlbranch = C4::Context->preference('ReservesControlBranch');
- my $itype = C4::Context->preference('item-level_itypes') ? "itype" : "itemtype";
+ my $itemtypefield = C4::Context->preference('item-level_itypes') ? "itype" : "itemtype";
# we retrieve user rights on this itemtype and branchcode
my $sth = $dbh->prepare("SELECT categorycode, itemtype, branchcode, reservesallowed
";
- my $itemtype = $item->{$itype};
- my $categorycode = $borrower->{categorycode};
my $branchcode = "";
my $branchfield = "reserves.branchcode";
}
# we retrieve rights
- $sth->execute($categorycode, $itemtype, $branchcode);
+ $sth->execute($borrower->{'categorycode'}, $item->{'itype'}, $branchcode);
if(my $rights = $sth->fetchrow_hashref()){
- $itemtype = $rights->{itemtype};
+ $ruleitemtype = $rights->{itemtype};
$allowedreserves = $rights->{reservesallowed};
}else{
- $itemtype = '*';
+ $ruleitemtype = '*';
}
# we retrieve count
$querycount .= "AND $branchfield = ?";
- $querycount .= " AND $itype = ?" if ($itemtype ne "*");
+ $querycount .= " AND $itemtypefield = ?" if ($ruleitemtype ne "*");
my $sthcount = $dbh->prepare($querycount);
- if($itemtype eq "*"){
+ if($ruleitemtype eq "*"){
$sthcount->execute($borrowernumber, $branchcode);
}else{
- $sthcount->execute($borrowernumber, $branchcode, $itemtype);
+ $sthcount->execute($borrowernumber, $branchcode, $ruleitemtype);
}
my $reservecount = "0";
my $notification_sent = 0; #Keeping track if a Hold_filled message is sent. If no message can be sent, then default to a print message.
my $send_notification = sub {
my ( $mtt, $letter_code ) = (@_);
+ return unless defined $letter_code;
$letter_params{letter_code} = $letter_code;
$letter_params{message_transport_type} = $mtt;
- my $letter = C4::Letters::GetPreparedLetter ( %letter_params )
- or die "Could not find a letter called '$letter_params{'letter_code'}' for $mtt in the 'reserves' module";
+ my $letter = C4::Letters::GetPreparedLetter ( %letter_params );
+ unless ($letter) {
+ warn "Could not find a letter called '$letter_params{'letter_code'}' for $mtt in the 'reserves' module";
+ return;
+ }
C4::Letters::EnqueueLetter( {
letter => $letter,
message_transport_type => $mtt,
} );
};
-
+
while ( my ( $mtt, $letter_code ) = each %{ $messagingprefs->{transports} } ) {
if ( ($mtt eq 'email' and not $to_address) or ($mtt eq 'sms' and not $borrower->{smsalertnumber}) ) {
# email or sms is requested but not exist
=head2 RevertWaitingStatus
- $success = RevertWaitingStatus({ itemnumber => $itemnumber });
+ RevertWaitingStatus({ itemnumber => $itemnumber });
Reverts a 'waiting' hold back to a regular hold with a priority of 1.
reserve_id = ?
";
$sth = $dbh->prepare( $query );
- return $sth->execute( $reserve->{'reserve_id'} );
+ $sth->execute( $reserve->{'reserve_id'} );
+ _FixPriority( { biblionumber => $reserve->{biblionumber} } );
}
=head2 GetReserveId