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

(-)a/C4/Items.pm (-4 / +6 lines)
Lines 1609-1624 sub ToggleNewStatus { Link Here
1609
            }
1609
            }
1610
        }
1610
        }
1611
        if ( defined $age ) {
1611
        if ( defined $age ) {
1612
            if ( defined $rule
1612
            if (
1613
                   defined $rule
1613
                && $unit eq "Hours"
1614
                && $unit eq "Hours"
1614
                && (
1615
                && (   $agefield eq "items.damaged_on"
1615
                    $agefield eq "items.damaged_on"
1616
                    || $agefield eq "items.itemlost_on"
1616
                    || $agefield eq "items.itemlost_on"
1617
                    || $agefield eq "items.withdrawn_on" )
1617
                    || $agefield eq "items.withdrawn_on" )
1618
            ) {
1618
                )
1619
            {
1619
                # Calculate item age based on hours since damaged_on, itemlost_on, withdrawn_on
1620
                # Calculate item age based on hours since damaged_on, itemlost_on, withdrawn_on
1620
                $query .= qq| AND HOUR(TIMEDIFF(NOW(), $agefield)) >= ? |;
1621
                $query .= qq| AND HOUR(TIMEDIFF(NOW(), $agefield)) >= ? |;
1621
            } else {
1622
            } else {
1623
1622
                # Calculate item age based on days
1624
                # Calculate item age based on days
1623
                $query .= qq| AND TO_DAYS(NOW()) - TO_DAYS($agefield) >= ? |;
1625
                $query .= qq| AND TO_DAYS(NOW()) - TO_DAYS($agefield) >= ? |;
1624
            }
1626
            }
(-)a/koha-tmpl/intranet-tmpl/prog/js/automatic_item_modification_by_age.js (-14 / +14 lines)
Lines 49-70 function update_rule_count(){ Link Here
49
    });
49
    });
50
}
50
}
51
51
52
function unit_display(){
52
function unit_display() {
53
    var rules = document.querySelectorAll("input[name='unique_id'");
53
    var rules = document . querySelectorAll("input[name='unique_id'");
54
    for (var i = 0; i < rules.length; i++) {
54
    for ( var i = 0 ; i < rules . length ; i++ ) {
55
        var rule_id = rules[i].value;
55
        var rule_id = rules [i] . value;
56
        if (rule_id) {
56
        if (rule_id) {
57
            var age_field = $("select[name='agefield_" + rule_id + "']").val();
57
            var age_field = $( "select[name='agefield_" + rule_id + "']" ) . val();
58
            if ( age_field == 'items.damaged_on'
58
            if (       age_field == 'items.damaged_on'
59
                || age_field == 'items.itemlost_on'
59
                    || age_field == 'items.itemlost_on'
60
                || age_field == 'items.withdrawn_on' )
60
                    || age_field == 'items.withdrawn_on' )
61
            {
61
                {
62
                $("select[name='ageunit_" + rule_id + "'] option[value='Days']").removeAttr('selected');
62
                    $( "select[name='ageunit_" + rule_id + "'] option[value='Days']" ) . removeAttr('selected');
63
63
64
                $("select[name='ageunit_" + rule_id + "']").attr("disabled", false);
64
                    $( "select[name='ageunit_" + rule_id + "']" ) . attr( "disabled", false );
65
            } else {
65
            } else {
66
                $("select[name='ageunit_" + rule_id + "'] option[value='Days']").attr('selected','selected');
66
                    $( "select[name='ageunit_" + rule_id + "'] option[value='Days']" ) . attr( 'selected', 'selected' );
67
                $("select[name='ageunit_" + rule_id + "']").attr("disabled", true);
67
                    $( "select[name='ageunit_" + rule_id + "']" ) . attr( "disabled", true );
68
            }
68
            }
69
        }
69
        }
70
    }
70
    }
(-)a/t/db_dependent/Items/AutomaticItemModificationByAge.t (-10 / +19 lines)
Lines 332-338 is( $modified_item->new_status, 'agefield_new_value', q|ToggleNewStatus: Age = 2 Link Here
332
332
333
# Play with the unit field
333
# Play with the unit field
334
$dt_today = dt_from_string;
334
$dt_today = dt_from_string;
335
my $hours2ago = dt_from_string->subtract( hours => 2 );
335
my $hours2ago  = dt_from_string->subtract( hours => 2 );
336
my $hours10ago = dt_from_string->subtract( hours => 10 );
336
my $hours10ago = dt_from_string->subtract( hours => 10 );
337
$modified_item->itemlost_on($hours2ago)->store;
337
$modified_item->itemlost_on($hours2ago)->store;
338
$modified_item->dateaccessioned($hours10ago)->store;
338
$modified_item->dateaccessioned($hours10ago)->store;
Lines 350-359 $modified_item->dateaccessioned($hours10ago)->store; Link Here
350
            {
350
            {
351
                field => 'items.new_status',
351
                field => 'items.new_status',
352
                value => 'ageunit_new_value',
352
                value => 'ageunit_new_value',
353
             },
353
            },
354
        ],
354
        ],
355
        age => '5',
355
        age      => '5',
356
        ageunit => 'Hours',
356
        ageunit  => 'Hours',
357
        agefield => 'items.dateaccessioned'
357
        agefield => 'items.dateaccessioned'
358
    },
