updated logic that handles how many canceled holds to return in patron holds list...
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 23 Oct 2009 13:33:03 +0000 (13:33 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 23 Oct 2009 13:33:03 +0000 (13:33 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@14574 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm

index 2f149ef..44ae52f 100644 (file)
@@ -342,17 +342,40 @@ sub retrieve_holds {
                {order_by => {ahr => "request_time"}}
        ]);
 
-    if($$options{canceled}) {
-        my $count = $$options{cancel_count} || 
-            $U->ou_ancestor_setting_value($e->requestor->ws_ou, 
-                'circ.canceled_hold_display_count', $e) || 5;
+    my $cancel_age;
+    my $cancel_count = 
+        $U->ou_ancestor_setting_value(
+            $e->requestor->ws_ou, 'circ.holds.canceled.display_count', $e);
+
+    unless($cancel_count) {
+        $cancel_age = $U->ou_ancestor_setting_value(
+            $e->requestor->ws_ou, 'circ.holds.canceled.display_age', $e);
+    }
+
+    if($cancel_count) {
 
+        # find at most cancel_count canceled holds
         my $canceled = $e->search_action_hold_request([
                    {   usr =>  $user_id , 
                            fulfillment_time => undef,
                            cancel_time => {'!=' => undef},
                    }, 
-                   {order_by => {ahr => "cancel_time desc"}, limit => $count}
+                   {order_by => {ahr => "cancel_time desc"}, limit => $cancel_count}
+           ]);
+        push(@$holds, @$canceled);
+
+    } elsif($cancel_age) {
+
+        # find all of the canceled holds that were canceled within the configured time frame
+        my $date = DateTime->now->add(seconds => OpenSRF::Utils::interval_to_seconds($cancel_age));
+        $date = $U->epoch2ISO8601($date->epoch);
+
+        my $canceled = $e->search_action_hold_request([
+                   {   usr =>  $user_id , 
+                           fulfillment_time => undef,
+                           cancel_time => {'>=' => $date},
+                   }, 
+                   {order_by => {ahr => "cancel_time desc"}}
            ]);
         push(@$holds, @$canceled);
     }