From 680631d84c3811e9ca8e00dc1c29e07fe16ccd56 Mon Sep 17 00:00:00 2001 From: Jesse Weaver Date: Wed, 4 Oct 2017 16:50:26 -0600 Subject: [PATCH] Bug 18887: (follow-up) Fix null/empty behavior --- C4/Reserves.pm | 2 +- Koha/CirculationRules.pm | 5 ++++- admin/smart-rules.pl | 18 +++++++++++++++--- installer/data/mysql/atomicupdate/bug_18887.perl | 4 ++-- .../intranet-tmpl/prog/en/modules/admin/smart-rules.tt | 7 ++++++- 5 files changed, 28 insertions(+), 8 deletions(-) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index 58c6a87b95..7325eb5ff9 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -416,7 +416,7 @@ sub CanItemBeReserved { rule_name => 'max_holds', } ); - if ( $rule ) { + if ( $rule && defined( $rule->rule_value ) && $rule->rule_value ne '' ) { my $total_holds_count = Koha::Holds->search( { borrowernumber => $borrower->{borrowernumber} diff --git a/Koha/CirculationRules.pm b/Koha/CirculationRules.pm index 8004e95196..054eb00858 100644 --- a/Koha/CirculationRules.pm +++ b/Koha/CirculationRules.pm @@ -136,7 +136,6 @@ sub set_rule { sub set_rules { my ( $self, $params ) = @_; - warn Data::Dumper::Dumper( $params ); my $branchcode = $params->{branchcode}; my $categorycode = $params->{categorycode}; @@ -164,6 +163,10 @@ sub _type { return 'CirculationRule'; } +=head3 object_class + +=cut + sub object_class { return 'Koha::CirculationRule'; } diff --git a/admin/smart-rules.pl b/admin/smart-rules.pl index 4400e01b87..9cc4bb276d 100755 --- a/admin/smart-rules.pl +++ b/admin/smart-rules.pl @@ -226,12 +226,15 @@ elsif ($op eq "set-branch-defaults") { my $holdallowed = $input->param('holdallowed'); my $hold_fulfillment_policy = $input->param('hold_fulfillment_policy'); my $returnbranch = $input->param('returnbranch'); + my $max_holds = $input->param('max_holds'); $maxissueqty =~ s/\s//g; $maxissueqty = undef if $maxissueqty !~ /^\d+/; $maxonsiteissueqty =~ s/\s//g; $maxonsiteissueqty = undef if $maxonsiteissueqty !~ /^\d+/; $holdallowed =~ s/\s//g; $holdallowed = undef if $holdallowed !~ /^\d+/; + $max_holds =~ s/\s//g; + $max_holds = '' if $max_holds !~ /^\d+/; if ($branch eq "*") { my $sth_search = $dbh->prepare("SELECT count(*) AS total @@ -267,6 +270,15 @@ elsif ($op eq "set-branch-defaults") { $sth_insert->execute($branch, $maxissueqty, $maxonsiteissueqty, $holdallowed, $hold_fulfillment_policy, $returnbranch); } } + Koha::CirculationRules->set_rule( + { + branchcode => $branch, + categorycode => '*', + itemtype => undef, + rule_name => 'max_holds', + rule_value => $max_holds, + } + ); } elsif ($op eq "add-branch-cat") { my $categorycode = $input->param('categorycode'); @@ -278,7 +290,7 @@ elsif ($op eq "add-branch-cat") { $maxonsiteissueqty =~ s/\s//g; $maxonsiteissueqty = undef if $maxonsiteissueqty !~ /^\d+/; $max_holds =~ s/\s//g; - $max_holds = undef if $max_holds !~ /^\d+/; + $max_holds = '' if $max_holds !~ /^\d+/; if ($branch eq "*") { if ($categorycode eq "*") { @@ -319,7 +331,7 @@ elsif ($op eq "add-branch-cat") { my $sth_insert = $dbh->prepare(q| INSERT INTO default_borrower_circ_rules (categorycode, maxissueqty, maxonsiteissueqty) - VALUES (?, ?, ?, ?) + VALUES (?, ?, ?) |); my $sth_update = $dbh->prepare(q| UPDATE default_borrower_circ_rules @@ -337,7 +349,7 @@ elsif ($op eq "add-branch-cat") { Koha::CirculationRules->set_rule( { - branchcode => undef, + branchcode => '*', categorycode => $categorycode, itemtype => undef, rule_name => 'max_holds', diff --git a/installer/data/mysql/atomicupdate/bug_18887.perl b/installer/data/mysql/atomicupdate/bug_18887.perl index 38610c9d44..07ee2d357f 100644 --- a/installer/data/mysql/atomicupdate/bug_18887.perl +++ b/installer/data/mysql/atomicupdate/bug_18887.perl @@ -20,12 +20,12 @@ if( CheckVersion( $DBversion ) ) { $dbh->do(q{ INSERT INTO circulation_rules ( branchcode, categorycode, itemtype, rule_name, rule_value ) - SELECT branchcode, categorycode, NULL, 'max_holds', max_holds FROM branch_borrower_circ_rules + SELECT branchcode, categorycode, NULL, 'max_holds', COALESCE( max_holds, '' ) FROM branch_borrower_circ_rules }); $dbh->do(q{ INSERT INTO circulation_rules ( branchcode, categorycode, itemtype, rule_name, rule_value ) - SELECT NULL, categorycode, NULL, 'max_holds', max_holds FROM branch_borrower_circ_rules + SELECT NULL, categorycode, NULL, 'max_holds', COALESCE( max_holds, '' ) FROM default_borrower_circ_rules }); $dbh->do(q{ diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt index a0d8377126..8f1c415fc8 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt @@ -350,6 +350,7 @@   Total current checkouts allowed Total current on-site checkouts allowed + Maximum total holds allowed (count) Hold policy Hold pickup library match Return policy @@ -359,6 +360,10 @@ Defaults[% UNLESS ( default_rules ) %] (not set)[% END %] + + [% SET rule_value = CirculationRules.Get( current_branch, '*', undef, 'max_holds' ) %] + +