Bugzilla – Attachment 128205 Details for
Bug 29012
Some rules are not saved when left blank while editing a 'rule' line in smart-rules.pl
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[PATCH] Bug 29012: Add default values for blank circulation rules that weren't saved to the database
PATCH-Bug-29012-Add-default-values-for-blank-circu.patch (text/plain), 5.67 KB, created by
Kevin Carnes
on 2021-12-03 09:53:49 UTC
(
hide
)
Description:
[PATCH] Bug 29012: Add default values for blank circulation rules that weren't saved to the database
Filename:
MIME Type:
Creator:
Kevin Carnes
Created:
2021-12-03 09:53:49 UTC
Size:
5.67 KB
patch
obsolete
>From f519c8960f43a9ff06a2f639f38064d1bb11933b Mon Sep 17 00:00:00 2001 >From: Kevin Carnes <kevin.carnes@ub.lu.se> >Date: Fri, 3 Dec 2021 09:49:59 +0000 >Subject: [PATCH] [PATCH] Bug 29012: Add default values for blank circulation > rules that weren't saved to the database > >There are 5 fields that are not set if no value is provided when saving/editing a rule in Administration->Circulation and fines rules >- issuelength >- hardduedate >- unseenrenewalsallowed >- rentaldiscount >- decreaseloanholds > >This is problematic because it gives the impression these rules are set as blank, but in reality they don't exist and the rule will fal back to the higher level > >To test: >1 - Set a rule for > Patron category: Teacher > Itemtype: All > Hard due date: (Today) > Lona period: 10 >2 - Set a rule for > Patron category: Teacher > Itemtype: Books > Hard due date: (leave blank) > Loan period: 10 >3 - Expected behaviour is Book item will checkout to teacher for 10 days, all other types will be due yesterday at 25:59:00 >4 - Checkout an non-book item type to teacher >5 - Hard due date applies >6 - Checkout a 'book' item type to teacher >7 - Hard due date applies - FAIL >--- > admin/smart-rules.pl | 10 +++--- > .../data/mysql/atomicupdate/bug_29012.pl | 33 +++++++++++++++++++ > 2 files changed, 38 insertions(+), 5 deletions(-) > create mode 100755 installer/data/mysql/atomicupdate/bug_29012.pl > >diff --git a/admin/smart-rules.pl b/admin/smart-rules.pl >index 31ed87a83a..d970c704a5 100755 >--- a/admin/smart-rules.pl >+++ b/admin/smart-rules.pl >@@ -258,7 +258,7 @@ elsif ($op eq 'add') { > my $maxissueqty = strip_non_numeric( scalar $input->param('maxissueqty') ); > my $maxonsiteissueqty = strip_non_numeric( scalar $input->param('maxonsiteissueqty') ); > my $renewalsallowed = $input->param('renewalsallowed'); >- my $unseen_renewals_allowed = $input->param('unseen_renewals_allowed'); >+ my $unseen_renewals_allowed = $input->param('unseen_renewals_allowed') || 0; > my $renewalperiod = $input->param('renewalperiod'); > my $norenewalbefore = $input->param('norenewalbefore'); > $norenewalbefore = '' if $norenewalbefore =~ /^\s*$/; >@@ -272,21 +272,21 @@ elsif ($op eq 'add') { > my $holds_per_record = strip_non_numeric( scalar $input->param('holds_per_record') ); > my $holds_per_day = strip_non_numeric( scalar $input->param('holds_per_day') ); > my $onshelfholds = $input->param('onshelfholds') || 0; >- my $issuelength = $input->param('issuelength'); >+ my $issuelength = $input->param('issuelength') || 0; > $issuelength = $issuelength eq q{} ? undef : $issuelength; > my $daysmode = $input->param('daysmode'); > my $lengthunit = $input->param('lengthunit'); >- my $hardduedate = $input->param('hardduedate') || undef; >+ my $hardduedate = $input->param('hardduedate') || ''; > $hardduedate = eval { dt_from_string( scalar $hardduedate ) } if ( $hardduedate ); > $hardduedate = output_pref( { dt => $hardduedate, dateonly => 1, dateformat => 'iso' } ) if ( $hardduedate ); > my $hardduedatecompare = $input->param('hardduedatecompare'); >- my $rentaldiscount = $input->param('rentaldiscount'); >+ my $rentaldiscount = $input->param('rentaldiscount') || 0; > my $opacitemholds = $input->param('opacitemholds') || 0; > my $article_requests = $input->param('article_requests') || 'no'; > my $overduefinescap = $input->param('overduefinescap') || ''; > my $cap_fine_to_replacement_price = ($input->param('cap_fine_to_replacement_price') || '') eq 'on'; > my $note = $input->param('note'); >- my $decreaseloanholds = $input->param('decreaseloanholds') || undef; >+ my $decreaseloanholds = $input->param('decreaseloanholds') || ''; > > my $rules = { > maxissueqty => $maxissueqty, >diff --git a/installer/data/mysql/atomicupdate/bug_29012.pl b/installer/data/mysql/atomicupdate/bug_29012.pl >new file mode 100755 >index 0000000000..c6c8d89236 >--- /dev/null >+++ b/installer/data/mysql/atomicupdate/bug_29012.pl >@@ -0,0 +1,33 @@ >+use Modern::Perl; >+ >+return { >+ bug_number => "29012", >+ description => "Some rules are not saved when left blank while editing a 'rule' line in smart-rules.pl", >+ up => sub { >+ my ($args) = @_; >+ my ($dbh, $out) = @$args{qw(dbh out)}; >+ my %default_rule_values = ( >+ issuelength => 0, >+ hardduedate => '', >+ unseenrenewalsallowed => 0, >+ rentaldiscount => 0, >+ decreaseloanholds => '', >+ ); >+ while (my ($rule_name, $rule_value) = each (%default_rule_values)) { >+ $dbh->do(q{ >+ INSERT IGNORE INTO circulation_rules (branchcode, categorycode, itemtype, rule_name, rule_value) >+ SELECT branchcode, categorycode, itemtype, ?, ? FROM circulation_rules cr >+ WHERE NOT EXISTS ( >+ SELECT * FROM circulation_rules cr2 >+ WHERE >+ cr2.rule_name=? >+ AND ( (cr2.branchcode=cr.branchcode) OR ( ISNULL(cr2.branchcode) AND ISNULL(cr.branchcode) ) ) >+ AND ( (cr2.categorycode=cr.categorycode) OR ( ISNULL(cr2.categorycode) AND ISNULL(cr.categorycode) ) ) >+ AND ( (cr2.itemtype=cr.itemtype) OR ( ISNULL(cr2.itemtype) AND ISNULL(cr.itemtype) ) ) >+ ) >+ GROUP BY branchcode, categorycode, itemtype >+ }, undef, $rule_name, $rule_value, $rule_name); >+ } >+ say $out "Add default values for blank circulation rules that weren't saved to the database"; >+ }, >+} >-- >2.20.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 29012
:
128205
|
128206
|
131043
|
131053
|
131054
|
135194
|
135998
|
138140
|
138309
|
138310
|
141869
|
141876
|
141877
|
141878
|
141879
|
141951
|
141952
|
142248
|
142249