From dae5f2a1f1057ed4fdd83ca1b861ca2864fe6b45 Mon Sep 17 00:00:00 2001 From: Thomas Berezansky Date: Wed, 24 Jul 2013 10:02:08 -0400 Subject: [PATCH] Fix error on deleted hold in transit May be caused by purging holds combined with "Checkout fills related hold" Signed-off-by: Thomas Berezansky Signed-off-by: Jason Stephenson --- .../lib/OpenILS/Application/Circ/Circulate.pm | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm index ff50ed3797..e01bbc9e4f 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm @@ -3271,14 +3271,21 @@ sub process_received_transit { if($hold_transit) { my $hold = $self->editor->retrieve_action_hold_request($hold_transit->hold); - # hold has arrived at destination, set shelf time - $self->put_hold_on_shelf($hold); - $self->bail_on_events($self->editor->event) - unless $self->editor->update_action_hold_request($hold); - return if $self->bail_out; + if ($hold) { + # hold has arrived at destination, set shelf time + $self->put_hold_on_shelf($hold); + $self->bail_on_events($self->editor->event) + unless $self->editor->update_action_hold_request($hold); + return if $self->bail_out; - $self->notify_hold($hold_transit->hold); - $ishold = 1; + $self->notify_hold($hold_transit->hold); + $ishold = 1; + } else { + $hold_transit = undef; + $self->cancelled_hold_transit(1); + $self->reshelve_copy(1); + $self->fake_hold_dest(0); + } } $self->push_events( -- 2.11.0