To see how this JIRA issue integrates with the other overdue fine JIRA issues please see the diagram at https://drive.google.com/file/d/1uzezgYpgZ8XiSmSdqC2fntda1HomjbP-/view?usp=sharing
Purpose: Automatically calculate and bill overdue fines when items are returned late.
Inputs: Loan record (which contains due-date, returned-date, Overdue Fine Policy link), Item record (which contains item-status).
Given item checked in
When item status changed
Then determine if item could be overdue
Given determine if item could be overdue
When due-date is after returned-date OR Loan record Overdue Fine Policy does not exist
Then stop all further overdue processing of item, as item is clearly not overdue or, if it is found to be overdue, there isn't an overdue fine available to be charged (this saves us the processing time of calling the process that actually calculates the overdue fine)
Given item qualifies for further overdue processing
When due-date is before or on returned date AND Loan record Overdue Fine Policy does exist
Then call module to calculate overdue fine (module is defined in
(Note: Item may still not be charged an overdue fine, but it needs further checking to determine that.)
Given Check in page
When overdue fine charged
Then display (fees/fines owned) under the Time returned on the Check in page (as shown on attached screen mock-up Checkin-Page-Changes.jpg)
As part of this user story we are also making the following modifications to the Check in page
- Update the ellipsis option New Fee/Fine to be New fee/fine (this is UX consistency fix)
- Add a new ellipsis option called Fee/fine details, which should perform in the same as the "Fee/fine details" option on the Open/Closed Loans page (e.g. ellipsis option should be grayed out if no fees/fines exist, option should go directly to Fee/Fine Details if only one fee/fine exists, option should go to Fees/Fines History display showing two or more fees/fines for the item, etc.)
A shared module will be called (see
UIU-1242) to calculate the actual overdue fine. This user story is for determining if the shared module should be called when an item is checked in. If the item is clearly not overdue (due-date is after returned-date) or there is not a Overdue Fine Policy associated with the Loan (Loan record Overdue Fine Policy does not exist), there is no reason to call the module that calculates the overdue fine. In all other cases the module to calculate the overdue fine should be called. The result may be that there still isn't a fine changed, due to grace periods, etc., but the processing needs to be done. If there is an overdue fine charged, we want to display a message on the Check in page in case the patron is standing there an wants to know.