From: Lebbeous Fogle-Weekley Date: Mon, 8 Aug 2011 17:22:05 +0000 (-0400) Subject: In a middle-layer method for returning holdable formats on a metarecord, X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=7b6b3d30eebdbeb7f9b47435c21017a190c27f75;p=working%2FEvergreen.git In a middle-layer method for returning holdable formats on a metarecord, Do a better test of copy holdability than we were doing previously. We can't do a perfect test: we don't really know what patron we're doing this for, and even if we did, from here it's nontrivial to figure out whether we're doing indb holds or script-based, much less run the tests. Still, we can test whether a copy's in a holdable status, a holdable location, and is itself not explicitly marked unholdable. Signed-off-by: Lebbeous Fogle-Weekley Signed-off-by: Mike Rylander --- diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Search/Biblio.pm b/Open-ILS/src/perlmods/OpenILS/Application/Search/Biblio.pm index e12ccb141f..05c5d4d8eb 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Search/Biblio.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Search/Biblio.pm @@ -2416,6 +2416,40 @@ sub rec_to_mr_rec_descriptors { my $desc = $e->search_metabib_record_descriptor($search); + my $query = { + distinct => 1, + select => { 'bre' => ['id'] }, + from => { + 'bre' => { + 'acn' => { + 'join' => { + 'acp' => {"join" => {"acpl" => {}, "ccs" => {}}} + } + } + } + }, + where => { + '+bre' => { id => \@recs }, + '+acp' => { + holdable => 't', + deleted => 'f' + }, + "+ccs" => { holdable => 't' }, + "+acpl" => { holdable => 't' } + } + }; + + my $good_records = $e->json_query($query) or return $e->die_event; + + my @keep; + for my $d (@$desc) { + if ( grep { $d->record == $_->{id} } @$good_records ) { + push @keep, $d; + } + } + + $desc = \@keep; + return { metarecord => $mrec, descriptors => $desc }; }