unless($circulator->bail_out) {
$circulator->do_hold_notify($circulator->notify_hold)
if $circulator->notify_hold;
+ $circulator->retarget_holds if $circulator->retarget;
}
}
dummy_author
circ_lib
barcode
- duration_level
- recurring_fines_level
- duration_rule
- recurring_fines_rule
- max_fine_rule
+ duration_level
+ recurring_fines_level
+ duration_rule
+ recurring_fines_rule
+ max_fine_rule
renewal_remaining
due_date
fulfilled_holds
opac_renewal
phone_renewal
desk_renewal
+ retarget
/;
my $copy = $self->copy;
# See if this copy can fulfill any holds
- my ($hold) = $holdcode->find_nearest_permitted_hold(
+ my ($hold, undef, $retarget) = $holdcode->find_nearest_permitted_hold(
$self->editor, $copy, $self->editor->requestor );
if(!$hold) {
return undef;
}
+ $self->retarget($retarget);
$logger->info("circulator: found permitted hold ".
$hold->id . " for copy, capturing...");
}
}
+sub retarget_holds {
+ $logger->info("retargeting prev_check_time=null holds after opportunistic capture");
+ my $ses = OpenSRF::AppSession->create('open-ils.storage');
+ $ses->request('open-ils.storage.action.hold_request.copy_targeter');
+ # no reason to wait for the return value
+ return;
+}
sub checkin_build_hold_transit {
my $self = shift;
or return (undef, $editor->event);
+ my $retarget = 0;
+
# re-target any other holds that already target this copy
for my $old_hold (@$old_holds) {
next if $old_hold->id eq $best_hold->id; # don't re-target the hold we want
$old_hold->clear_prev_check_time;
$editor->update_action_hold_request($old_hold)
or return (undef, $editor->event);
+ $retarget = 1;
}
- return ($best_hold);
+ return ($best_hold, undef, $retarget);
}