Return of paid lost items will not reopen a closed transaction
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Evergreen |
Fix Released
|
Medium
|
Unassigned | ||
2.11 |
Fix Released
|
Medium
|
Unassigned | ||
2.12 |
Fix Released
|
Medium
|
Unassigned |
Bug Description
Evergreen version: tested in 2.12, but probably a bug in earlier releases
For libraries that do not prohibit negative balances, if the library has configured its settings to void a lost bill upon a lost item's return and a patron fully pays the lost fee for an item, when that item is returned, the transaction does not re-open at the time the negative balance is created.
As a result, the transaction will not be listed in the "Patrons with Negative Balances" interface and also will not be listed on the patron's current bills screen in the web client. The transaction will be listed in the xul client's current bill screen.
Here is the sequence of events that occurs:
1. The transaction moves to lost, generating a bill for the patron.
2. The patron fully pays the lost fee, which sets the xact_finish date as expected.
3. The lost item is returned, creating a negative balance on the patron's record. At this point, the xact_finish date should be reset to null since the transaction is open again.
Also making a note that in investigating this bug, I discovered that the web client current bills is not displaying transactions with an xact_finish date, but the xul client didn't seem to care about the presence of an xact_finish date. I don't know if the web client behavior is a problem, but I'm just pointing it out in case these two interfaces should behave the same way.
Changed in evergreen: | |
assignee: | nobody → Bill Erickson (berick) |
status: | Confirmed → In Progress |
Changed in evergreen: | |
assignee: | nobody → Dan Wells (dbw2) |
Changed in evergreen: | |
milestone: | 3.0-alpha → none |
status: | Fix Committed → Fix Released |
Created and marked bug #1676906 as a duplicate. It contains manual steps for creating a slightly more convoluted example. Of note, the code tries to clear the xact_finish value during checkin, but a later update to action.circulation clobbers the cleared value by replacing it with the original bogus value.