@@ -, +, @@ Total current checkouts allowed: 1 Hold policy: Not set Hold pickup library match: Not set Return policay: Not set SELECT * FROM circulation_rules WHERE branchcode = 'BRANCHCODE' using the branchcode for the library you chode --- Koha/CirculationRules.pm | 5 +++++ t/db_dependent/Koha/CirculationRules.t | 27 ++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) --- a/Koha/CirculationRules.pm +++ a/Koha/CirculationRules.pm @@ -62,12 +62,15 @@ our $RULE_KINDS = { holdallowed => { scope => [ 'branchcode', 'itemtype' ], + can_be_blank => 0, }, hold_fulfillment_policy => { scope => [ 'branchcode', 'itemtype' ], + can_be_blank => 0, }, returnbranch => { scope => [ 'branchcode', 'itemtype' ], + can_be_blank => 0, }, article_requests => { @@ -278,6 +281,8 @@ sub set_rule { my $itemtype = $params->{itemtype}; my $rule_name = $params->{rule_name}; my $rule_value = $params->{rule_value}; + my $can_be_blank = defined $kind_info->{can_be_blank} ? $kind_info->{can_be_blank} : 1; + $rule_value = undef if $rule_value eq "" && !$can_be_blank; for my $v ( $branchcode, $categorycode, $itemtype ) { $v = undef if $v and $v eq '*'; --- a/t/db_dependent/Koha/CirculationRules.t +++ a/t/db_dependent/Koha/CirculationRules.t @@ -33,7 +33,7 @@ my $schema = Koha::Database->new->schema; my $builder = t::lib::TestBuilder->new; subtest 'set_rule + get_effective_rule' => sub { - plan tests => 8; + plan tests => 9; $schema->storage->txn_begin; @@ -102,6 +102,31 @@ subtest 'set_rule + get_effective_rule' => sub { is( $rule->rule_value, 1, 'Default rule is returned if there is no rule for this branchcode' ); + subtest 'test rules that cannot be blank' => sub { + plan tests => 3; + foreach my $no_blank_rule ( ('holdallowed','hold_fulfillment_policy','returnbranch') ){ + Koha::CirculationRules->set_rule( + { + branchcode => $branchcode, + itemtype => '*', + rule_name => $no_blank_rule, + rule_value => '', + } + ); + + $rule = Koha::CirculationRules->get_effective_rule( + { + branchcode => $branchcode, + categorycode => undef, + itemtype => undef, + rule_name => $no_blank_rule, + } + ); + is( $rule, undef, 'Rules that cannot be blank are not set when passed blank string' ); + } + }; + + subtest 'test rule matching with different combinations of rule scopes' => sub { my ( $tests, $order ) = prepare_tests_for_rule_scope_combinations( { --