358
    },
359
);
359
);
Lines 361-381 $modified_item->dateaccessioned($hours10ago)->store; Link Here
361
# Confirm a rule with unit = 'Hours' does not work with fields other than items.damaged_on,
361
# Confirm a rule with unit = 'Hours' does not work with fields other than items.damaged_on,
362
# items.itemlost_on, or items.withdrawn_on
362
# items.itemlost_on, or items.withdrawn_on
363
C4::Items::ToggleNewStatus( { rules => \@rules } );
363
C4::Items::ToggleNewStatus( { rules => \@rules } );
364
$modified_item = Koha::Items->find( $itemnumber );
364
$modified_item = Koha::Items->find($itemnumber);
365
is( $modified_item->new_status, 'agefield_new_value', q|ToggleNewStatus: Age = 5, ageunit = 'Hours', agefield = 'items.dateaccessioned' : The new_status value is not updated|);
365
is(
366
    $modified_item->new_status, 'agefield_new_value',
367
    q|ToggleNewStatus: Age = 5, ageunit = 'Hours', agefield = 'items.dateaccessioned' : The new_status value is not updated|
368
);
366
369
367
# Confirm a rule on a datetime field (items.itemlost_on) with unit = 'Hours' does
370
# Confirm a rule on a datetime field (items.itemlost_on) with unit = 'Hours' does
368
# change an item correctly based on the age in hours
371
# change an item correctly based on the age in hours
369
$rules[0]->{agefield} = 'items.itemlost_on';
372
$rules[0]->{agefield} = 'items.itemlost_on';
370
C4::Items::ToggleNewStatus( { rules => \@rules } );
373
C4::Items::ToggleNewStatus( { rules => \@rules } );
371
$modified_item = Koha::Items->find( $itemnumber );
374
$modified_item = Koha::Items->find($itemnumber);
372
$modified_item->itemlost_on;
375
$modified_item->itemlost_on;
373
is( $modified_item->new_status, 'agefield_new_value', q|ToggleNewStatus: Age = 5, ageunit = 'Hours', agefield = 'items.itemlost_on' : The new_status value is not updated|);
376
is(
377
    $modified_item->new_status, 'agefield_new_value',
378
    q|ToggleNewStatus: Age = 5, ageunit = 'Hours', agefield = 'items.itemlost_on' : The new_status value is not updated|
379
);
374
380
375
$rules[0]->{age} = 1;
381
$rules[0]->{age} = 1;
376
C4::Items::ToggleNewStatus( { rules => \@rules } );
382
C4::Items::ToggleNewStatus( { rules => \@rules } );
377
$modified_item = Koha::Items->find( $itemnumber );
383
$modified_item = Koha::Items->find($itemnumber);
378
is( $modified_item->new_status, 'ageunit_new_value', q|ToggleNewStatus: Age = 1, ageunit = 'Hours', agefield = 'items.itemlost_on' : The new_status value is updated|);
384
is(
385
    $modified_item->new_status, 'ageunit_new_value',
386
    q|ToggleNewStatus: Age = 1, ageunit = 'Hours', agefield = 'items.itemlost_on' : The new_status value is updated|
387
);
379
388
380
# Run twice
389
# Run twice
381
t::lib::Mocks::mock_preference('CataloguingLog', 1);
390
t::lib::Mocks::mock_preference('CataloguingLog', 1);
(-)a/tools/automatic_item_modification_by_age.pl (-4 / +4 lines)
Lines 92-101 if ( $op eq 'update' ) { Link Here
92
            $rule->{agefield} = $age_field ? $age_field : "items.dateaccessioned";
92
            $rule->{agefield} = $age_field ? $age_field : "items.dateaccessioned";
93
        }
93
        }
94
94
95
        for my $age_unit ( @age_units ) {
95
        for my $age_unit (@age_units) {
96
            if ($rule->{agefield} ne 'items.damaged_on'
96
            if (   $rule->{agefield} ne 'items.damaged_on'
97
                && $rule->{agefield} ne 'items.itemlost_on'
97
                && $rule->{agefield} ne 'items.itemlost_on'
98
                && $rule->{agefield} ne 'items.withdrawn_on') {
98
                && $rule->{agefield} ne 'items.withdrawn_on' )
99
            {
99
                $rule->{ageunit} = "Days";
100
                $rule->{ageunit} = "Days";
100
            } else {
101
            } else {
101
                $rule->{ageunit} = $age_unit ? $age_unit : "Days";
102
                $rule->{ageunit} = $age_unit ? $age_unit : "Days";
102
- 

Return to bug 21173