Koha-clms/Koha/Template/Plugin/CirculationRules.pm

127 lines
3.8 KiB
Perl

package Koha::Template::Plugin::CirculationRules;
# Copyright ByWater Solutions 2017
# This file is part of Koha.
#
# Koha is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Koha is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Koha; if not, see <https://www.gnu.org/licenses>.
use Modern::Perl;
use base qw( Template::Plugin );
use Koha::CirculationRules;
use C4::Circulation qw( GetRenewCount );
=head1 NAME
Koha::Template::Plugin::CirculationRules - A template plugin for dealing with things related to circulation
=head2 Methods
=head3 Get
[% SET rule = CirculationRules.Get( branchcode, categorycode, itemtype, rule_name ) %]
Returns the effective rule value for the given tuple.
=cut
sub Get {
my ( $self, $branchcode, $categorycode, $itemtype, $rule_name ) = @_;
$branchcode = undef if $branchcode eq q{} or $branchcode eq q{*};
$categorycode = undef if $categorycode eq q{} or $categorycode eq q{*};
$itemtype = undef if $itemtype eq q{} or $itemtype eq q{*};
my $rule = Koha::CirculationRules->get_effective_rule(
{
branchcode => $branchcode,
categorycode => $categorycode,
itemtype => $itemtype,
rule_name => $rule_name,
}
);
return $rule->rule_value if $rule;
}
=head3 Search
[% SET rule = CirculationRules.Search( branchcode, categorycode, itemtype, rule_name, { want_rule = 1 } ) %]
Returns the first rule that matches the given critea.
It does not perform precedence sorting as CirculationRules.Get would.
By default, it returns only the rule value. Set want_rule to true to return
the rule object.
=cut
sub Search {
my ( $self, $branchcode, $categorycode, $itemtype, $rule_name, $params ) = @_;
$branchcode = undef if $branchcode eq q{} or $branchcode eq q{*};
$categorycode = undef if $categorycode eq q{} or $categorycode eq q{*};
$itemtype = undef if $itemtype eq q{} or $itemtype eq q{*};
my $rule = Koha::CirculationRules->search(
{
branchcode => $branchcode,
categorycode => $categorycode,
itemtype => $itemtype,
rule_name => $rule_name,
}
)->next;
return $rule if $params->{want_rule};
return $rule->rule_value if $rule;
}
=head3 Renewals
[% SET renewals = CirculationRules.Renewals( borrowernumber, itemnumber ) %]
[% renewals.remaining | html %]
Returns a hash of data about renewals for a checkout, by the given borrowernumber and itemnumber.
Hash keys include:
count - The number of renewals already used
allowed - The total number of renewals this checkout may have
remaining - The total number of renewals that can still be made
unseen_count - The number of unseen renewals already used
unseen_allowed - The total number of unseen renewals this checkout may have
unseen_remaining - The total number of unseen renewals that can still be made
=cut
sub Renewals {
my ( $self, $borrowernumber, $itemnumber ) = @_;
my ( $count, $allowed, $remaining, $unseen_count, $unseen_allowed, $unseen_remaining ) =
GetRenewCount( $borrowernumber, $itemnumber );
return {
count => $count,
allowed => $allowed,
remaining => $remaining,
unseen_count => $unseen_count,
unseen_allowed => $unseen_allowed,
unseen_remaining => $unseen_remaining,
};
}
1;