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

(-)a/C4/Circulation.pm (-29 / +18 lines)
Lines 2750-2787 sub CanBookBeRenewed { Link Here
2750
        }
2750
        }
2751
    }
2751
    }
2752
2752
2753
    if ( defined $issuing_rule->norenewalbefore
2753
    #NOTE: If norenewalbefore is undef, $soonestrenewal will equal $now
2754
        and $issuing_rule->norenewalbefore ne "" )
2754
    my $soonestrenewal = GetSoonestRenewDate($borrowernumber, $itemnumber);
2755
    {
2755
    my $now = dt_from_string;
2756
2757
        # Calculate soonest renewal by subtracting 'No renewal before' from due date
2758
        my $soonestrenewal = dt_from_string( $issue->date_due, 'sql' )->subtract(
2759
            $issuing_rule->lengthunit => $issuing_rule->norenewalbefore );
2760
2756
2761
        # Depending on syspref reset the exact time, only check the date
2757
    if ( $issue->auto_renew ){
2762
        if ( C4::Context->preference('NoRenewalBeforePrecision') eq 'date'
2758
        if ( $soonestrenewal > $now ){
2763
            and $issuing_rule->lengthunit eq 'days' )
2759
            return ( 0, "auto_too_soon" );
2764
        {
2765
            $soonestrenewal->truncate( to => 'day' );
2766
        }
2760
        }
2767
2761
        else {
2768
        if ( $soonestrenewal > DateTime->now( time_zone => C4::Context->tz() ) )
2762
            #Fallback: if norenewalbefore is undef, don't renew before due date
2769
        {
2763
            if ( dt_from_string( $issue->date_due, 'sql' ) > $now ){
2770
            return ( 0, "auto_too_soon" ) if $issue->auto_renew;
2764
                return ( 0, "auto_too_soon" );
2771
            return ( 0, "too_soon" );
2765
            }
2772
        }
2766
            else {
2773
        elsif ( $issue->auto_renew ) {
2767
                return ( 0, "auto_renew" );
2774
            return ( 0, "auto_renew" );
2768
            }
2775
        }
2769
        }
2776
    }
2770
    }
2777
2771
    else {
2778
    # Fallback for automatic renewals:
2772
        if ( $soonestrenewal > $now ){
2779
    # If norenewalbefore is undef, don't renew before due date.
2773
            return ( 0, "too_soon" );
2780
    if ( $issue->auto_renew ) {
2774
        }
2781
        my $now = dt_from_string;
2782
        return ( 0, "auto_renew" )
2783
          if $now >= dt_from_string( $issue->date_due, 'sql' );
2784
        return ( 0, "auto_too_soon" );
2785
    }
2775
    }
2786
2776
2787
    return ( 1, undef );
2777
    return ( 1, undef );
2788
- 

Return to bug 22333