"Fossies" - the Fresh Open Source Software Archive

Member "koha-19.11.15/Koha/CirculationRules.pm" (23 Feb 2021, 4800 Bytes) of package /linux/misc/koha-19.11.15.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Perl source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "CirculationRules.pm" see the Fossies "Dox" file reference documentation and the last Fossies "Diffs" side-by-side code changes report: 20.05.06_vs_20.11.00.

    1 package Koha::CirculationRules;
    2 
    3 # Copyright Vaara-kirjastot 2015
    4 # Copyright Koha Development Team 2016
    5 #
    6 # This file is part of Koha.
    7 #
    8 # Koha is free software; you can redistribute it and/or modify it under the
    9 # terms of the GNU General Public License as published by the Free Software
   10 # Foundation; either version 3 of the License, or (at your option) any later
   11 # version.
   12 #
   13 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
   14 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
   15 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
   16 #
   17 # You should have received a copy of the GNU General Public License along
   18 # with Koha; if not, write to the Free Software Foundation, Inc.,
   19 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
   20 
   21 use Modern::Perl;
   22 
   23 use Koha::Exceptions;
   24 use Koha::CirculationRule;
   25 
   26 use base qw(Koha::Objects);
   27 
   28 =head1 NAME
   29 
   30 Koha::CirculationRules - Koha CirculationRule Object set class
   31 
   32 =head1 API
   33 
   34 =head2 Class Methods
   35 
   36 =cut
   37 
   38 =head3 get_effective_rule
   39 
   40 =cut
   41 
   42 sub get_effective_rule {
   43     my ( $self, $params ) = @_;
   44 
   45     my $rule_name    = $params->{rule_name};
   46     my $categorycode = $params->{categorycode};
   47     my $itemtype     = $params->{itemtype};
   48     my $branchcode   = $params->{branchcode};
   49 
   50     Koha::Exceptions::MissingParameter->throw(
   51         "Required parameter 'rule_name' missing")
   52       unless $rule_name;
   53 
   54     for my $v ( $branchcode, $categorycode, $itemtype ) {
   55         $v = undef if $v and $v eq '*';
   56     }
   57 
   58     my $search_params;
   59     $search_params->{rule_name} = $rule_name;
   60 
   61     $search_params->{categorycode} = defined $categorycode ? [ $categorycode, undef ] : undef;
   62     $search_params->{itemtype}     = defined $itemtype     ? [ $itemtype, undef ] : undef;
   63     $search_params->{branchcode}   = defined $branchcode   ? [ $branchcode,   undef ] : undef;
   64 
   65     my $rule = $self->search(
   66         $search_params,
   67         {
   68             order_by => {
   69                 -desc => [ 'branchcode', 'categorycode', 'itemtype' ]
   70             },
   71             rows => 1,
   72         }
   73     )->single;
   74 
   75     return $rule;
   76 }
   77 
   78 =head3 set_rule
   79 
   80 =cut
   81 
   82 sub set_rule {
   83     my ( $self, $params ) = @_;
   84 
   85     for my $mandatory_parameter (qw( branchcode categorycode itemtype rule_name rule_value ) ){
   86         Koha::Exceptions::MissingParameter->throw(
   87             "Required parameter 'branchcode' missing")
   88           unless exists $params->{$mandatory_parameter};
   89     }
   90 
   91     my $branchcode   = $params->{branchcode};
   92     my $categorycode = $params->{categorycode};
   93     my $itemtype     = $params->{itemtype};
   94     my $rule_name    = $params->{rule_name};
   95     my $rule_value   = $params->{rule_value};
   96 
   97     for my $v ( $branchcode, $categorycode, $itemtype ) {
   98         $v = undef if $v and $v eq '*';
   99     }
  100     my $rule = $self->search(
  101         {
  102             rule_name    => $rule_name,
  103             branchcode   => $branchcode,
  104             categorycode => $categorycode,
  105             itemtype     => $itemtype,
  106         }
  107     )->next();
  108 
  109     if ($rule) {
  110         if ( defined $rule_value ) {
  111             $rule->rule_value($rule_value);
  112             $rule->update();
  113         }
  114         else {
  115             $rule->delete();
  116         }
  117     }
  118     else {
  119         if ( defined $rule_value ) {
  120             $rule = Koha::CirculationRule->new(
  121                 {
  122                     branchcode   => $branchcode,
  123                     categorycode => $categorycode,
  124                     itemtype     => $itemtype,
  125                     rule_name    => $rule_name,
  126                     rule_value   => $rule_value,
  127                 }
  128             );
  129             $rule->store();
  130         }
  131     }
  132 
  133     return $rule;
  134 }
  135 
  136 =head3 set_rules
  137 
  138 =cut
  139 
  140 sub set_rules {
  141     my ( $self, $params ) = @_;
  142 
  143     my $branchcode   = $params->{branchcode};
  144     my $categorycode = $params->{categorycode};
  145     my $itemtype     = $params->{itemtype};
  146     my $rules        = $params->{rules};
  147 
  148     my $rule_objects = [];
  149     while ( my ( $rule_name, $rule_value ) = each %$rules ) {
  150         my $rule_object = Koha::CirculationRules->set_rule(
  151             {
  152                 branchcode   => $branchcode,
  153                 categorycode => $categorycode,
  154                 itemtype     => $itemtype,
  155                 rule_name    => $rule_name,
  156                 rule_value   => $rule_value,
  157             }
  158         );
  159         push( @$rule_objects, $rule_object );
  160     }
  161 
  162     return $rule_objects;
  163 }
  164 
  165 =head3 delete
  166 
  167 Delete a set of circulation rules, needed for cleaning up when deleting issuingrules
  168 
  169 =cut
  170 
  171 sub delete {
  172     my ( $self ) = @_;
  173 
  174     while ( my $rule = $self->next ){
  175         $rule->delete;
  176     }
  177 
  178 }
  179 
  180 =head3 type
  181 
  182 =cut
  183 
  184 sub _type {
  185     return 'CirculationRule';
  186 }
  187 
  188 =head3 object_class
  189 
  190 =cut
  191 
  192 sub object_class {
  193     return 'Koha::CirculationRule';
  194 }
  195 
  196 1;