From e0226c78e0ede6f1fa1d3936b0525e42e6b00ac0 Mon Sep 17 00:00:00 2001 From: senator Date: Wed, 27 Oct 2010 19:06:08 +0000 Subject: [PATCH] Booking: make the circ module avoid booking code if the booking service isn't up Previously, it was not possible to turn the booking service off and have working circ. Now you should be able to turn it off if you don't need it. git-svn-id: svn://svn.open-ils.org/ILS/trunk@18502 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../perlmods/OpenILS/Application/Circ/Circulate.pm | 42 ++++++++++++++-------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm b/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm index abf234e604..e968a862aa 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; @@ -2302,7 +2316,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"); -- 2.11.0