From 6cf8c901f55efa586a3c8b01cbbe4780c0fb028b Mon Sep 17 00:00:00 2001 From: Aleisha Amohia Date: Tue, 8 Nov 2022 19:58:22 +0000 Subject: [PATCH] Bug 32129: Use patron category when checking if item can fill recall This patch uses the patron category of the patron who requested the most relevant recall to check for more specific circulation rules relating to recalls. This ensures that patrons who are allowed to place recalls are able to fill their recalls, especially when recalls are not generally available for all patron categories. To test: 1) Go to Administration -> System preferences and enable UseRecalls 2) Go to Administration -> Circulation and fines rules and set a general All/All rule and a Category A/Itemtype A rule. All values can be set however you like except for these recalls rules: All/All rule: Recalls allowed: 0 Recalls per record: 0 On shelf recalls allowed: if any unavailable Category A/Itemtype A rule: Recalls allowed: 5 Recalls per record: 5 On shelf recalls allowed: if any unavailable 3) Find an item of Itemtype A. Check it out to Patron A (any category). 4) Log into the OPAC as Patron B (of Category A). Find the item and place a recall on the item. 5) Back in the staff interface, check in the item. This should trigger the recalls process so you can allocate the item to Patron B's recall, however the pop-up box to confirm the recall does not show. This is the bug. 6) Apply the patch and restart services 7) Check in the item again. Confirm the pop-up box to confirm the recall shows and you are able to allocate the item to Patron B's recall. 8) Confirm tests pass t/db_dependent/Koha/Item.t Sponsored-by: Auckland University of Technology Signed-off-by: David Nind Signed-off-by: Victor Grousset/tuxayo Signed-off-by: Tomas Cohen Arazi --- Koha/Item.pm | 2 +- t/db_dependent/Koha/Item.t | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Koha/Item.pm b/Koha/Item.pm index 7251a8a094..849f436a5a 100644 --- a/Koha/Item.pm +++ b/Koha/Item.pm @@ -1977,7 +1977,7 @@ sub can_be_waiting_recall { # Check the circulation rule for each relevant itemtype for this item my $rule = Koha::CirculationRules->get_effective_rules({ branchcode => $branchcode, - categorycode => undef, + categorycode => $self->check_recalls ? $self->check_recalls->patron->categorycode : undef, itemtype => $self->effective_itemtype, rules => [ 'recalls_allowed', diff --git a/t/db_dependent/Koha/Item.t b/t/db_dependent/Koha/Item.t index 75edcb4275..73208a67b4 100755 --- a/t/db_dependent/Koha/Item.t +++ b/t/db_dependent/Koha/Item.t @@ -1968,8 +1968,8 @@ subtest 'Recalls tests' => sub { # Patron2 has Item1 checked out. Patron1 has placed a biblio-level recall on Biblio1, so check if Item1 can fulfill Patron1's recall. Koha::CirculationRules->set_rules({ - branchcode => undef, - categorycode => undef, + branchcode => $branchcode, + categorycode => $patron1->categorycode, itemtype => $item1->effective_itemtype, rules => { recalls_allowed => 0, @@ -1980,8 +1980,8 @@ subtest 'Recalls tests' => sub { is( $item1->can_be_waiting_recall, 0, "Recalls not allowed for this itemtype" ); Koha::CirculationRules->set_rules({ - branchcode => undef, - categorycode => undef, + branchcode => $branchcode, + categorycode => $patron1->categorycode, itemtype => $item1->effective_itemtype, rules => { recalls_allowed => 1, -- 2.39.5