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 <schan@sitka.bclibraries.ca>
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
$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) {
{subscription => $subs}, {idlist=>1}
);
- if ($issuances) {
+ if (@$issuances) {
$resp->{issuance_holds} = $e->search_action_hold_request(
{
hold_type => OILS_HOLD_TYPE_ISSUANCE,