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