Checkin and checkout of recalls in Circulation

Recalls messages were sticking around in Circulation. We implemented check-in and checkout of recalls in the circulation module to behave more like Reserves and reduce the chance of recalls messages staying where they shouldn't be. Sponsored by Toi Ohomai Institute of Technology. 
=== Getting started ===
0. You will need 3 different borrowers (Borrower A, B and C) and one item (Item A). 
=== Circulation side ===
#Check out Item A to Borrower A 
#Login to the OPAC as Borrower B and place a recall on Item A 
#Go to Borrower C's checkout page in the staff interface 
#Attempt to check out Item A to Borrower C 
#A pop-up should ask you to confirm the checkout 
#Click the "Don't check out and print slip" button. Confirm the recall slip pop-up shows and the checkout is NOT confirmed. Confirm the recall for Borrower B still exists. 
#Attempt to check out Item A to Borrower C again 
#Click the "No, don't check out" button. Confirm the checkout is NOT confirmed and the recall for Borrower B still exists. 
#Attempt to check out Item A to Borrower C again 
#Click the "cancel checkout and place a hold" button. Confirm the checkout is NOT confirmed but a hold was placed on Item A for Borrower C. Confirm the recall for Borrower B still exists. 
#Attempt to check out Item A to borrower C again. This time, also check the "cancel recall" checkbox. 
#Click the "Yes, check out" button. Confirm the checkout IS confirmed, the recall for Borrower B has been cancelled, and the checkout for Borrower A has been checked in. 
#The "cancel recall" checkbox currently doesn't work if the checkout is NOT confirmed because the "cancel hold" checkbox in the holds prompt does not work, so unfortunately this cannot be tested. We've reported the bug in the community but can't work on a fix currently. Let us know if you'd like it fixed and we can provide a quote, but we likely can't get to this until December. Fortunately, there are various other ways to cancel a recall in Koha.
=== Catalogue side ===
#Go to Borrower C's checkout page in the staff interface (or whichever borrower has the recalled item checked out 
#Notice that Item A cannot be renewed or checked in from the checkouts table. There should be links saying 'Recalled'. 
#Click the 'Recalled' link. You will be redirected to Item A in the catalogue, to a new Recalls tab. This page shows all active recalls on this record (requested, waiting and overdue recalls only. Expired, cancelled and finished recalls will not show). Confirm the number in brackets in the tab is correct. 
#From this page you can cancel one or many recalls. Test that this works as expected. You will need to go back to the OPAC as Borrower B to continue placing recalls for testing. 
#Click the 'Check in and set waiting button'. This will check in Item A (if it is still checked out) and set the recall to waiting for Borrower B. Check that the recall status now says Waiting. Go to Borrower B's notices and confirm that a 'pickup recall' notice was sent. Go to Borrower C's checkouts and confirm Item A is no longer checked out.
=== Other checks ===
#Confirm the recalls queue (in circulation) still works as expected. You can now check in and set waiting from the queue too. 
#Confirm checking in items using the Checkin toolbar at the top of the page still works, and you can still confirm a recall as waiting from here.
=== Other links ===
Go back to main recalls page