Lines 27-33
use Encode;
Link Here
|
27 |
use Koha::DateUtils qw( dt_from_string output_pref ); |
27 |
use Koha::DateUtils qw( dt_from_string output_pref ); |
28 |
use C4::Context; |
28 |
use C4::Context; |
29 |
use C4::Stats qw( UpdateStats ); |
29 |
use C4::Stats qw( UpdateStats ); |
30 |
use C4::Reserves qw( CheckReserves CanItemBeReserved MoveReserve ModReserve ModReserveMinusPriority RevertWaitingStatus IsItemOnHoldAndFound IsAvailableForItemLevelRequest ); |
30 |
use C4::Reserves qw( CheckReserves CanItemBeReserved MoveReserve ModReserve ModReserveMinusPriority RevertWaitingStatus IsItemOnHoldAndFound IsAvailableForItemLevelRequest ItemsAnyAvailableAndNotRestricted ); |
31 |
use C4::Biblio qw( UpdateTotalIssues ); |
31 |
use C4::Biblio qw( UpdateTotalIssues ); |
32 |
use C4::Items qw( ModItemTransfer ModDateLastSeen CartToShelf ); |
32 |
use C4::Items qw( ModItemTransfer ModDateLastSeen CartToShelf ); |
33 |
use C4::Accounts; |
33 |
use C4::Accounts; |
Lines 2853-2871
sub CanBookBeRenewed {
Link Here
|
2853 |
# can be filled with available items. We can get the union of the sets simply |
2853 |
# can be filled with available items. We can get the union of the sets simply |
2854 |
# by pushing all the elements onto an array and removing the duplicates. |
2854 |
# by pushing all the elements onto an array and removing the duplicates. |
2855 |
my @reservable; |
2855 |
my @reservable; |
2856 |
ITEM: while ( my $item = $items->next ) { |
2856 |
my %matched_items; |
2857 |
next if IsItemOnHoldAndFound( $item->itemnumber ); |
2857 |
PATRON: while ( my $patron = $patrons->next ) { |
2858 |
while ( my $patron = $patrons->next ) { |
2858 |
my $items_any_available = ItemsAnyAvailableAndNotRestricted( { biblionumber => $item->biblionumber, patron => $patron }); |
2859 |
next unless IsAvailableForItemLevelRequest($item, $patron); |
2859 |
while ( my $other_item = $items->next ) { |
2860 |
next unless CanItemBeReserved($patron->borrowernumber,$item->itemnumber,undef,{ignore_hold_counts=>1})->{status} eq 'OK'; |
2860 |
next if $matched_items{$other_item->itemnumber} == 1; |
2861 |
push @reservable, $item->itemnumber; |
2861 |
next if IsItemOnHoldAndFound( $other_item->itemnumber ); |
|
|
2862 |
next unless IsAvailableForItemLevelRequest($other_item, $patron, undef, $items_any_available); |
2863 |
next unless CanItemBeReserved($patron->borrowernumber,$other_item->itemnumber,undef,{ignore_hold_counts=>1})->{status} eq 'OK'; |
2864 |
push @reservable, $other_item->itemnumber; |
2862 |
if (@reservable >= @borrowernumbers) { |
2865 |
if (@reservable >= @borrowernumbers) { |
2863 |
$resfound = 0; |
2866 |
$resfound = 0; |
2864 |
last ITEM; |
2867 |
last PATRON; |
2865 |
} |
2868 |
} |
|
|
2869 |
$matched_items{$other_item->itemnumber} = 1; |
2866 |
last; |
2870 |
last; |
2867 |
} |
2871 |
} |
2868 |
$patrons->reset; |
2872 |
$items->reset; |
2869 |
} |
2873 |
} |
2870 |
} |
2874 |
} |
2871 |
} |
2875 |
} |
2872 |
- |
|
|