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

(-)a/C4/Circulation.pm (-5 / +9 lines)
Lines 2668-2673 sub CanBookBeRenewed { Link Here
2668
2668
2669
    my $dbh    = C4::Context->dbh;
2669
    my $dbh    = C4::Context->dbh;
2670
    my $renews = 1;
2670
    my $renews = 1;
2671
    my $auto_renew = 0;
2671
2672
2672
    my $item      = Koha::Items->find($itemnumber)      or return ( 0, 'no_item' );
2673
    my $item      = Koha::Items->find($itemnumber)      or return ( 0, 'no_item' );
2673
    my $issue = $item->checkout or return ( 0, 'no_checkout' );
2674
    my $issue = $item->checkout or return ( 0, 'no_checkout' );
Lines 2761-2777 sub CanBookBeRenewed { Link Here
2761
                return ( 0, "too_soon" );
2762
                return ( 0, "too_soon" );
2762
            }
2763
            }
2763
            elsif ( $issue->auto_renew ) {
2764
            elsif ( $issue->auto_renew ) {
2764
                return ( 0, "auto_renew" );
2765
                $auto_renew = 1;
2765
            }
2766
            }
2766
        }
2767
        }
2767
2768
2768
        # Fallback for automatic renewals:
2769
        # Fallback for automatic renewals:
2769
        # If norenewalbefore is undef, don't renew before due date.
2770
        # If norenewalbefore is undef, don't renew before due date.
2770
        if ( $issue->auto_renew ) {
2771
        if ( $issue->auto_renew && !$auto_renew ) {
2771
            my $now = dt_from_string;
2772
            my $now = dt_from_string;
2772
            return ( 0, "auto_renew" )
2773
            if( $now >= dt_from_string( $issue->date_due, 'sql' ) ){
2773
              if $now >= dt_from_string( $issue->date_due, 'sql' );
2774
                $auto_renew = 1;
2774
            return ( 0, "auto_too_soon" );
2775
            } else {
2776
                return ( 0, "auto_too_soon" );
2777
            }
2775
        }
2778
        }
2776
    }
2779
    }
2777
2780
Lines 2841-2846 sub CanBookBeRenewed { Link Here
2841
        }
2844
        }
2842
    }
2845
    }
2843
    return ( 0, "on_reserve" ) if $resfound;    # '' when no hold was found
2846
    return ( 0, "on_reserve" ) if $resfound;    # '' when no hold was found
2847
    return ( 0, "auto_renew" ) if $auto_renew && !$override_limit;  # 0 if auto-renewal should not succeed
2844
2848
2845
    return ( 1, undef );
2849
    return ( 1, undef );
2846
}
2850
}
(-)a/t/db_dependent/Circulation.t (-2 / +6 lines)
Lines 277-283 $dbh->do( Link Here
277
277
278
my ( $reused_itemnumber_1, $reused_itemnumber_2 );
278
my ( $reused_itemnumber_1, $reused_itemnumber_2 );
279
subtest "CanBookBeRenewed tests" => sub {
279
subtest "CanBookBeRenewed tests" => sub {
280
    plan tests => 75;
280
    plan tests => 77;
281
281
282
    C4::Context->set_preference('ItemsDeniedRenewal','');
282
    C4::Context->set_preference('ItemsDeniedRenewal','');
283
    # Generate test biblio
283
    # Generate test biblio
Lines 617-622 subtest "CanBookBeRenewed tests" => sub { Link Here
617
    ( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrowernumber, $item_4->itemnumber, 1 );
617
    ( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrowernumber, $item_4->itemnumber, 1 );
618
    is( $renewokay, 0, 'Still should not be able to renew' );
618
    is( $renewokay, 0, 'Still should not be able to renew' );
619
    is( $error, 'on_reserve', 'returned code is on_reserve, auto_too_soon limit is overridden' );
619
    is( $error, 'on_reserve', 'returned code is on_reserve, auto_too_soon limit is overridden' );
620
    $dbh->do('UPDATE issuingrules SET norenewalbefore = 0');
621
    ( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrowernumber, $item_4->itemnumber, 1 );
622
    is( $renewokay, 0, 'Still should not be able to renew' );
623
    is( $error, 'on_reserve', 'returned code is on_reserve, auto_renew only happens if not on reserve' );
624
    ModReserveCancelAll($item_4->itemnumber, $reserving_borrowernumber);
620
625
621
626
622
627
623
- 

Return to bug 19014