From: senator Date: Wed, 27 Oct 2010 19:09:14 +0000 (+0000) Subject: Backport r18502 from trunk: make booking avoidable in circ service (speedup!) X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=07f4e544671394f7ee6f3c70fd275aaf712edf1a;p=evergreen%2Fequinox.git Backport r18502 from trunk: make booking avoidable in circ service (speedup!) git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_2_0@18503 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm b/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm index 035177f8cc..092f7726bf 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm @@ -13,6 +13,21 @@ my $U = "OpenILS::Application::AppUtils"; my %scripts; my $script_libs; my $legacy_script_support = 0; +my $booking_status; + +sub determine_booking_status { + unless (defined $booking_status) { + my $ses = create OpenSRF::AppSession("router"); + $booking_status = grep {$_ eq "open-ils.booking"} @{ + $ses->request("opensrf.router.info.class.list")->gather(1) + }; + $ses->disconnect; + $logger->info("booking status: " . ($booking_status ? "on" : "off")); + } + + return $booking_status; +} + my $MK_ENV_FLESH = { flesh => 2, @@ -65,7 +80,6 @@ sub initialize { ); } - __PACKAGE__->register_method( method => "run_method", api_name => "open-ils.circ.checkout.permit", @@ -181,12 +195,14 @@ sub run_method { return circ_events($circulator) if $circulator->bail_out; + $circulator->use_booking(determine_booking_status()); + # -------------------------------------------------------------------------- # First, check for a booking transit, as the barcode may not be a copy # barcode, but a resource barcode, and nothing else in here will work # -------------------------------------------------------------------------- - if ((my $bc = $circulator->copy_barcode) && $api !~ /checkout|inspect/) { # do we have a barcode? + if ($circulator->use_booking && (my $bc = $circulator->copy_barcode) && $api !~ /checkout|inspect/) { # do we have a barcode? my $resources = $circulator->editor->search_booking_resource( { barcode => $bc } ); # any resources by this barcode? if (@$resources) { # yes! @@ -239,18 +255,14 @@ sub run_method { # of the objects we need # -------------------------------------------------------------------------- - # XXX I wanted to make this better so it might support blocking renewals - # if a reservation has been placed on an item, but that will need more - # design, as institutions will differ in their policy on that. In the - # meantime making sure we're trying some kind of checkin will at least - # keep OPAC renewals from breaking since patrons don't have VIEW_USER... - - $circulator->is_res_checkin($circulator->is_checkin(1)) - if $api =~ /reservation.return/ or ( - $api =~ /checkin/ and $circulator->seems_like_reservation() - ); + if ($circulator->use_booking) { + $circulator->is_res_checkin($circulator->is_checkin(1)) + if $api =~ /reservation.return/ or ( + $api =~ /checkin/ and $circulator->seems_like_reservation() + ); - $circulator->is_res_checkout(1) if $api =~ /reservation.pickup/; + $circulator->is_res_checkout(1) if $api =~ /reservation.pickup/; + } $circulator->is_renewal(1) if $api =~ /renew/; $circulator->is_checkin(1) if $api =~ /checkin/; @@ -504,6 +516,7 @@ my @AUTOLOAD_FIELDS = qw/ skip_permit_key skip_deposit_fee skip_rental_fee + use_booking /; @@ -1926,6 +1939,7 @@ sub booking_adjusted_due_date { my $circ = $self->circ; my $copy = $self->copy; + return undef unless $self->use_booking; my $changed; @@ -2301,7 +2315,7 @@ sub do_checkin { if (!$self->remote_hold) { my $potential_hold = $self->hold_capture_is_possible; - my $potential_reservation = $self->reservation_capture_is_possible; + my $potential_reservation = $self->use_booking && $self->reservation_capture_is_possible; if ($potential_hold and $potential_reservation) { $logger->info("circulator: item could fulfill either hold or reservation");