From f185785b8cb02a5882cb45219b7af39f99025ef0 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 24 Jul 2018 11:04:35 -0300 Subject: [PATCH] Bug 18887: Insert undef instead of '*' Koha::CirculationRules->get_effective_rule will become the method to call to retrieve a specific rule, we should start using it when possible. Moreover undef could replace '*' to mean 'any', that way we will be able to add FK on circulation_rules TODO: Add more tests Signed-off-by: Lisette Scheer Signed-off-by: Jesse Maseto Signed-off-by: Josef Moravec Signed-off-by: Nick Clemens --- C4/Reserves.pm | 11 +---------- Koha/CirculationRules.pm | 9 ++++++--- admin/smart-rules.pl | 4 ++-- 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index 6cfe7776c2..91966bd9a7 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -413,19 +413,10 @@ sub CanItemBeReserved { } # Now we need to check hold limits by patron category - my $rule = Koha::CirculationRules->find( + my $rule = Koha::CirculationRules->get_effective_rule( { categorycode => $borrower->{categorycode}, branchcode => $branchcode, - itemtype => undef, - rule_name => 'max_holds', - } - ); - $rule ||= Koha::CirculationRules->find( - { - categorycode => $borrower->{categorycode}, - branchcode => undef,, - itemtype => undef, rule_name => 'max_holds', } ); diff --git a/Koha/CirculationRules.pm b/Koha/CirculationRules.pm index 054eb00858..76dc63d8cf 100644 --- a/Koha/CirculationRules.pm +++ b/Koha/CirculationRules.pm @@ -53,9 +53,9 @@ sub get_effective_rule { my $search_params; $search_params->{rule_name} = $rule_name; - $search_params->{categorycode} = defined $categorycode ? { 'in' => [ $categorycode, '*' ] } : undef; - $search_params->{itemtype} = defined $itemtype ? { 'in' => [ $itemtype, '*' ] } : undef; - $search_params->{branchcode} = defined $branchcode ? { 'in' => [ $branchcode, '*' ] } : undef; + $search_params->{categorycode} = defined $categorycode ? [ $categorycode, undef ] : undef; + $search_params->{itemtype} = defined $itemtype ? [ $itemtype, undef ] : undef; + $search_params->{branchcode} = defined $branchcode ? [ $branchcode, undef ] : undef; my $rule = $self->search( $search_params, @@ -94,6 +94,9 @@ sub set_rule { my $rule_name = $params->{rule_name}; my $rule_value = $params->{rule_value}; + for my $v ( $branchcode, $categorycode, $itemtype ) { + $v = undef if $v and $v eq '*'; + } my $rule = $self->search( { rule_name => $rule_name, diff --git a/admin/smart-rules.pl b/admin/smart-rules.pl index ac3f46e0b8..bdeee64e01 100755 --- a/admin/smart-rules.pl +++ b/admin/smart-rules.pl @@ -271,7 +271,7 @@ elsif ($op eq "set-branch-defaults") { Koha::CirculationRules->set_rule( { branchcode => $branch, - categorycode => '*', + categorycode => undef, itemtype => undef, rule_name => 'max_holds', rule_value => $max_holds, @@ -348,7 +348,7 @@ elsif ($op eq "add-branch-cat") { Koha::CirculationRules->set_rule( { - branchcode => '*', + branchcode => undef, categorycode => $categorycode, itemtype => undef, rule_name => 'max_holds', -- 2.39.5