From: Lebbeous Fogle-Weekley Date: Fri, 20 May 2011 14:17:05 +0000 (-0400) Subject: Fix a problem with open-ils.circ.holds.retrieve_all_from_title X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=ea20f3920b2ef71e12ef40afdeb40a6f5f361186;p=evergreen%2Fbjwebb.git Fix a problem with open-ils.circ.holds.retrieve_all_from_title Anoop Atre spotted this bug that's triggered by selecting "View Holds" from "Actions for Selected Record" in the catalog seen through the staff client. Said method would error out like this: [2011-05-20 10:04:03] open-ils.circ [ERR :31866:CStoreEditor.pm:109:13058333633194115] editor[0|1] request error open-ils.cstore.direct.serial.issuance.id_list.atomic : {"subscription":[]} : Exception: OpenSRF::DomainObject::oilsMethodException 2011-05-20T10:04:03 OpenILS::Utils::CStoreEditor /openils/lib/perl5/OpenILS/Utils/CStoreEditor.pm:412 <500> Severe query error -- see error log for more details because when trying to gather issuance-type holds, it didn't properly test whether there actually were any subscriptions and issuances related to the bib record in question. 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 03f947fcb..734936f16 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm @@ -2750,7 +2750,7 @@ 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 => [], metarecord_holds => [] }; + my $resp = { volume_holds => [], copy_holds => [], metarecord_holds => [], issuance_holds => [] }; my $mr_map = $e->search_metabib_metarecord_source_map({source => $title_id})->[0]; if($mr_map) { @@ -2778,15 +2778,22 @@ sub all_rec_holds { my $subs = $e->search_serial_subscription( { record_entry => $title_id }, {idlist=>1}); - my $issuances = $e->search_serial_issuance( - { subscription => $subs }, {idlist=>1}); - $resp->{issuance_holds} = $e->search_action_hold_request( - { - hold_type => OILS_HOLD_TYPE_ISSUANCE, - target => $issuances, - %$args - }, {idlist=>1} ); + if (@$subs) { + my $issuances = $e->search_serial_issuance( + {subscription => $subs}, {idlist=>1} + ); + + if ($issuances) { + $resp->{issuance_holds} = $e->search_action_hold_request( + { + hold_type => OILS_HOLD_TYPE_ISSUANCE, + target => $issuances, + %$args + }, {idlist=>1} + ); + } + } my $vols = $e->search_asset_call_number( { record => $title_id, deleted => 'f' }, {idlist=>1});