Bug 30324: Don't use default rule if we have a parent rule

Currenty, if we find only a defult rule for a checkout we are ignoring the parent rule.
We should not use the default if there is a parent rule

To test:
 1: have an itype BK
 2: create an itype BK2, set BK as the parent to BK2
 3: create a circ rule for All Patrons, item type BK (displays as "Books (All)" in the circ rules interface), setting total checkouts to 1
 4: do not create any rule specifically for the BK2 itype
 5: have some BK items and some BK2 items
 6: check a BK item out to a patron
 7: check a BK2 item out to the same patron, observe you are not blocked from doing so
 8: try to check out a second BK2 item to the same patron, get message "Too many checked out. 1 checked out, only 1 are allowed."
 9: try to check out a second BK item to the same patrons, get message "Too many checked out. 2 checked out, only 1 are allowed."
10: return both items
11: check a BK2 item out to your patron
12: try to check a BK item out to your patron, get message "Too many checked out. 1 checked out, only 1 are allowed."
13: Apply patch
14: Repeat 7, you are now blocked
15: Other results should be the same

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Michael Adamyk <madamyk@ckls.org>
Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
This commit is contained in:
Nick Clemens 2024-01-11 16:21:48 +00:00 committed by Katrin Fischer
parent afe8869d79
commit d7afd1ca30
No known key found for this signature in database
GPG Key ID: 0EF6E2C03357A834
1 changed files with 2 additions and 2 deletions

View File

@ -487,7 +487,7 @@ sub TooMany {
my $rule_itemtype = $maxissueqty_rule->itemtype;
my @types;
unless ( $rule_itemtype ) {
unless ( $rule_itemtype || $parent_maxissueqty_rule ) {
# matching rule has the default item type, so count only
# those existing loans that don't fall under a more
# specific rule
@ -519,7 +519,7 @@ sub TooMany {
while ( my $c = $checkouts->next ) {
my $itemtype = $c->item->effective_itemtype;
unless ( $rule_itemtype ) {
unless ( $rule_itemtype || $parent_maxissueqty_rule ) {
next if grep {$_ eq $itemtype} @types;
} else {
next unless grep {$_ eq $itemtype} @types;