Fees/Fines (UXPROD-792)

[UIIN-2207] Do not allow item deletion if an open fine exists that is tied to the item record Created: 18/Apr/22  Updated: 20/Feb/23

Status: Open
Project: ui-inventory
Components: None
Affects versions: None
Fix versions: None
Parent: Fees/Fines

Type: Story Priority: P3
Reporter: Erin Nettifee Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: feesfines
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original estimate: Not Specified

Issue links:
Defines
defines UXPROD-3798 Inventory. Item deletion. 2nd iterati... Open
defines UXPROD-3799 Do not allow item deletion if an open... Open
Sprint:
Development Team: Prokopovych
Release: Not Scheduled
Epic Link: Fees/Fines
RCA Group: TBD

 Description   

Current situation or problem:

Right now, patrons with appropriate permissions can delete item records in Inventory, with dependency checks on certain transactions (see UIIN-534 Closed ).

This feature covers implementation of dependency checks for fee/fines.

An item may have an associated unpaid or unresolved fee/fine even if the item is available and/or does not have an active loan. This occurs with overdue or overdue recall fines, where items can circulate to multiple users and accrue fines without ever becoming lost. So the dependency check must actively check fine records, not just item statuses like 'declared lost' or 'aged to lost'.

In scope

  • Do not allow item deletion if an account record, tied to the item, exists with an "open" status - this indicates that money is still owed to the library and/or the issue is still unresolved.
  • Changes in Users to ensure that if the fine record is closed, and the item is still deleted, that the fine record still shows information as stored in the underlying fine so that it can be understood.

Out of scope

Use case(s)

Proposed solution/stories

Links to additional info

Questions

  • Do libraries want a warning even if all of the associated accounts are closed? It doesn't appear to warn for closed requests or closed loans, though this use case is arguably different because money is involved.
  • Are there libraries that would never want to delete an item if it has any fine history? That doesn't seem tenable, but they may be out there.
  • Are there libraries who would want to be able to configure a time check? E.g., don't allow deletion, even if the fine is closed, unless the fine is more than ___ years old? Or is the information still retained on the fine record enough to account for any record retention needs?
  • What happens to a closed fine UI if the item is deleted?


 Comments   
Comment by Erin Nettifee [ 18/Apr/22 ]

Holly Mistlebauer I played with this a bit on Snapshot this morning, you can definitely delete an item with an open fine, and it ends up making the fine details unviewable (because Stripes is attempting to read the current item status, but the item record doesn't exist anymore.)

It seems like it's a better overall solution to prevent deletion for an open fine rather than trying to fix that bug, or at least to do this first, but I'm not entirely sure (and we haven't had this level of detailed discussion with the SIG.)

Error received when viewing fine:

Error: TypeError: Cannot read properties of undefined (reading 'status')
at s.e.getItemDetails (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:11195310)
at s.value (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:11195621)
at Wa (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:14082624)
at Xa (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:14082423)
at Ws (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:14123182)
at Cc (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:14109400)
at Pc (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:14109328)
at Sc (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:14109191)
at yc (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:14106178)
at https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:14055999

at s (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:11193435)
at f (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9445196)
at m (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9207774)
at y (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:14265160)
at l (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9610485)
at s (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9239014)
at s (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9245242)
at t (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:14289642)
at d (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9259727)
at t (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:14291659)
at t (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9861789)
at t (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9879213)
at HotKeys-t
at a (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:8747079)
at t (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9861789)
at t (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9879213)
at HotKeys-t
at c (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:8744480)
at c (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:11319343)
at t (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9261232)
at h
at a (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9264658)
at s (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9239014)
at a (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9311584)
at ec (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9449865)
at div
at l (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9249560)
at a (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9449388)
at t (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:14289642)
at Suspense
at Ac (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9456147)
at t (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:14291659)
at main
at ud (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9503809)
at a (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9466448)
at div
at $c (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9464618)
at s (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9463393)
at l (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9256334)
at r (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:14292196)
at t (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:14286268)
at u (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:14263210)
at t (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9861789)
at t (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9879213)
at HotKeys-t
at t (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9261232)
at h
at a (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9264658)
at s (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9239014)
at a (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9460070)
at injectIntl(a)
at a (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9582413)
at t (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:14190644)
at c (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:14244605)
at Pt (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9304926)
at a (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9311584)
at c (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9588044)
at l (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9256334)
at y (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:14265160)
at a (https://folio-snapshot.dev.folio.org/bundle.aedc43279b69c15c90b6.js:2:9595190)

Comment by Charlotte Whitt [ 09/Sep/22 ]

Hi Erin Nettifee - I created an umbrella issue ( UXPROD-3798 Open ) to gather all 2nd iteration work of Item deletion. Do you think your feature needs more work, or can we change it to Open now?

Comment by Erin Nettifee [ 09/Sep/22 ]

Hi Charlotte Whitt - I'll have to look back at the SIG notes to refresh my brain about where the discussion last left off.

Comment by Holly Mistlebauer [ 16/Sep/22 ]

Charlotte Whitt: Should this be a UIIN story rather than a feature?
Erin Nettifee: We definitely don't want the item deleted if there is an open fee/fine account record. This is what I found in the notes from our June 23rd discussion (see https://folio-org.atlassian.net/wiki/display/RA/2022-06-23+Resource+Access+Meeting+Notes)...

  • Items with open fees/fines should not be deletable
  • Some institutions have financial record-keeping requirements, so might not want to delete items with closed fees/fines that are less than five years old (for example).
  • Note that an item can have overdue fees/fines but still be circulating, so fees/fines on an item is independent from Item State.

With regard to financial record-keeping requirements, the fee/fine account record includes item information that can be retained. I am not convinced that they need the item record for that.

Comment by Holly Mistlebauer [ 04/Oct/22 ]

Charlotte Whitt: I didn't hear back from you regarding my comment above, but I did receive an email about an action item you assigned to me stating "can I ask you to write up that jira ticket, so it gets worded exactly as you spec it." This is the JIRA ticket. Erin created it in April. I changed it from a UXPROD- ticket to a UIIN- ticket given it really isn't a feature. Please let me know if you want this handled differently. Thanks, Holly

Comment by Erin Nettifee [ 18/Oct/22 ]

If we assume that an item has been deleted, the information retained on the account schema related to the item looks like it should be:

  • title
  • callNumber
  • barcode
  • materialType
  • itemStatus (not sure if/when this value gets updated or if its the status when the fine is created)
  • Effective location
  • itemId
  • holdingsId
  • InstanceId
  • contributors

That seems pretty extensive in terms of reporting. I think if we can get the RA SIG to confirm that list is satisfactory, then there are additional steps:

  • Do not allow item deletion if there is one or more open fines;
  • Allow item deletion if all associated fines are closed;
  • Review the fields that appear on the feefine UI —
    • If the field references the inventory value, then when the item is deleted, that field won't show any information. So that needs to be addressed, either by changing the field to reference the value stored on the account record, or adding logic so that if the field is referencing the live inventory data, and the inventory record is deleted, that the UI says something meaningful like "item deleted" or "record deleted"
Generated at Fri Feb 09 00:33:37 UTC 2024 using Jira 1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d.