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

(-)a/C4/Circulation.pm (-18 / +12 lines)
Lines 2064-2077 sub AddReturn { Link Here
2064
2064
2065
        if ( $issue and $issue->is_overdue($return_date) ) {
2065
        if ( $issue and $issue->is_overdue($return_date) ) {
2066
        # fix fine days
2066
        # fix fine days
2067
            my ($debardate,$reminder) = _debar_user_on_return( $patron_unblessed, $item->unblessed, dt_from_string($issue->date_due), $return_date );
2067
            my $newdebardate = _debar_user_on_return( $patron_unblessed, $item->unblessed, dt_from_string($issue->date_due), $return_date );
2068
            if ($reminder){
2068
2069
                $messages->{'PrevDebarred'} = $debardate;
2069
            if ( $newdebardate ) {
2070
            } else {
2070
                $messages->{'Debarred'} = $newdebardate;
2071
                $messages->{'Debarred'} = $debardate if $debardate;
2072
            }
2071
            }
2072
        }
2073
        # there's no overdue on the item but borrower had been previously debarred
2073
        # there's no overdue on the item but borrower had been previously debarred
2074
        } elsif ( $issue->date_due and $patron->debarred ) {
2074
        if ( $patron->debarred ) {
2075
             if ( $patron->debarred eq "9999-12-31") {
2075
             if ( $patron->debarred eq "9999-12-31") {
2076
                $messages->{'ForeverDebarred'} = $patron->debarred;
2076
                $messages->{'ForeverDebarred'} = $patron->debarred;
2077
             } else {
2077
             } else {
Lines 2361-2367 sub _calculate_new_debar_dt { Link Here
2361
        else {
2361
        else {
2362
            $new_debar_dt = $return_date->clone()->add_duration($suspension_days);
2362
            $new_debar_dt = $return_date->clone()->add_duration($suspension_days);
2363
        }
2363
        }
2364
        return $new_debar_dt;
2364
        return ($new_debar_dt, $has_been_extended);
2365
    }
2365
    }
2366
    return;
2366
    return;
2367
}
2367
}
Lines 2371-2377 sub _debar_user_on_return { Link Here
2371
2371
2372
    $return_date //= dt_from_string();
2372
    $return_date //= dt_from_string();
2373
2373
2374
    my $new_debar_dt = _calculate_new_debar_dt ($borrower, $item, $dt_due, $return_date);
2374
    my ($new_debar_dt, $has_been_extended) = _calculate_new_debar_dt ($borrower, $item, $dt_due, $return_date);
2375
2375
2376
    return unless $new_debar_dt;
2376
    return unless $new_debar_dt;
2377
2377
Lines 2380-2396 sub _debar_user_on_return { Link Here
2380
        expiration     => $new_debar_dt->ymd(),
2380
        expiration     => $new_debar_dt->ymd(),
2381
        type           => 'SUSPENSION',
2381
        type           => 'SUSPENSION',
2382
    });
2382
    });
2383
    # if borrower was already debarred but does not get an extra debarment
2383
    # Only return a valid date if there is a new (or extented) debarment
2384
    my $patron = Koha::Patrons->find( $borrower->{borrowernumber} );
2384
    my $patron = Koha::Patrons->find( $borrower->{borrowernumber} );
2385
    my ($new_debarment_str, $is_a_reminder);
2385
    if ( ( $borrower->{debarred} && $borrower->{debarred} ne $patron->is_debarred ) or $has_been_extended ) {
2386
    if ( $borrower->{debarred} && $borrower->{debarred} eq $patron->is_debarred ) {
2386
        # FIXME Should return a DateTime object
2387
        $is_a_reminder = 1;
2387
        return $new_debar_dt->ymd();
2388
        $new_debarment_str = $borrower->{debarred};
2389
    } else {
2390
        $new_debarment_str = $new_debar_dt->ymd();
2391
    }
2388
    }
2392
    # FIXME Should return a DateTime object
2393
    return $new_debarment_str, $is_a_reminder;
2394
}
2389
}
2395
2390
2396
=head2 _FixOverduesOnReturn
2391
=head2 _FixOverduesOnReturn
2397
- 

Return to bug 14784