Bug 18928: Use get_effective_rule in GetBranchItemRule
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Mon, 29 Apr 2019 15:14:27 +0000 (11:14 -0400)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Mon, 1 Jul 2019 13:58:04 +0000 (14:58 +0100)
Signed-off-by: Agustin Moyano <agustinmoyano@theke.io>
Signed-off-by: Liz Rea <wizzyrea@gmail.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

C4/Circulation.pm

index 7e3c989..560abc1 100644 (file)
@@ -1722,58 +1722,40 @@ Neither C<$branchcode> nor C<$itemtype> should be '*'.
 sub GetBranchItemRule {
     my ( $branchcode, $itemtype ) = @_;
 
-    # Set search precedences
-    my @params = (
-        {
-            branchcode   => $branchcode,
-            categorycode => undef,
-            itemtype     => $itemtype,
-        },
-        {
-            branchcode   => $branchcode,
-            categorycode => undef,
-            itemtype     => undef,
-        },
+    # Search for rules!
+    my $holdallowed_rule = Koha::CirculationRules->get_effective_rule(
         {
-            branchcode   => undef,
-            categorycode => undef,
-            itemtype     => $itemtype,
-        },
+            branchcode => $branchcode,
+            itemtype => $itemtype,
+            rule_name => 'holdallowed',
+        }
+    );
+    my $hold_fulfillment_policy_rule = Koha::CirculationRules->get_effective_rule(
         {
-            branchcode   => undef,
-            categorycode => undef,
-            itemtype     => undef,
-        },
+            branchcode => $branchcode,
+            itemtype => $itemtype,
+            rule_name => 'hold_fulfillment_policy',
+        }
     );
-
-    # Initialize default values
-    my $rules = {
-        holdallowed             => undef,
-        hold_fulfillment_policy => undef,
-        returnbranch            => undef,
-    };
-
-    # Search for rules!
-    foreach my $rule_name (qw( holdallowed hold_fulfillment_policy returnbranch )) {
-        foreach my $params (@params) {
-            my $rule = Koha::CirculationRules->search(
-                {
-                    rule_name => $rule_name,
-                    %$params,
-                }
-            )->next();
-
-            if ( $rule ) {
-                $rules->{$rule_name} = $rule->rule_value;
-                last;
-            }
+    my $returnbranch_rule = Koha::CirculationRules->get_effective_rule(
+        {
+            branchcode => $branchcode,
+            itemtype => $itemtype,
+            rule_name => 'returnbranch',
         }
-    }
+    );
 
     # built-in default circulation rule
-    $rules->{holdallowed} = 2                 unless ( defined $rules->{holdallowed} );
-    $rules->{hold_fulfillment_policy} = 'any' unless ( defined $rules->{hold_fulfillment_policy} );
-    $rules->{returnbranch} = 'homebranch'     unless ( defined $rules->{returnbranch} );
+    my $rules;
+    $rules->{holdallowed} = defined $holdallowed_rule
+        ? $holdallowed_rule->rule_value
+        : 2;
+    $rules->{hold_fulfillment_policy} = defined $hold_fulfillment_policy_rule
+        ? $hold_fulfillment_policy_rule->rule_value
+        : 'any';
+    $rules->{returnbranch} = defined $returnbranch_rule
+        ? $returnbranch_rule->rule_value
+        : 'homebranch';
 
     return $rules;
 }