Bug 33028: Perltidy database update script
[koha.git] / installer / data / mysql / atomicupdate / fix_calc_fines_fr-currency_21-11-MT39815.pl
1 use Modern::Perl;
2
3 return {
4     bug_number  => "33028",
5     description => "Fix wrongly formatted values for monetary values in circulation rules",
6     up          => sub {
7         my ($args) = @_;
8         my ( $dbh, $out ) = @$args{qw(dbh out)};
9
10         my $rules = $dbh->selectall_arrayref(
11             q|SELECT * FROM circulation_rules WHERE rule_name IN ('fine', 'overduefinescap', 'recall_overdue_fine', 'article_request_fee')|,
12             { Slice => {} }
13         );
14
15         my $query = $dbh->prepare("UPDATE circulation_rules SET rule_value = ? WHERE id = ?");
16
17         my $error;
18         for my $rule ( @{$rules} ) {
19             my $library =
20                 defined( $rule->{'branchcode'} ) ? $rule->{'branchcode'} : "All";
21             my $category =
22                 defined( $rule->{'categorycode'} )
23                 ? $rule->{'categorycode'}
24                 : "All";
25             my $itemtype =
26                 defined( $rule->{'itemtype'} ) ? $rule->{'itemtype'} : "All";
27             if ( !( $rule->{'rule_value'} =~ /^[0-9.]*$/ ) ) {
28                 $error .=
29                     "Rule ID: $rule->{'id'} ($library-$category-$itemtype) \tRule: $rule->{'rule_name'}\tValue: $rule->{'rule_value'}\n";
30             }
31         }
32         if ($error) {
33             die(
34                 "Circulation rules contain invalid monetary values:\n$error\nPlease fix these before you restart the update."
35             );
36         }
37         say $out "Circulation rules have been validated. All circulation rule values are correctly formatted.";
38     },
39 };