View | Details | Raw Unified | Return to bug 27209
Collapse All | Expand All

(-)a/Koha/Exceptions/Hold.pm (+4 lines)
Lines 27-32 use Exception::Class ( Link Here
27
        isa         => 'Koha::Exceptions::Hold',
27
        isa         => 'Koha::Exceptions::Hold',
28
        description => "Found holds cannot be suspended",
28
        description => "Found holds cannot be suspended",
29
        fields      =>  ['status']
29
        fields      =>  ['status']
30
    },
31
    'Koha::Exceptions::Hold::InvalidPickupLocation' => {
32
        isa         => 'Koha::Exceptions::Hold',
33
        description => 'The supplied pickup location is not valid'
30
    }
34
    }
31
);
35
);
32
36
(-)a/Koha/Hold.pm (-1 / +36 lines)
Lines 22-27 use Modern::Perl; Link Here
22
22
23
use Carp;
23
use Carp;
24
use Data::Dumper qw(Dumper);
24
use Data::Dumper qw(Dumper);
25
use List::MoreUtils qw(any);
25
26
26
use C4::Context qw(preference);
27
use C4::Context qw(preference);
27
use C4::Letters;
28
use C4::Letters;
Lines 221-226 sub set_waiting { Link Here
221
    return $self;
222
    return $self;
222
}
223
}
223
224
225
=head3 set_pickup_location
226
227
    $hold->set_pickup_location({ library_id => $library->id });
228
229
Updates the hold pickup location. It throws a I<Koha::Exceptions::Hold::InvalidPickupLocation> if
230
the passed pickup location is not valid.
231
232
=cut
233
234
sub set_pickup_location {
235
    my ( $self, $params ) = @_;
236
237
    Koha::Exceptions::MissingParameter->throw('The library_id parameter is mandatory')
238
        unless $params->{library_id};
239
240
    my @pickup_locations;
241
242
    if ( $self->itemnumber ) { # item-level
243
        @pickup_locations = $self->item->pickup_locations({ patron => $self->patron });
244
    }
245
    else { # biblio-level
246
        @pickup_locations = $self->biblio->pickup_locations({ patron => $self->patron });
247
    }
248
249
    if ( any { $_->branchcode eq $params->{library_id} } @pickup_locations ) {
250
        # all good, set the new pickup location
251
        $self->branchcode( $params->{library_id} )->store;
252
    }
253
    else {
254
        Koha::Exceptions::Hold::InvalidPickupLocation->throw;
255
    }
256
257
    return $self;
258
}
259
224
=head3 set_processing
260
=head3 set_processing
225
261
226
$hold->set_processing;
262
$hold->set_processing;
227
- 

Return to bug 27209