Description
Pedro Amorim
2025-07-25 14:23:24 UTC
Created attachment 184640 [details] [review] Bug 40517: Add hold groups relationship to patron Created attachment 184641 [details] [review] Bug 40517: Move creation of hold group into Patron class. Add exceptions Refactor: Update controller logic to make use of patron->create_hold_group This ensures consistency when creating a new hold group for a patron, regardless if on the Staff UI or REST API Created attachment 184642 [details] [review] Bug 40517: REST API: Hold groups endpoint list and add actions: /patrons/{patron_id}/hold_groups New test file: prove t/db_dependent/api/v1/patrons_hold_groups.t Created attachment 184643 [details] [review] Bug 40517: Add visual_group_id to hold_groups Created attachment 184644 [details] [review] Bug 40517: Patron holds table: Add 'group selected holds' functionality This adds the UI elements required to group selected holds from the patron pages as well as 2 new concepts: Visual group ID: The visual group ID is designed to be easy to understand from a UI/UX perspective and not show the user an indefinitely incremented value. When holds are cancelled, filled or moved to a different group, if the old group is left empty or with a single hold, the hold group is deleted. Created attachment 184645 [details] [review] Bug 40517: Patron page holds table buttons rearrangement This table now has 4 total buttons, 3 of which relate to a selection of holds. Rearranging the buttons is now necessary to present them nicely. Created attachment 184646 [details] [review] Bug 40517: Add unit tests Run the updated test file: prove ./t/db_dependent/Koha/Patron.t Relevant tests worth running to ensure no regressions are added to existing covered functionality: prove ./t/db_dependent/Circulation* prove ./t/db_dependent/Hold* prove ./t/db_dependent/Reserves* Test plan, k-t-d: 1) Apply patches, enable DisplayAddHoldGroups system preference 2) Do a search for 'test': <staff_url>/cgi-bin/koha/catalogue/search.pl?q=test 3) Click the 'Select all' link at the top of the search results, click the 'Place hold' button. 4) Enter the 'koha' user 5) Pick a pickup location for each of the holds and click 'Place holds'. 6) Visit the 'koha' patron: <staff_url>/cgi-bin/koha/members/moremember.pl?borrowernumber=51 7) Click the 'holds' tab. Notice a new 'Group selected' button now exists 8) Pick any number of holds (more than 2) and click the 'Group selected' button. Confirm 9) Notice the hold group shows '1'. If you click on it you're presented the hold group modal. 10) Group multiple holds multiple times. 11) Notice you can't group a hold that has already been found. 12) Notice you can't click the 'Group selected' button unless at least 2 holds are selected. 13) Notice a hold group is deleted if left with 0 or 1 hold e.g. make a group of 2 holds, cancel 1, notice the remaining hold is left without a group. prove t/db_dependent/api/v1/patrons_hold_groups.t prove t/db_dependent/Koha/Patron.t |