adding lasso support to copy count calls
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 4 Apr 2008 04:36:51 +0000 (04:36 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 4 Apr 2008 04:36:51 +0000 (04:36 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@9219 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/biblio.pm
Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm

index b73dcad..cb5a66c 100644 (file)
@@ -23,7 +23,12 @@ sub record_copy_count {
        my $out_table = actor::org_unit_type->table;
 
        my $descendants = "actor.org_unit_descendants(u.id)";
-       my $ancestors = "actor.org_unit_ancestors(?)";
+       my $ancestors = "actor.org_unit_ancestors(?) u JOIN $out_table t ON (u.ou_type = t.id)";
+
+    if ($args{org_unit} < 0) {
+        $args{org_unit} *= -1;
+           $ancestors = "(select org_unit as id from actor.org_lasso_map where lasso = ?) u CROSS JOIN (SELECT -1 AS depth) t";
+    }
 
        my $visible = 'AND a.opac_visible = TRUE AND st.holdable = TRUE AND loc.opac_visible = TRUE AND cp.opac_visible = TRUE';
        if ($self->api_name =~ /staff/o) {
@@ -79,8 +84,7 @@ sub record_copy_count {
                                         AND src.transcendant IS TRUE
                                 )
                         ) AS transcendant
-                 FROM  $ancestors u
-                       JOIN $out_table t ON (u.ou_type = t.id)
+                 FROM  $ancestors
                  GROUP BY 1,2
        SQL
 
index f244644..5c65cc0 100644 (file)
@@ -265,8 +265,14 @@ sub metarecord_copy_count {
        my $cl_table = asset::copy_location->table;
        my $cs_table = config::copy_status->table;
        my $out_table = actor::org_unit_type->table;
+
        my $descendants = "actor.org_unit_descendants(u.id)";
-       my $ancestors = "actor.org_unit_ancestors(?)";
+       my $ancestors = "actor.org_unit_ancestors(?) u JOIN $out_table t ON (u.ou_type = t.id)";
+
+    if ($args{org_unit} < 0) {
+        $args{org_unit} *= -1;
+        $ancestors = "(select org_unit as id from actor.org_lasso_map where lasso = ?) u CROSS JOIN (SELECT -1 AS depth) t";
+    }
 
        my $copies_visible = 'AND a.opac_visible IS TRUE AND cp.opac_visible IS TRUE AND cs.holdable IS TRUE AND cl.opac_visible IS TRUE';
        $copies_visible = '' if ($self->api_name =~ /staff/o);
@@ -353,8 +359,7 @@ sub metarecord_copy_count {
                                )
                        ) AS transcendant
 
-                 FROM  $ancestors u
-                       JOIN $out_table t ON (u.ou_type = t.id)
+                 FROM  $ancestors
                  GROUP BY 1,2
        SQL