From 2c26f3f653488922543f17cc144a62659f80985b Mon Sep 17 00:00:00 2001 From: erickson Date: Fri, 23 Oct 2009 13:33:03 +0000 Subject: [PATCH] updated logic that handles how many canceled holds to return in patron holds list call git-svn-id: svn://svn.open-ils.org/ILS/trunk@14574 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../src/perlmods/OpenILS/Application/Circ/Holds.pm | 33 ++++++++++++++++++---- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm b/Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm index 2f149ef9f1..44ae52f2a5 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm @@ -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); } -- 2.11.0