Lines 137-144
BEGIN {
Link Here
|
137 |
GetMaxPatronHoldsForRecord |
137 |
GetMaxPatronHoldsForRecord |
138 |
|
138 |
|
139 |
MergeHolds |
139 |
MergeHolds |
140 |
|
|
|
141 |
RevertWaitingStatus |
142 |
); |
140 |
); |
143 |
} |
141 |
} |
144 |
|
142 |
|
Lines 2085-2094
sub MoveReserve {
Link Here
|
2085 |
$hold->fill( { item_id => $item->id } ); |
2083 |
$hold->fill( { item_id => $item->id } ); |
2086 |
} |
2084 |
} |
2087 |
|
2085 |
|
2088 |
if ( $cancelreserve eq 'revert' ) { ## Revert waiting reserve to priority 1 |
2086 |
$hold = Koha::Holds->find( $res->{reserve_id} ); |
2089 |
RevertWaitingStatus( { itemnumber => $item->id } ); |
2087 |
if ( $cancelreserve eq 'revert' ) { |
|
|
2088 |
$hold->revert_waiting(); |
2090 |
} elsif ( $cancelreserve eq 'cancel' || $cancelreserve ) { # cancel reserves on this item |
2089 |
} elsif ( $cancelreserve eq 'cancel' || $cancelreserve ) { # cancel reserves on this item |
2091 |
my $hold = Koha::Holds->find( $res->{reserve_id} ); |
|
|
2092 |
$hold->cancel; |
2090 |
$hold->cancel; |
2093 |
} |
2091 |
} |
2094 |
} |
2092 |
} |
Lines 2135-2199
sub MergeHolds {
Link Here
|
2135 |
} |
2133 |
} |
2136 |
} |
2134 |
} |
2137 |
|
2135 |
|
2138 |
=head2 RevertWaitingStatus |
|
|
2139 |
|
2140 |
RevertWaitingStatus({ itemnumber => $itemnumber }); |
2141 |
|
2142 |
Reverts a 'waiting' hold back to a regular hold with a priority of 1. |
2143 |
|
2144 |
Caveat: Any waiting hold fixed with RevertWaitingStatus will be an |
2145 |
item level hold, even if it was only a bibliolevel hold to |
2146 |
begin with. This is because we can no longer know if a hold |
2147 |
was item-level or bib-level after a hold has been set to |
2148 |
waiting status. |
2149 |
|
2150 |
=cut |
2151 |
|
2152 |
sub RevertWaitingStatus { |
2153 |
my ($params) = @_; |
2154 |
my $itemnumber = $params->{'itemnumber'}; |
2155 |
|
2156 |
return unless ($itemnumber); |
2157 |
|
2158 |
my $dbh = C4::Context->dbh; |
2159 |
|
2160 |
## Get the waiting reserve we want to revert |
2161 |
my $hold = Koha::Holds->search( |
2162 |
{ |
2163 |
itemnumber => $itemnumber, |
2164 |
found => { not => undef }, |
2165 |
} |
2166 |
)->next; |
2167 |
|
2168 |
my $original = C4::Context->preference('HoldsLog') ? $hold->unblessed : undef; |
2169 |
|
2170 |
## Increment the priority of all other non-waiting |
2171 |
## reserves for this bib record |
2172 |
my $holds = Koha::Holds->search( { biblionumber => $hold->biblionumber, priority => { '>' => 0 } } ) |
2173 |
->update( { priority => \'priority + 1' }, { no_triggers => 1 } ); |
2174 |
|
2175 |
## Fix up the currently waiting reserve |
2176 |
$hold->set( |
2177 |
{ |
2178 |
priority => 1, |
2179 |
found => undef, |
2180 |
waitingdate => undef, |
2181 |
expirationdate => $hold->patron_expiration_date, |
2182 |
itemnumber => $hold->item_level_hold ? $hold->itemnumber : undef, |
2183 |
} |
2184 |
)->store( { hold_reverted => 1 } ); |
2185 |
|
2186 |
logaction( 'HOLDS', 'MODIFY', $hold->id, $hold, undef, $original ) |
2187 |
if C4::Context->preference('HoldsLog'); |
2188 |
|
2189 |
_FixPriority( { biblionumber => $hold->biblionumber } ); |
2190 |
|
2191 |
Koha::BackgroundJob::BatchUpdateBiblioHoldsQueue->new->enqueue( { biblio_ids => [ $hold->biblionumber ] } ) |
2192 |
if C4::Context->preference('RealTimeHoldsQueue'); |
2193 |
|
2194 |
return $hold; |
2195 |
} |
2196 |
|
2197 |
=head2 ReserveSlip |
2136 |
=head2 ReserveSlip |
2198 |
|
2137 |
|
2199 |
ReserveSlip( |
2138 |
ReserveSlip( |