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

(-)a/C4/Circulation.pm (-19 / +13 lines)
Lines 2083-2096 sub AddReturn { Link Here
2083
2083
2084
        if ( $issue and $issue->is_overdue($return_date) ) {
2084
        if ( $issue and $issue->is_overdue($return_date) ) {
2085
        # fix fine days
2085
        # fix fine days
2086
            my ($debardate,$reminder) = _debar_user_on_return( $patron_unblessed, $item->unblessed, dt_from_string($issue->date_due), $return_date );
2086
            my $newdebardate = _debar_user_on_return( $patron_unblessed, $item->unblessed, dt_from_string($issue->date_due), $return_date );
2087
            if ($reminder){
2087
2088
                $messages->{'PrevDebarred'} = $debardate;
2088
            if ( $newdebardate ) {
2089
            } else {
2089
                $messages->{'Debarred'} = $newdebardate;
2090
                $messages->{'Debarred'} = $debardate if $debardate;
2091
            }
2090
            }
2091
        }
2092
        # there's no overdue on the item but borrower had been previously debarred
2092
        # there's no overdue on the item but borrower had been previously debarred
2093
        } elsif ( $issue->date_due and $patron->debarred ) {
2093
        if ( $patron->debarred ) {
2094
             if ( $patron->debarred eq "9999-12-31") {
2094
             if ( $patron->debarred eq "9999-12-31") {
2095
                $messages->{'ForeverDebarred'} = $patron->debarred;
2095
                $messages->{'ForeverDebarred'} = $patron->debarred;
2096
             } else {
2096
             } else {
Lines 2380-2386 sub _calculate_new_debar_dt { Link Here
2380
        if ( C4::Context->preference('CumulativeRestrictionPeriods') and $borrower->{debarred} ) {
2380
        if ( C4::Context->preference('CumulativeRestrictionPeriods') and $borrower->{debarred} ) {
2381
            my $debarment = @{ GetDebarments( { borrowernumber => $borrower->{borrowernumber}, type => 'SUSPENSION' } ) }[0];
2381
            my $debarment = @{ GetDebarments( { borrowernumber => $borrower->{borrowernumber}, type => 'SUSPENSION' } ) }[0];
2382
            if ( $debarment ) {
2382
            if ( $debarment ) {
2383
                $return_date = dt_from_string( $debarment->{expiration}, 'sql' );
2383
                $return_date = dt_from_string( $debarment->{return_date}, 'sql' );
2384
                $has_been_extended = 1;
2384
                $has_been_extended = 1;
2385
            }
2385
            }
2386
        }
2386
        }
Lines 2397-2403 sub _calculate_new_debar_dt { Link Here
2397
        else {
2397
        else {
2398
            $new_debar_dt = $return_date->clone()->add_duration($suspension_days);
2398
            $new_debar_dt = $return_date->clone()->add_duration($suspension_days);
2399
        }
2399
        }
2400
        return $new_debar_dt;
2400
        return ($new_debar_dt, $has_been_extended);
2401
    }
2401
    }
2402
    return;
2402
    return;
2403
}
2403
}
Lines 2407-2413 sub _debar_user_on_return { Link Here
2407
2407
2408
    $return_date //= dt_from_string();
2408
    $return_date //= dt_from_string();
2409
2409
2410
    my $new_debar_dt = _calculate_new_debar_dt ($borrower, $item, $dt_due, $return_date);
2410
    my ($new_debar_dt, $has_been_extended) = _calculate_new_debar_dt ($borrower, $item, $dt_due, $return_date);
2411
2411
2412
    return unless $new_debar_dt;
2412
    return unless $new_debar_dt;
2413
2413
Lines 2416-2432 sub _debar_user_on_return { Link Here
2416
        expiration     => $new_debar_dt->ymd(),
2416
        expiration     => $new_debar_dt->ymd(),
2417
        type           => 'SUSPENSION',
2417
        type           => 'SUSPENSION',
2418
    });
2418
    });
2419
    # if borrower was already debarred but does not get an extra debarment
2419
    # Only return a valid date if there is a new (or extented) debarment
2420
    my $patron = Koha::Patrons->find( $borrower->{borrowernumber} );
2420
    my $patron = Koha::Patrons->find( $borrower->{borrowernumber} );
2421
    my ($new_debarment_str, $is_a_reminder);
2421
    if ( ( $borrower->{debarred} && $borrower->{debarred} ne $patron->is_debarred ) or $has_been_extended ) {
2422
    if ( $borrower->{debarred} && $borrower->{debarred} eq $patron->is_debarred ) {
2422
        # FIXME Should return a DateTime object
2423
        $is_a_reminder = 1;
2423
        return $new_debar_dt->ymd();
2424
        $new_debarment_str = $borrower->{debarred};
2425
    } else {
2426
        $new_debarment_str = $new_debar_dt->ymd();
2427
    }
2424
    }
2428
    # FIXME Should return a DateTime object
2429
    return $new_debarment_str, $is_a_reminder;
2430
}
2425
}
2431
2426
2432
=head2 _FixOverduesOnReturn
2427
=head2 _FixOverduesOnReturn
2433
- 

Return to bug 14784