From aea4764fea34c1f1ba3bd617b811dde2404a87a1 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Tue, 21 Aug 2012 17:19:54 -0400 Subject: [PATCH] Include Wrong-Shelf holds in clear-shelf results Include non-expired, Wrong-Shelf holds in the results list of the "Clear Shelf-Expired Holds" process. ("Wrong-Shelf" holds are those whose pickup lib was changed while the hold was on the holds shelf). The idea behind this option is that branches may use the clear-shelf process as a general shelf management report beyond just holds that have expired. I.e. tell me everything I need to remove from the shelf. This change includes a label change for the clear-shelf menu options: "Clear Shelf-Expired Holds" -> "Clear Holds Shelf" Signed-off-by: Bill Erickson Signed-off-by: Jason Etheridge --- .../lib/OpenILS/Application/Circ/Holds.pm | 39 ++++++++++++++++++- Open-ILS/web/opac/locale/en-US/lang.dtd | 4 +- .../server/locale/en-US/circ.properties | 1 + 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm index cde9619037..7e064920e2 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm @@ -3541,7 +3541,8 @@ sub clear_shelf_process { my %cache_data = ( hold => [], transit => [], - shelf => [] + shelf => [], + pl_changed => pickup_lib_changed_on_shelf_holds($e, $org_id, \@hold_ids) ); for my $hold (@holds) { @@ -3590,6 +3591,42 @@ sub clear_shelf_process { } } +# returns IDs for holds that are on the holds shelf but +# have had their pickup_libs change while on the shelf. +sub pickup_lib_changed_on_shelf_holds { + my $e = shift; + my $org_id = shift; + my $ignore_holds = shift; + $ignore_holds = [$ignore_holds] if !ref($ignore_holds); + + my $query = { + select => { alhr => ['id'] }, + from => { + alhr => { + acp => { + field => 'id', + fkey => 'current_copy' + }, + } + }, + where => { + '+acp' => { status => OILS_COPY_STATUS_ON_HOLDS_SHELF }, + '+alhr' => { + capture_time => { "!=" => undef }, + fulfillment_time => undef, + current_shelf_lib => $org_id, + pickup_lib => {'!=' => {'+alhr' => 'current_shelf_lib'}} + } + } + }; + + $query->{where}->{'+alhr'}->{id} = + {'not in' => $ignore_holds} if @$ignore_holds; + + my $hold_ids = $e->json_query($query); + return [ map { $_->{id} } @$hold_ids ]; +} + __PACKAGE__->register_method( method => 'usr_hold_summary', api_name => 'open-ils.circ.holds.user_summary', diff --git a/Open-ILS/web/opac/locale/en-US/lang.dtd b/Open-ILS/web/opac/locale/en-US/lang.dtd index b7a2f4dad1..70849763b5 100644 --- a/Open-ILS/web/opac/locale/en-US/lang.dtd +++ b/Open-ILS/web/opac/locale/en-US/lang.dtd @@ -1065,7 +1065,7 @@ - + @@ -2476,7 +2476,7 @@ - + diff --git a/Open-ILS/xul/staff_client/server/locale/en-US/circ.properties b/Open-ILS/xul/staff_client/server/locale/en-US/circ.properties index 2f058ae6ae..c77579a58a 100644 --- a/Open-ILS/xul/staff_client/server/locale/en-US/circ.properties +++ b/Open-ILS/xul/staff_client/server/locale/en-US/circ.properties @@ -332,6 +332,7 @@ staff.circ.utils.hold_post_clear_shelf_action.label=Post-Clear staff.circ.utils.hold_post_clear_shelf_action.hold=Need for Hold staff.circ.utils.hold_post_clear_shelf_action.transit=Need for Transit staff.circ.utils.hold_post_clear_shelf_action.shelf=Reshelve +staff.circ.utils.hold_post_clear_shelf_action.pl_changed=Wrong Shelf staff.circ.utils.frozen=Frozen? staff.circ.utils.active=Active? staff.circ.utils.thaw_date=Activation Date -- 2.43.2