View | Details | Raw Unified | Return to bug 29012
Collapse All | Expand All

(-)a/admin/smart-rules.pl (-5 / +5 lines)
Lines 258-264 elsif ($op eq 'add') { Link Here
258
    my $maxissueqty = strip_non_numeric( scalar $input->param('maxissueqty') );
258
    my $maxissueqty = strip_non_numeric( scalar $input->param('maxissueqty') );
259
    my $maxonsiteissueqty = strip_non_numeric( scalar $input->param('maxonsiteissueqty') );
259
    my $maxonsiteissueqty = strip_non_numeric( scalar $input->param('maxonsiteissueqty') );
260
    my $renewalsallowed  = $input->param('renewalsallowed');
260
    my $renewalsallowed  = $input->param('renewalsallowed');
261
    my $unseen_renewals_allowed  = $input->param('unseen_renewals_allowed');
261
    my $unseen_renewals_allowed  = $input->param('unseen_renewals_allowed') || 0;
262
    my $renewalperiod    = $input->param('renewalperiod');
262
    my $renewalperiod    = $input->param('renewalperiod');
263
    my $norenewalbefore  = $input->param('norenewalbefore');
263
    my $norenewalbefore  = $input->param('norenewalbefore');
264
    $norenewalbefore = '' if $norenewalbefore =~ /^\s*$/;
264
    $norenewalbefore = '' if $norenewalbefore =~ /^\s*$/;
Lines 272-292 elsif ($op eq 'add') { Link Here
272
    my $holds_per_record = strip_non_numeric( scalar $input->param('holds_per_record') );
272
    my $holds_per_record = strip_non_numeric( scalar $input->param('holds_per_record') );
273
    my $holds_per_day    = strip_non_numeric( scalar $input->param('holds_per_day') );
273
    my $holds_per_day    = strip_non_numeric( scalar $input->param('holds_per_day') );
274
    my $onshelfholds     = $input->param('onshelfholds') || 0;
274
    my $onshelfholds     = $input->param('onshelfholds') || 0;
275
    my $issuelength  = $input->param('issuelength');
275
    my $issuelength  = $input->param('issuelength') || 0;
276
    $issuelength = $issuelength eq q{} ? undef : $issuelength;
276
    $issuelength = $issuelength eq q{} ? undef : $issuelength;
277
    my $daysmode = $input->param('daysmode');
277
    my $daysmode = $input->param('daysmode');
278
    my $lengthunit  = $input->param('lengthunit');
278
    my $lengthunit  = $input->param('lengthunit');
279
    my $hardduedate = $input->param('hardduedate') || undef;
279
    my $hardduedate = $input->param('hardduedate') || '';
280
    $hardduedate = eval { dt_from_string( scalar $hardduedate ) } if ( $hardduedate );
280
    $hardduedate = eval { dt_from_string( scalar $hardduedate ) } if ( $hardduedate );
281
    $hardduedate = output_pref( { dt => $hardduedate, dateonly => 1, dateformat => 'iso' } ) if ( $hardduedate );
281
    $hardduedate = output_pref( { dt => $hardduedate, dateonly => 1, dateformat => 'iso' } ) if ( $hardduedate );
282
    my $hardduedatecompare = $input->param('hardduedatecompare');
282
    my $hardduedatecompare = $input->param('hardduedatecompare');
283
    my $rentaldiscount = $input->param('rentaldiscount');
283
    my $rentaldiscount = $input->param('rentaldiscount') || 0;
284
    my $opacitemholds = $input->param('opacitemholds') || 0;
284
    my $opacitemholds = $input->param('opacitemholds') || 0;
285
    my $article_requests = $input->param('article_requests') || 'no';
285
    my $article_requests = $input->param('article_requests') || 'no';
286
    my $overduefinescap = $input->param('overduefinescap') || '';
286
    my $overduefinescap = $input->param('overduefinescap') || '';
287
    my $cap_fine_to_replacement_price = ($input->param('cap_fine_to_replacement_price') || '') eq 'on';
287
    my $cap_fine_to_replacement_price = ($input->param('cap_fine_to_replacement_price') || '') eq 'on';
288
    my $note = $input->param('note');
288
    my $note = $input->param('note');
289
    my $decreaseloanholds = $input->param('decreaseloanholds') || undef;
289
    my $decreaseloanholds = $input->param('decreaseloanholds') || '';
290
290
291
    my $rules = {
291
    my $rules = {
292
        maxissueqty                   => $maxissueqty,
292
        maxissueqty                   => $maxissueqty,
(-)a/installer/data/mysql/atomicupdate/bug_29012.pl (-1 / +33 lines)
Line 0 Link Here
0
- 
1
use Modern::Perl;
2
3
return {
4
    bug_number => "29012",
5
    description => "Some rules are not saved when left blank while editing a 'rule' line in smart-rules.pl",
6
    up => sub {
7
        my ($args) = @_;
8
        my ($dbh, $out) = @$args{qw(dbh out)};
9
        my %default_rule_values = (
10
            issuelength             => 0,
11
            hardduedate             => '',
12
            unseenrenewalsallowed   => 0,
13
            rentaldiscount          => 0,
14
            decreaseloanholds       => '',
15
        );
16
        while (my ($rule_name, $rule_value) = each (%default_rule_values)) {
17
            $dbh->do(q{
18
                INSERT IGNORE INTO circulation_rules (branchcode, categorycode, itemtype, rule_name, rule_value)
19
                    SELECT branchcode, categorycode, itemtype, ?, ? FROM circulation_rules cr
20
                        WHERE NOT EXISTS (
21
                            SELECT * FROM circulation_rules cr2
22
                                WHERE
23
                                    cr2.rule_name=?
24
                                    AND ( (cr2.branchcode=cr.branchcode) OR ( ISNULL(cr2.branchcode) AND ISNULL(cr.branchcode) ) )
25
                                    AND ( (cr2.categorycode=cr.categorycode) OR ( ISNULL(cr2.categorycode) AND ISNULL(cr.categorycode) ) )
26
                                    AND ( (cr2.itemtype=cr.itemtype) OR ( ISNULL(cr2.itemtype) AND ISNULL(cr.itemtype) ) )
27
                        )
28
                        GROUP BY branchcode, categorycode, itemtype
29
            }, undef, $rule_name, $rule_value, $rule_name);
30
        }
31
        say $out "Add default values for blank circulation rules that weren't saved to the database";
32
    },
33
}

Return to bug 29012