|
Lines 3053-3070
sub CanBookBeRenewed {
Link Here
|
| 3053 |
return ( 0, "on_reserve" ) |
3053 |
return ( 0, "on_reserve" ) |
| 3054 |
if ( $item->current_holds->search( { non_priority => 0 } )->count ); |
3054 |
if ( $item->current_holds->search( { non_priority => 0 } )->count ); |
| 3055 |
|
3055 |
|
| 3056 |
my $fillable_holds = Koha::Holds->search( |
3056 |
|
| 3057 |
{ |
3057 |
my ($status, $matched_reserve, $fillable_holds) = CheckReserves($item); |
| 3058 |
biblionumber => $item->biblionumber, |
3058 |
if ( $fillable_holds ) { |
| 3059 |
non_priority => 0, |
|
|
| 3060 |
found => undef, |
| 3061 |
reservedate => { '<=' => \'NOW()' }, |
| 3062 |
suspend => 0 |
| 3063 |
} |
| 3064 |
); |
| 3065 |
if ( $fillable_holds->count ) { |
| 3066 |
if ( C4::Context->preference('AllowRenewalIfOtherItemsAvailable') ) { |
3059 |
if ( C4::Context->preference('AllowRenewalIfOtherItemsAvailable') ) { |
| 3067 |
my @possible_holds = $fillable_holds->as_list; |
|
|
| 3068 |
|
3060 |
|
| 3069 |
# Get all other items that could possibly fill reserves |
3061 |
# Get all other items that could possibly fill reserves |
| 3070 |
# FIXME We could join reserves (or more tables) here to eliminate some checks later |
3062 |
# FIXME We could join reserves (or more tables) here to eliminate some checks later |
|
Lines 3074-3087
sub CanBookBeRenewed {
Link Here
|
| 3074 |
notforloan => 0, |
3066 |
notforloan => 0, |
| 3075 |
-not => { itemnumber => $item->itemnumber } })->as_list; |
3067 |
-not => { itemnumber => $item->itemnumber } })->as_list; |
| 3076 |
|
3068 |
|
| 3077 |
return ( 0, "on_reserve" ) if @possible_holds && (scalar @other_items < scalar @possible_holds); |
3069 |
return ( 0, "on_reserve" ) if @{$fillable_holds} && (scalar @other_items < scalar @{$fillable_holds} ); |
| 3078 |
|
3070 |
|
| 3079 |
my %matched_items; |
3071 |
my %matched_items; |
| 3080 |
foreach my $possible_hold (@possible_holds) { |
3072 |
foreach my $possible_hold ( @{$fillable_holds} ) { |
| 3081 |
my $fillable = 0; |
3073 |
my $fillable = 0; |
| 3082 |
my $patron_with_reserve = Koha::Patrons->find($possible_hold->borrowernumber); |
3074 |
my $patron_with_reserve = Koha::Patrons->find($possible_hold->{borrowernumber}); |
| 3083 |
|
|
|
| 3084 |
# FIXME: We are not checking whether the item we are renewing can fill the hold |
| 3085 |
|
3075 |
|
| 3086 |
foreach my $other_item (@other_items) { |
3076 |
foreach my $other_item (@other_items) { |
| 3087 |
next if defined $matched_items{$other_item->itemnumber}; |
3077 |
next if defined $matched_items{$other_item->itemnumber}; |
|
Lines 3099-3105
sub CanBookBeRenewed {
Link Here
|
| 3099 |
} |
3089 |
} |
| 3100 |
} |
3090 |
} |
| 3101 |
else { |
3091 |
else { |
| 3102 |
my ($status, $matched_reserve, $possible_reserves) = CheckReserves($item); |
|
|
| 3103 |
return ( 0, "on_reserve" ) if $status; |
3092 |
return ( 0, "on_reserve" ) if $status; |
| 3104 |
} |
3093 |
} |
| 3105 |
} |
3094 |
} |