Bugzilla – Attachment 159087 Details for
Bug 33847
Database update replaces undefined rules with defaults rather than the value that would be used
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 33847: Rewrite to use SQL
Bug-33847-Rewrite-to-use-SQL.patch (text/plain), 5.00 KB, created by
Kevin Carnes
on 2023-11-17 14:36:04 UTC
(
hide
)
Description:
Bug 33847: Rewrite to use SQL
Filename:
MIME Type:
Creator:
Kevin Carnes
Created:
2023-11-17 14:36:04 UTC
Size:
5.00 KB
patch
obsolete
>From 409e07d7627b3c2649d863e43e77b301dff06185 Mon Sep 17 00:00:00 2001 >From: Kevin Carnes <kevin.carnes@ub.lu.se> >Date: Fri, 17 Nov 2023 14:58:26 +0100 >Subject: [PATCH] Bug 33847: Rewrite to use SQL > >--- > installer/data/mysql/db_revs/220600024.pl | 86 +++++++++++------------ > 1 file changed, 41 insertions(+), 45 deletions(-) > >diff --git a/installer/data/mysql/db_revs/220600024.pl b/installer/data/mysql/db_revs/220600024.pl >index f5f58018d7..c068737009 100755 >--- a/installer/data/mysql/db_revs/220600024.pl >+++ b/installer/data/mysql/db_revs/220600024.pl >@@ -1,60 +1,56 @@ > use Modern::Perl; > >-use Koha::CirculationRules; >- > return { >- bug_number => "29012", >+ bug_number => "29012", > description => "Some rules are not saved when left blank while editing a 'rule' line in smart-rules.pl", >- up => sub { >+ up => sub { > my ($args) = @_; >- my ($dbh, $out) = @$args{qw(dbh out)}; >+ my ( $dbh, $out ) = @$args{qw(dbh out)}; > my %default_rule_values = ( > issuelength => 0, >- hardduedate => '', >- unseen_renewals_allowed => '', >+ hardduedate => q{}, >+ unseen_renewals_allowed => q{}, > rentaldiscount => 0, >- decreaseloanholds => '', >+ decreaseloanholds => q{}, > ); > >- my $rules = Koha::CirculationRules->search( { rule_name => 'suspension_chargeperiod' } ); >- while ( my $rule = $rules->next ) { >- foreach my $key ( keys %default_rule_values ) { >- next >- if # If there is a rule matching these criteria with defined value, we can skip it. >- Koha::CirculationRules->search( >- { >- branchcode => $rule->branchcode, >- categorycode => $rule->categorycode, >- itemtype => $rule->itemtype, >- rule_name => $key, >- } >- )->count; >- >- my $derived_rule = Koha::CirculationRules->get_effective_rule( >- { >- branchcode => $rule->branchcode, >- categorycode => $rule->categorycode, >- itemtype => $rule->itemtype, >- rule_name => $key, >- } >- ); >- my $value = >- $derived_rule >- ? $derived_rule->rule_value // $default_rule_values{$key} >- : $default_rule_values{$key}; >- >- Koha::CirculationRule->new( >- { >- branchcode => $rule->branchcode, >- categorycode => $rule->categorycode, >- itemtype => $rule->itemtype, >- rule_name => $key, >- rule_value => $value, >- } >- )->store(); >+ my $sth = $dbh->prepare( >+ q{ >+ SELECT codes.branchcode, codes.categorycode, codes.itemtype >+ FROM circulation_rules codes >+ WHERE codes.rule_name = 'fine' >+ AND NOT EXISTS >+ (SELECT NULL FROM circulation_rules cr >+ WHERE cr.rule_name = ? >+ AND cr.branchcode <=> codes.branchcode >+ AND cr.categorycode <=> codes.categorycode >+ AND cr.itemtype <=> codes.itemtype) >+ } >+ ); >+ my $insert_sth = $dbh->prepare( >+ q{ >+ INSERT IGNORE INTO circulation_rules (branchcode, categorycode, itemtype, rule_name, rule_value) >+ SELECT codes.branchcode, codes.categorycode, codes.itemtype, ?, IFNULL(effective.rule_value, ?) >+ FROM circulation_rules codes >+ LEFT JOIN circulation_rules effective >+ ON effective.rule_name = ? >+ AND (effective.branchcode <=> codes.branchcode OR effective.branchcode IS NULL) >+ AND (effective.categorycode <=> codes.categorycode OR effective.categorycode IS NULL) >+ AND (effective.itemtype <=> codes.itemtype OR effective.itemtype IS NULL) >+ WHERE codes.branchcode <=> ? AND codes.categorycode <=> ? AND codes.itemtype <=> ? AND codes.rule_name = 'fine' >+ ORDER BY effective.branchcode DESC, effective.categorycode DESC, effective.itemtype DESC >+ LIMIT 1 >+ } >+ ); >+ my ( $branchcode, $categorycode, $itemtype ); >+ while ( my ( $rule_name, $rule_value ) = each(%default_rule_values) ) { >+ $sth->execute($rule_name); >+ $sth->bind_columns( \( $branchcode, $categorycode, $itemtype ) ); >+ while ( $sth->fetch ) { >+ $insert_sth->execute( $rule_name, $rule_value, $rule_name, $branchcode, $categorycode, $itemtype ); > } > } > > say $out "Set derived values for blank circulation rules that weren't saved to the database"; > }, >-} >+}; >-- >2.34.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 Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 33847
:
151764
|
152339
|
152613
|
159087
|
159410
|
159411
|
159428