"Lost Checkin Generates New Overdues" fails to reopen transaction

Bug #1676906 reported by Bill Erickson on 2017-03-28
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Evergreen
Undecided
Unassigned

Bug Description

Evergreen 2.12 -- affects all versions

Assuming the "Lost Checkin Generates New Overdues" org unit setting is set.

When an item is marked lost some time after its due date, but before the date where max-fine would occur, and the item is later returned, generation of overdue fines to cover the gap between lost-date and max-fines date results in a closed transaction with a non-zero balance.

Steps to reproduce (manually):

1. Set the org unit setting circ.lost.generate_overdue_on_checkin to true
2. Check out an item with a 7-day duration (for the purposes of these steps).
3. Manually modify the circ in the DB to make it overdue:
   set xact_start = now() - '2 weeks'::interval, due_date = now() - '1 weeks'::interval
4. Mark the item as Lost in the UI.
5. Manually modify the circ to set the lost date to just after the due date:
   set stop_fines_time = now() - '5 days'::interval
6. Load the patron in the UI and pay all outstanding fines on the transaction (should just be a lost item fine).
7. Confirm the balance owed in the circ is $0.00 and the xact_finish is set.
8. In the UI, check the item in.
9. Confirm overdues were generated, the balance owed is non-zero, and the xact_finish is still set.

During checkin, the code updates the money.billable_transaction to clear the xact_finish value, but later in the process the action.circulation object is updated again, returning the original (now bogus) xact_finish value to the transaction.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers