Lines 2001-2038
sub MoveReserve {
Link Here
|
2001 |
|
2001 |
|
2002 |
$cancelreserve //= 0; |
2002 |
$cancelreserve //= 0; |
2003 |
|
2003 |
|
2004 |
my $lookahead = C4::Context->preference('ConfirmFutureHolds'); #number of days to look for future holds |
2004 |
my $lookahead = C4::Context->preference('ConfirmFutureHolds'); #number of days to look for future holds |
2005 |
my $item = Koha::Items->find($itemnumber); |
2005 |
my $item = Koha::Items->find($itemnumber); |
|
|
2006 |
my $biblionumber = $item->biblionumber; |
2007 |
|
2008 |
my $borr_res; |
2006 |
my ( $restype, $res, undef ) = CheckReserves( $item, $lookahead ); |
2009 |
my ( $restype, $res, undef ) = CheckReserves( $item, $lookahead ); |
2007 |
return unless $res; |
|
|
2008 |
|
2010 |
|
2009 |
my $biblionumber = $res->{biblionumber}; |
2011 |
# CheckReserves will only find holds that respect hold policies |
|
|
2012 |
# so we must check for forced holds if no reserve was found |
2013 |
if( !$res || $res->{borrowernumber} != $borrowernumber ) { |
2014 |
my $resdate = dt_from_string(); |
2015 |
$resdate->add_duration( DateTime::Duration->new( days => $lookahead ) ); |
2016 |
|
2017 |
$borr_res = Koha::Holds->search( |
2018 |
{ |
2019 |
borrowernumber => $borrowernumber, |
2020 |
biblionumber => $biblionumber, |
2021 |
reservedate => { '<=' => output_pref({ dt => $resdate, dateonly => 1, dateformat => 'iso' }) } |
2022 |
}, |
2023 |
{ order_by => 'priority' } |
2024 |
)->next(); |
2025 |
|
2026 |
# The item is reserved by the current patron |
2027 |
$borr_res->fill( { item_id => $itemnumber } ) if ($borr_res); |
2010 |
|
2028 |
|
2011 |
if ($res->{borrowernumber} == $borrowernumber) { |
|
|
2012 |
my $hold = Koha::Holds->find( $res->{reserve_id} ); |
2013 |
$hold->fill({ item_id => $itemnumber }); |
2014 |
} |
2029 |
} |
2015 |
else { |
2030 |
return unless $res; |
2016 |
# warn "Reserved"; |
|
|
2017 |
# The item is reserved by someone else. |
2018 |
# Find this item in the reserves |
2019 |
|
2031 |
|
2020 |
my $borr_res = Koha::Holds->search({ |
2032 |
if ( $res && $res->{borrowernumber} == $borrowernumber ) { |
2021 |
borrowernumber => $borrowernumber, |
2033 |
my $hold = Koha::Holds->find( $res->{reserve_id} ); |
2022 |
biblionumber => $biblionumber, |
2034 |
$hold->fill( { item_id => $itemnumber } ); |
2023 |
},{ |
2035 |
} else { |
2024 |
order_by => 'priority' |
|
|
2025 |
})->next(); |
2026 |
|
2036 |
|
2027 |
if ( $borr_res ) { |
2037 |
# The item is reserved by someone else. |
2028 |
# The item is reserved by the current patron |
2038 |
# Find this item in the reserves |
2029 |
$borr_res->fill({ item_id => $itemnumber }); |
|
|
2030 |
} |
2031 |
|
2039 |
|
2032 |
if ( $cancelreserve eq 'revert' ) { ## Revert waiting reserve to priority 1 |
2040 |
if ( $cancelreserve eq 'revert' ) { ## Revert waiting reserve to priority 1 |
2033 |
RevertWaitingStatus({ itemnumber => $itemnumber }); |
2041 |
RevertWaitingStatus( { itemnumber => $itemnumber } ); |
2034 |
} |
2042 |
} elsif ( $cancelreserve eq 'cancel' || $cancelreserve ) { # cancel reserves on this item |
2035 |
elsif ( $cancelreserve eq 'cancel' || $cancelreserve ) { # cancel reserves on this item |
|
|
2036 |
my $hold = Koha::Holds->find( $res->{reserve_id} ); |
2043 |
my $hold = Koha::Holds->find( $res->{reserve_id} ); |
2037 |
$hold->cancel; |
2044 |
$hold->cancel; |
2038 |
} |
2045 |
} |
2039 |
- |
|
|