From: Steven Chan Date: Wed, 15 May 2013 21:30:15 +0000 (-0700) Subject: Fix LP1180140, View Holds not working for a serial with subscription and no issuances X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=d1258da72f97f1a46cc85e3ff0b88c74d0f797f6;p=evergreen%2Fmasslnc.git Fix LP1180140, View Holds not working for a serial with subscription and no issuances A request is made to open-ils.circ.holds.retrieve_all_from_title, which is the function Circ/Holds.pm/all_rec_holds(). In the function, when checking for issuance holds, there is a missing @ to dereference the list of issuance IDs, so that the ahr table is search with badly formed input, which results in returning an undefined list instead of an empty list. The error will occur for any record with a serial.subscription entry but with no related entries in serial.issuance. We also recode the initialization of the response object in order to clarify its expected structure, a hash of array references. Signed-off-by: Steven Chan Signed-off-by: Lebbeous Fogle-Weekley --- 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 9de0fca24e..8ba48ab600 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm @@ -3188,7 +3188,16 @@ sub all_rec_holds { $args->{fulfillment_time} = undef; # we don't want to see old fulfilled holds $args->{cancel_time} = undef; - my $resp = { volume_holds => [], copy_holds => [], recall_holds => [], force_holds => [], metarecord_holds => [], part_holds => [], issuance_holds => [] }; + my $resp = { + metarecord_holds => [] + , title_holds => [] + , volume_holds => [] + , copy_holds => [] + , recall_holds => [] + , force_holds => [] + , part_holds => [] + , issuance_holds => [] + }; my $mr_map = $e->search_metabib_metarecord_source_map({source => $title_id})->[0]; if($mr_map) { @@ -3229,7 +3238,7 @@ sub all_rec_holds { {subscription => $subs}, {idlist=>1} ); - if ($issuances) { + if (@$issuances) { $resp->{issuance_holds} = $e->search_action_hold_request( { hold_type => OILS_HOLD_TYPE_ISSUANCE,