use Koha::Items;
use Koha::ItemTypes;
use Koha::Patrons;
+use Koha::CirculationRules;
use List::MoreUtils qw( firstidx any );
use Carp;
}
# Now we need to check hold limits by patron category
- my $schema = Koha::Database->new()->schema();
- my $rule = $schema->resultset('BranchBorrowerCircRule')->find(
+ my $rule = Koha::CirculationRules->find(
{
- branchcode => $branchcode,
categorycode => $borrower->{categorycode},
+ branchcode => $branchcode,
+ itemtype => undef,
+ rule_name => 'max_holds',
}
);
- $rule ||= $schema->resultset('DefaultBorrowerCircRule')->find(
+ $rule ||= Koha::CirculationRules->find(
{
- categorycode => $borrower->{categorycode}
+ categorycode => $borrower->{categorycode},
+ branchcode => undef,,
+ itemtype => undef,
+ rule_name => 'max_holds',
}
);
- if ( $rule && defined $rule->max_holds ) {
+ if ( $rule ) {
my $total_holds_count = Koha::Holds->search(
{
borrowernumber => $borrower->{borrowernumber}
}
)->count();
- return { status => 'tooManyReserves', limit => $rule->max_holds } if $total_holds_count >= $rule->max_holds;
+ return { status => 'tooManyReserves', limit => $rule->rule_value} if $total_holds_count >= $rule->rule_value;
}
my $circ_control_branch =
use Koha::RefundLostItemFeeRule;
use Koha::RefundLostItemFeeRules;
use Koha::Libraries;
+use Koha::CirculationRules;
use Koha::Patron::Categories;
use Koha::Caches;
AND categorycode = ?");
$sth_delete->execute($branch, $categorycode);
}
+ Koha::CirculationRules->set_rule(
+ {
+ branchcode => $branch,
+ categorycode => $categorycode,
+ itemtype => undef,
+ rule_name => 'max_holds',
+ rule_value => undef,
+ }
+ );
}
elsif ($op eq 'delete-branch-item') {
my $itemtype = $input->param('itemtype');
$sth_search->execute();
my $res = $sth_search->fetchrow_hashref();
if ($res->{total}) {
- $sth_update->execute( $maxissueqty, $maxonsiteissueqty, $max_holds );
+ $sth_update->execute( $maxissueqty, $maxonsiteissueqty );
} else {
- $sth_insert->execute( $maxissueqty, $maxonsiteissueqty, $max_holds );
+ $sth_insert->execute( $maxissueqty, $maxonsiteissueqty );
}
+
+ Koha::CirculationRules->set_rule(
+ {
+ branchcode => undef,
+ categorycode => undef,
+ itemtype => undef,
+ rule_name => 'max_holds',
+ rule_value => $max_holds,
+ }
+ );
} else {
my $sth_search = $dbh->prepare("SELECT count(*) AS total
FROM default_borrower_circ_rules
$sth_search->execute($categorycode);
my $res = $sth_search->fetchrow_hashref();
if ($res->{total}) {
- $sth_update->execute( $maxissueqty, $maxonsiteissueqty, $max_holds, $categorycode );
+ $sth_update->execute( $maxissueqty, $maxonsiteissueqty, $categorycode );
} else {
- $sth_insert->execute( $categorycode, $maxissueqty, $maxonsiteissueqty, $max_holds );
+ $sth_insert->execute( $categorycode, $maxissueqty, $maxonsiteissueqty );
}
+
+ Koha::CirculationRules->set_rule(
+ {
+ branchcode => undef,
+ categorycode => $categorycode,
+ itemtype => undef,
+ rule_name => 'max_holds',
+ rule_value => $max_holds,
+ }
+ );
}
} elsif ($categorycode eq "*") {
my $sth_search = $dbh->prepare("SELECT count(*) AS total
} else {
$sth_insert->execute($branch, $categorycode, $maxissueqty, $maxonsiteissueqty, $max_holds);
}
+
+ Koha::CirculationRules->set_rule(
+ {
+ branchcode => $branch,
+ categorycode => $categorycode,
+ itemtype => undef,
+ rule_name => 'max_holds',
+ rule_value => $max_holds,
+ }
+ );
}
}
elsif ($op eq "add-branch-item") {
[% USE raw %]
[% USE Asset %]
[% USE Branches %]
+[% USE CirculationRules %]
[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
<title>Koha › Administration › Circulation and fine rules</title>
[% branch_cat_rule_loo.maxonsiteissueqty | html %]
[% END %]
</td>
- <td>[% IF ( branch_cat_rule_loo.unlimited_max_holds ) %]
- Unlimited
+ <td>
+ [% SET rule_value = CirculationRules.Get( branch_cat_rule_loo.branchcode, branch_cat_rule_loo.categorycode, branch_cat_rule_loo.itemtype, 'max_holds' ) %]
+ [% IF rule_value %]
+ [% rule_value %]
[% ELSE %]
- [% branch_cat_rule_loo.max_holds | html %]
+ Unlimited
[% END %]
</td>
use Koha::Holds;
use Koha::Items;
use Koha::Libraries;
+use Koha::Patrons;
+use Koha::CirculationRules;
BEGIN {
use FindBin;
$dbh->do('DELETE FROM reserves');
$dbh->do('DELETE FROM issuingrules');
+ $dbh->do('DELETE FROM circulation_rules');
( $bibnum, $title, $bibitemnum ) = create_helper_biblio('TEST');
( $item_bibnum, $item_bibitemnum, $itemnumber ) =
my $ret = CanItemBeReserved( $borrowernumbers[0], $itemnumber );
is( $ret->{status}, 'OK', 'Patron can place hold with no borrower circ rules' );
- my $rule_all = $schema->resultset('DefaultBorrowerCircRule')->new(
+ my $rule_all = Koha::CirculationRules->set_rule(
{
categorycode => $category->{categorycode},
- max_holds => 3,
+ branchcode => undef,
+ itemtype => undef,
+ rule_name => 'max_holds',
+ rule_value => 3,
}
- )->insert();
+ );
- my $rule_branch = $schema->resultset('BranchBorrowerCircRule')->new(
+ my $rule_branch = Koha::CirculationRules->set_rule(
{
branchcode => $branch_1,
categorycode => $category->{categorycode},
- max_holds => 5,
+ itemtype => undef,
+ rule_name => 'max_holds',
+ rule_value => 5,
}
- )->insert();
+ );
$ret = CanItemBeReserved( $borrowernumbers[0], $itemnumber );
is( $ret->{status}, 'OK', 'Patron can place hold with branch/category rule of 5, category rule of 3' );
is( $ret->{status}, 'tooManyReserves', 'Patron cannot place hold with only a category rule of 3' );
$rule_all->delete();
- $rule_branch->max_holds(3);
- $rule_branch->insert();
+ $rule_branch->rule_value(3);
+ $rule_branch->store();
$ret = CanItemBeReserved( $borrowernumbers[0], $itemnumber );
is( $ret->{status}, 'tooManyReserves', 'Patron cannot place hold with only a branch/category rule of 3' );
- $rule_branch->max_holds(5);
+ $rule_branch->rule_value(5);
$rule_branch->update();
- $rule_all->max_holds(5);
- $rule_all->insert();
+ $rule_branch->rule_value(5);
+ $rule_branch->store();
$ret = CanItemBeReserved( $borrowernumbers[0], $itemnumber );
is( $ret->{status}, 'OK', 'Patron can place hold with branch/category rule of 5, category rule of 5' );