LP#1745207: tie together copy_tag() and site() search filters
authorGalen Charlton <gmc@equinoxinitiative.org>
Mon, 22 Jan 2018 23:01:00 +0000 (18:01 -0500)
committerChris Sharp <csharp@georgialibraries.org>
Wed, 11 Jul 2018 16:36:08 +0000 (12:36 -0400)
The copy_tag() filter will now restrict itself to records that
have copies that both have matching copy tags and a circ_lib
within the site() scope.

To test
-------
[1] Define two digital bookplate copy tags at two difference org units, e.g.,
    "BR1 Smith" at BR1 and "BR4 Smith" at "BR4".
[2] Arrange that a record has items in both BR1 and BR4, and assign the "BR4 Smith"
    copy tag to one of the BR4 items.
[3] On a separate record, set up a similar situation, but use BR1 instead.
[4] Enable the digital bookplate search option and do a bookplate search
    for "Smith" with the scope limited to BR1.
[5] Note that both of the records set up in #2 and #3 are included in the results
    set.
[6] Apply the patch and repeat step 5. This time, only the record set up in #3
    should be included.

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Garry Collum <gcollum@gmail.com>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>

Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm

index 6141d66..0d3c411 100644 (file)
@@ -1598,6 +1598,7 @@ sub flatten {
                     $with .= "             JOIN asset.copy cp ON (acptcm.copy = cp.id)\n";
                     $with .= "             JOIN asset.call_number cn ON (cp.call_number = cn.id)\n";
                     $with .= "       WHERE 1 = 1 \n";
+                    $with .= "       AND cp.circ_lib IN (" . join(',', @$dorgs) . ")\n";
                     if ($copy_tag_type ne '*') {
                         $with .= "             AND cctt.code = " . $self->QueryParser->quote_value($copy_tag_type) . "\n";
                     }