LP1819542 Hanging transits can cause checkins to fail
authorJason Etheridge <jason@EquinoxInitiative.org>
Fri, 5 Jun 2020 13:00:53 +0000 (09:00 -0400)
committerChris Sharp <csharp@georgialibraries.org>
Wed, 19 Aug 2020 15:33:12 +0000 (11:33 -0400)
commit902b6edbdf1f0ce7f1d2393d5ce97ec21d39c68c
tree218d642787741266f0a9f9eabf72d062e4b95740
parent2a0bb9da22889d3a400439f9d2d67f1e71a5c220
LP1819542 Hanging transits can cause checkins to fail

So two bits of defensive programming for do_checkin:

    sub fix_broken_transit_status
    sub cancel_transit_if_circ_exists

I don't know if the first one does anything useful, but the idea is that it'll
at least temporarily set the copy status to In Transit for any status checks
within the do_checkin method that test for that.  It doesn't actually repair
the status permanently (at least in the case of, say, an existing transit being
re-used for a ROUTE_ITEM event).  We may want to do that.

The second one will abort an associated transit (including retargeting a hold
for a hold transit) if both an active transit and an active circulation exist
for the item.  This handles the situation I've been using to test the bug:

    1) transit an item (CONC90000436 in Concerto)
    2) artificially change its status directly in the database (for example, to
       Available)
    3) check it out to a patron (99999376864 in Concerto), noting
       that the Cancel Transit prompt does not get triggered
    4) check in the item

Signed-off-by: Jason Etheridge <jason@EquinoxInitiative.org>
Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
Signed-off-by: John Amundson <jamundson@cwmars.org>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm