From: erickson Date: Thu, 27 Jul 2006 19:47:29 +0000 (+0000) Subject: did more testing of the renewal hold checks X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=f02545c189dddd27410baa0769bd866038c97157;p=Evergreen.git did more testing of the renewal hold checks git-svn-id: svn://svn.open-ils.org/ILS/trunk@5136 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/javascript/backend/circ/circ_lib.js b/Open-ILS/src/javascript/backend/circ/circ_lib.js index 327b3a4ebc..29bb910599 100644 --- a/Open-ILS/src/javascript/backend/circ/circ_lib.js +++ b/Open-ILS/src/javascript/backend/circ/circ_lib.js @@ -4,9 +4,9 @@ load_lib('circ/circ_groups.js'); try { if( environment.copy ) { - environment.copy.fetchHolds = function() { + environment.copy.fetchBestHold = function() { var key = scratchKey(); - environment.copy.__OILS_FUNC_fetch_hold(scratchPad(key)); + environment.copy.__OILS_FUNC_fetch_best_hold(scratchPad(key)); var val = getScratch(key); return (val) ? val : null; } diff --git a/Open-ILS/src/javascript/backend/circ/circ_permit_renew.js b/Open-ILS/src/javascript/backend/circ/circ_permit_renew.js index 4fe9af5c91..7f61d923d3 100644 --- a/Open-ILS/src/javascript/backend/circ/circ_permit_renew.js +++ b/Open-ILS/src/javascript/backend/circ/circ_permit_renew.js @@ -4,10 +4,10 @@ function go() { load_lib('circ/circ_lib.js'); log_vars('circ_permit_renew'); -var holds = copy.fetchHolds(); -for( var i in holds ) { +log_info("permit_renew searching for potential holds for copy " + copy.barcode) +var hold = copy.fetchBestHold(); +if( hold ) { log_info("hold found for renewal item, checking hold->usr.."); - var hold = holds[i]; if( hold && hold.usr != patron.id ) return result.events.push('COPY_NEEDED_FOR_HOLD'); } diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Circ/ScriptBuilder.pm b/Open-ILS/src/perlmods/OpenILS/Application/Circ/ScriptBuilder.pm index 135f943f86..76f836c691 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Circ/ScriptBuilder.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Circ/ScriptBuilder.pm @@ -5,10 +5,13 @@ use OpenILS::Utils::CStoreEditor qw/:funcs/; use OpenILS::Application::AppUtils; use OpenILS::Application::Actor; use OpenSRF::Utils::Logger qw/$logger/; +use OpenILS::Application::Circ::Holds; use Scalar::Util qw/weaken/; my $U = "OpenILS::Application::AppUtils"; use Data::Dumper; +my $holdcode = "OpenILS::Application::Circ::Holds"; + my $evt = "environment"; my @COPY_STATUSES; my @COPY_LOCATIONS; @@ -76,7 +79,7 @@ sub build_runner { $runner->insert( "$evt.volume", $ctx->{volume}, 1); $runner->insert( "$evt.title", $ctx->{title}, 1); $runner->insert( "$evt.requestor", $ctx->{requestor}, 1); - $runner->insert( "$evt.titleDescriptor", $ctx->{titleDescriptor}, 1); + #$runner->insert( "$evt.titleDescriptor", $ctx->{titleDescriptor}, 1); $runner->insert( "$evt.patronItemsOut", $ctx->{patronItemsOut}, 1 ); $runner->insert( "$evt.patronOverdueCount", $ctx->{patronOverdue}, 1 ); @@ -85,6 +88,7 @@ sub build_runner { $runner->insert("$evt.$_", $ctx->{_direct}->{$_}, 1) for keys %{$ctx->{_direct}}; insert_org_methods( $editor, $runner ); + insert_copy_methods( $editor, $ctx, $runner ); return $runner; } @@ -138,12 +142,13 @@ sub fetch_bib_data { $ctx->{title} = $e->retrieve_biblio_record_entry( $ctx->{volume}->record) or return $e->event; - if(!$ctx->{titleDescriptor}) { - $ctx->{titleDescriptor} = $e->search_metabib_record_descriptor( - { record => $ctx->{title}->id }) or return $e->event; - $ctx->{titleDescriptor} = $ctx->{titleDescriptor}->[0]; - } +# if(!$ctx->{titleDescriptor}) { +# $ctx->{titleDescriptor} = $e->search_metabib_record_descriptor( +# { record => $ctx->{title}->id }) or return $e->event; +# +# $ctx->{titleDescriptor} = $ctx->{titleDescriptor}->[0]; +# } #insert_copy_method(); @@ -168,6 +173,18 @@ sub fetch_user_data { $ctx->{patron} = $e->search_actor_user( { card => $card->[0]->id }) or return $e->event; $ctx->{patron} = $ctx->{patron}->[0]; + + } elsif( $ctx->{fetch_patron_by_circ_copy} ) { + + if( my $copy = $ctx->{copy} ) { + my $circs = $e->search_action_circulation( + { target_copy => $copy->id, stop_fines_time => undef }); + + if( my $circ = $circs->[0] ) { + $ctx->{patron} = $e->retrieve_actor_user($circ->usr) + or return $e->event; + } + } } } @@ -295,20 +312,21 @@ sub is_org_descendent { return 0; } +sub insert_copy_methods { + my( $e, $ctx, $runner ) = @_; + if( my $copy = $ctx->{copy} ) { + $runner->insert_method( 'environment.copy', '__OILS_FUNC_fetch_best_hold', sub { + my $key = shift; + $logger->debug("script_builder: searching for permitted hold for copy ".$copy->barcode); + my ($hold) = $holdcode->find_nearest_permitted_hold( + OpenSRF::AppSession->create('open-ils.storage'), $copy, $e->requestor ); + $runner->insert( $key, $hold, 1 ); + } + ); + } +} -# if( $ctx->{copy} ) { -# -# # allows a script to fetch a hold that is currently targeting the -# # copy in question -# $runner->insert_method( 'environment.copy', '__OILS_FUNC_fetch_hold', sub { -# my $key = shift; -# my $hold = $holdcode->fetch_related_holds($ctx->{copy}->id); -# $hold = undef unless $hold; -# $runner->insert( $key, $hold, 1 ); -# } -# ); -# }