[open-ils-commits] r17964 - branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Circ (miker)

svn at svn.open-ils.org svn at svn.open-ils.org
Fri Sep 24 14:13:21 EDT 2010


Author: miker
Date: 2010-09-24 14:13:17 -0400 (Fri, 24 Sep 2010)
New Revision: 17964

Modified:
   branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm
Log:
Backporting hold queue stats fixes from 17956, 17957 and 17963

Modified: branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm
===================================================================
--- branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm	2010-09-24 18:08:05 UTC (rev 17963)
+++ branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm	2010-09-24 18:13:17 UTC (rev 17964)
@@ -1033,11 +1033,7 @@
         # fetch cut_in_line and request_time since they're in the order_by
         # and we're asking for distinct values
         select => {ahr => ['id', 'cut_in_line', 'request_time']},
-        from   => {
-            ahr => {
-                ahcm => {type => 'left'} # there may be no copy maps 
-            }
-        },
+        from   => { ahr => 'ahcm' },
         order_by => [
             {
                 "class" => "ahr",
@@ -1050,28 +1046,42 @@
         ],
         distinct => 1,
         where    => {
-            '-or' => [
-                {
-                    '+ahcm' => {
-                        target_copy => {
-                            in => {
-                                select => {ahcm => ['target_copy']},
-                                from   => 'ahcm',
-                                where  => {hold => $hold->id}
-                            } 
+            {
+                '+ahcm' => {
+                    target_copy => {
+                        in => {
+                            select => {ahcm => ['target_copy']},
+                            from   => 'ahcm',
+                            where  => {hold => $hold->id}
                         } 
-                    }
-                },
-                {
-                    '+ahr' => {
-                        hold_type => $hold->hold_type,
-                        target    => $hold->target
-                    }
+                    } 
                 }
-            ]
-        }, 
+            }
+        } 
     });
 
+    if (!@$q_holds) { # none? maybe we don't have a map ... 
+        $q_holds = $e->json_query({
+            select => {ahr => ['id', 'cut_in_line', 'request_time']},
+            from   => 'ahr',
+            order_by => [
+                {
+                    "class" => "ahr",
+                    "field" => "cut_in_line",
+                    "transform" => "coalesce",
+                    "params" => [ 0 ],
+                    "direction" => "desc"
+                },
+                { "class" => "ahr", "field" => "request_time" }
+            ],
+            where    => {
+                hold_type => $hold->hold_type, 
+                target    => $hold->target 
+           } 
+        });
+    }
+
+
     my $qpos = 1;
     for my $h (@$q_holds) {
         last if $h->{id} == $hold->id;



More information about the open-ils-commits mailing list