LP1468132 Staff MARC Search API supports copy filtering
authorBill Erickson <berickxx@gmail.com>
Mon, 14 Sep 2020 15:33:45 +0000 (11:33 -0400)
committerJason Boyer <JBoyer@equinoxinitiative.org>
Mon, 15 Feb 2021 18:58:28 +0000 (13:58 -0500)
Teaches the MARC search code to filter results on records with items
attached (though not necessarily opac-visible) for scoped staff
searches.  Prior to this patch, the scope of staff searches was
effectively ignored.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
Signed-off-by: Jason Boyer <JBoyer@EquinoxInitiative.org>
Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/metabib.pm

index 3ca3751..c0dc2ac 100644 (file)
@@ -465,9 +465,14 @@ sub biblio_multi_search_full_rec {
     my $copies_visible = 'AND d.opac_visible IS TRUE AND cp.opac_visible IS TRUE AND cs.opac_visible IS TRUE AND cl.opac_visible IS TRUE';
 
     if ($self->api_name =~ /staff/o) {
+        # Staff want to see all copies regardless of visibility
         $copies_visible = '';
-        $has_copies     = '' if ($ou_type == 0);
-        $has_vols       = '' if ($ou_type == 0);
+        # When searching globally for staff avoid any copy filtering.
+        if ((defined $args{depth} && $args{depth} == 0) 
+            || $args{org_unit} == $U->get_org_tree->id) {
+            $has_copies = '';
+            $has_vols   = '';
+        }
     }
 
     my ($t_filter, $f_filter) = ('','');
@@ -598,7 +603,7 @@ sub biblio_multi_search_full_rec {
     my $rd_join = $use_rd ? "$metabib_record_descriptor rd," : '';
     my $rd_filter = $use_rd ? 'AND rd.record = f.record' : '';
 
-    if ($copies_visible) {
+    if ($has_copies) {
         $select = <<"        SQL";
             SELECT  f.record, $relevance, count(DISTINCT cp.id), $rank
             FROM    $search_table f,