changing from prox to depth for nearest hold stalling
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 28 Aug 2007 17:38:04 +0000 (17:38 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 28 Aug 2007 17:38:04 +0000 (17:38 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@7727 dcc99617-32d9-48b4-a31d-7c20da2025e4

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

index 04f04ea..f2d8307 100644 (file)
@@ -183,17 +183,22 @@ sub nearest_hold {
        my $pl = shift;
        my $cp = shift;
        my $limit = int(shift()) || 10;
-       my $age = shift() || '0';
-       my $prox = shift() || 0;
+       my $age = shift() || '0 seconds';
+       my $depth = shift;
 
-       my $ids = action::hold_request->db_Main->selectcol_arrayref(<<" SQL", {}, $cp, $pl, $age, $prox);
+       my $descendents =
+               defined($depth) ?
+                       "actor.org_unit_descendants($pl, $depth)" :
+                       "actor.org_unit_descendants($pl)" ;
+
+       my $ids = action::hold_request->db_Main->selectcol_arrayref(<<" SQL", {}, $cp, $age);
                SELECT  h.id
                  FROM  action.hold_request h
                        JOIN action.hold_copy_map hm ON (hm.hold = h.id)
-                       JOIN actor.org_unit_proximity p ON (p.from_org = h.pickup_lib)
+                       JOIN $descendents d ON (d.id = h.pickup_lib)
+                       JOIN actor.org_unit_proximity p ON (p.from_org = d.id AND p.to_org = h.pickup_lib)
                  WHERE hm.target_copy = ?
-                       AND p.to_org = ?
-                       AND (h.request_time + ? < NOW() OR p.prox <= ?)
+                       AND AGE(NOW(),h.request_time) >= CAST(? AS INTERVAL)
                        AND h.capture_time IS NULL
                        AND h.cancel_time IS NULL
                ORDER BY