Lines 1-41
Link Here
|
1 |
use Modern::Perl; |
1 |
use Modern::Perl; |
2 |
|
2 |
|
3 |
return { |
3 |
return { |
4 |
bug_number => "29012", |
4 |
bug_number => "29012/33847", # dbrev fixed on report 33847 |
5 |
description => "Some rules are not saved when left blank while editing a 'rule' line in smart-rules.pl", |
5 |
description => "Some rules are not saved when left blank while editing a 'rule' line in smart-rules.pl", |
6 |
up => sub { |
6 |
up => sub { |
7 |
my ($args) = @_; |
7 |
my ($args) = @_; |
8 |
my ($dbh, $out) = @$args{qw(dbh out)}; |
8 |
my ( $dbh, $out ) = @$args{qw(dbh out)}; |
9 |
my %default_rule_values = ( |
9 |
my %default_rule_values = ( |
10 |
issuelength => 0, |
10 |
issuelength => 0, |
11 |
hardduedate => '', |
11 |
hardduedate => q{}, |
12 |
unseen_renewals_allowed => '', |
12 |
unseen_renewals_allowed => q{}, |
13 |
rentaldiscount => 0, |
13 |
rentaldiscount => 0, |
14 |
decreaseloanholds => '', |
14 |
decreaseloanholds => q{}, |
15 |
); |
15 |
); |
16 |
while (my ($rule_name, $rule_value) = each (%default_rule_values)) { |
16 |
|
17 |
$dbh->do(q{ |
17 |
my $sth = $dbh->prepare( |
18 |
INSERT IGNORE INTO circulation_rules (branchcode, categorycode, itemtype, rule_name, rule_value) |
18 |
q{ |
19 |
SELECT branchcode, categorycode, itemtype, ?, ? FROM circulation_rules cr |
19 |
SELECT codes.branchcode, codes.categorycode, codes.itemtype |
20 |
WHERE EXISTS ( |
20 |
FROM circulation_rules codes |
21 |
SELECT * FROM circulation_rules cr2 |
21 |
WHERE codes.rule_name = 'fine' |
22 |
WHERE |
22 |
AND NOT EXISTS |
23 |
cr2.rule_name="suspension_chargeperiod" |
23 |
(SELECT NULL FROM circulation_rules cr |
24 |
AND ( (cr2.branchcode=cr.branchcode) OR ( ISNULL(cr2.branchcode) AND ISNULL(cr.branchcode) ) ) |
24 |
WHERE cr.rule_name = ? |
25 |
AND ( (cr2.categorycode=cr.categorycode) OR ( ISNULL(cr2.categorycode) AND ISNULL(cr.categorycode) ) ) |
25 |
AND cr.branchcode <=> codes.branchcode |
26 |
AND ( (cr2.itemtype=cr.itemtype) OR ( ISNULL(cr2.itemtype) AND ISNULL(cr.itemtype) ) ) |
26 |
AND cr.categorycode <=> codes.categorycode |
27 |
) |
27 |
AND cr.itemtype <=> codes.itemtype) |
28 |
AND NOT EXISTS ( |
28 |
} |
29 |
SELECT * FROM circulation_rules cr2 |
29 |
); |
30 |
WHERE |
30 |
my $insert_sth = $dbh->prepare( |
31 |
cr2.rule_name=? |
31 |
q{ |
32 |
AND ( (cr2.branchcode=cr.branchcode) OR ( ISNULL(cr2.branchcode) AND ISNULL(cr.branchcode) ) ) |
32 |
INSERT IGNORE INTO circulation_rules (branchcode, categorycode, itemtype, rule_name, rule_value) |
33 |
AND ( (cr2.categorycode=cr.categorycode) OR ( ISNULL(cr2.categorycode) AND ISNULL(cr.categorycode) ) ) |
33 |
SELECT codes.branchcode, codes.categorycode, codes.itemtype, ?, IFNULL(effective.rule_value, ?) |
34 |
AND ( (cr2.itemtype=cr.itemtype) OR ( ISNULL(cr2.itemtype) AND ISNULL(cr.itemtype) ) ) |
34 |
FROM circulation_rules codes |
35 |
) |
35 |
LEFT JOIN circulation_rules effective |
36 |
GROUP BY branchcode, categorycode, itemtype |
36 |
ON effective.rule_name = ? |
37 |
}, undef, $rule_name, $rule_value, $rule_name); |
37 |
AND (effective.branchcode <=> codes.branchcode OR effective.branchcode IS NULL) |
|
|
38 |
AND (effective.categorycode <=> codes.categorycode OR effective.categorycode IS NULL) |
39 |
AND (effective.itemtype <=> codes.itemtype OR effective.itemtype IS NULL) |
40 |
WHERE codes.branchcode <=> ? AND codes.categorycode <=> ? AND codes.itemtype <=> ? AND codes.rule_name = 'fine' |
41 |
ORDER BY effective.branchcode DESC, effective.categorycode DESC, effective.itemtype DESC |
42 |
LIMIT 1 |
38 |
} |
43 |
} |
39 |
say $out "Add default values for blank circulation rules that weren't saved to the database"; |
44 |
); |
|
|
45 |
my ( $branchcode, $categorycode, $itemtype ); |
46 |
while ( my ( $rule_name, $rule_value ) = each(%default_rule_values) ) { |
47 |
$sth->execute($rule_name); |
48 |
$sth->bind_columns( \( $branchcode, $categorycode, $itemtype ) ); |
49 |
while ( $sth->fetch ) { |
50 |
$insert_sth->execute( $rule_name, $rule_value, $rule_name, $branchcode, $categorycode, $itemtype ); |
51 |
} |
52 |
} |
53 |
|
54 |
say $out "Set derived values for blank circulation rules that weren't saved to the database"; |
40 |
}, |
55 |
}, |
41 |
} |
56 |
}; |
42 |
- |
|
|