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

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

Return to bug 14784