|
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( |