From 5f648064b80c6f6e08174650a0dcb886e4d2f7a1 Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Thu, 5 Feb 2015 16:52:36 +0000 Subject: [PATCH] LP#904581: when calculating hold status, be more careful about fetching transits This patch fixes a problem where if a hold meets the following criteria, an "Invalid date format: at /usr/share/perl5/Error.pm" error can be thrown when fetching its details: - the hold has a captured item - the captured item has status 8 (on hold shelf) - there is another item that is currently in transit to fill the hold - the pickup library (or one of its ancestors) has the circ.hold_shelf_status_delay library setting set. Signed-off-by: Galen Charlton Signed-off-by: Ben Shum --- Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm index 1ec6066471..a5f9e7eb99 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm @@ -1283,7 +1283,11 @@ sub _hold_status { # the interval is greater than now, consider the hold to be in the virtual # "on its way to the holds shelf" status. Return 5. - my $transit = $e->search_action_hold_transit_copy({hold => $hold->id})->[0]; + my $transit = $e->search_action_hold_transit_copy({ + hold => $hold->id, + target_copy => $copy->id, + dest_recv_time => {'!=' => undef}, + })->[0]; my $start_time = ($transit) ? $transit->dest_recv_time : $hold->capture_time; $start_time = DateTime::Format::ISO8601->new->parse_datetime(cleanse_ISO8601($start_time)); my $end_time = $start_time->add(seconds => OpenSRF::Utils::interval_to_seconds($hs_wait_interval)); -- 2.11.0