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

(-)a/C4/Circulation.pm (-18 / +16 lines)
Lines 2016-2032 sub AddReturn { Link Here
2016
        my $fix = _FixOverduesOnReturn($borrowernumber, $item->{itemnumber}, $exemptfine, $dropbox);
2016
        my $fix = _FixOverduesOnReturn($borrowernumber, $item->{itemnumber}, $exemptfine, $dropbox);
2017
        defined($fix) or warn "_FixOverduesOnReturn($borrowernumber, $item->{itemnumber}...) failed!";  # zero is OK, check defined
2017
        defined($fix) or warn "_FixOverduesOnReturn($borrowernumber, $item->{itemnumber}...) failed!";  # zero is OK, check defined
2018
2018
2019
        my $newdebardate;
2019
        if ( $issue and $issue->is_overdue ) {
2020
        if ( $issue and $issue->is_overdue ) {
2020
        # fix fine days
2021
            # fix fine days
2021
            $today = $dropboxdate if $dropbox;
2022
            $today = $dropboxdate if $dropbox;
2022
            my ($debardate,$reminder) = _debar_user_on_return( $patron_unblessed, $item, dt_from_string($issue->date_due), $today );
2023
            $newdebardate = _debar_user_on_return( $patron_unblessed, $item, dt_from_string($issue->date_due), $today );
2023
            if ($reminder){
2024
2024
                $messages->{'PrevDebarred'} = $debardate;
2025
            if ( $newdebardate ) {
2025
            } else {
2026
                $messages->{'Debarred'} = $newdebardate;
2026
                $messages->{'Debarred'} = $debardate if $debardate;
2027
            }
2027
            }
2028
        }
2028
        # there's no overdue on the item but borrower had been previously debarred
2029
        # there's no overdue on the item but borrower had been previously debarred
2029
        } elsif ( $issue->date_due and $patron->debarred ) {
2030
        if ( $issue->date_due and $patron->debarred and $newdebardate ) {
2030
             if ( $patron->debarred eq "9999-12-31") {
2031
             if ( $patron->debarred eq "9999-12-31") {
2031
                $messages->{'ForeverDebarred'} = $patron->debarred;
2032
                $messages->{'ForeverDebarred'} = $patron->debarred;
2032
             } else {
2033
             } else {
Lines 2220-2225 Internal function, called only by AddReturn that calculates and updates Link Here
2220
2221
2221
Should only be called for overdue returns
2222
Should only be called for overdue returns
2222
2223
2224
Only returns a valid date if there is a new (or extended) debarment.
2225
2223
=cut
2226
=cut
2224
2227
2225
sub _debar_user_on_return {
2228
sub _debar_user_on_return {
Lines 2263-2269 sub _debar_user_on_return { Link Here
2263
                  if DateTime::Duration->compare( $max_sd, $suspension_days ) < 0;
2266
                  if DateTime::Duration->compare( $max_sd, $suspension_days ) < 0;
2264
            }
2267
            }
2265
2268
2266
            my ( $has_been_extended, $is_a_reminder );
2269
            my ( $has_been_extended );
2267
            if ( C4::Context->preference('CumulativeRestrictionPeriods') and $borrower->{debarred} ) {
2270
            if ( C4::Context->preference('CumulativeRestrictionPeriods') and $borrower->{debarred} ) {
2268
                my $debarment = @{ GetDebarments( { borrowernumber => $borrower->{borrowernumber}, type => 'SUSPENSION' } ) }[0];
2271
                my $debarment = @{ GetDebarments( { borrowernumber => $borrower->{borrowernumber}, type => 'SUSPENSION' } ) }[0];
2269
                if ( $debarment ) {
2272
                if ( $debarment ) {
Lines 2280-2296 sub _debar_user_on_return { Link Here
2280
                expiration     => $new_debar_dt->ymd(),
2283
                expiration     => $new_debar_dt->ymd(),
2281
                type           => 'SUSPENSION',
2284
                type           => 'SUSPENSION',
2282
            });
2285
            });
2283
            # if borrower was already debarred but does not get an extra debarment
2286
2287
            # Only return a valid date if there is a new (or extented) debarment
2284
            my $patron = Koha::Patrons->find( $borrower->{borrowernumber} );
2288
            my $patron = Koha::Patrons->find( $borrower->{borrowernumber} );
2285
            my $new_debarment_str;
2289
            if ( $borrower->{debarred} ne $patron->is_debarred or $has_been_extended ) {
2286
            if ( $borrower->{debarred} eq $patron->is_debarred ) {
2290
                # FIXME Should return a DateTime object
2287
                $is_a_reminder = 1;
2291
                return $new_debar_dt->ymd();
2288
                $new_debarment_str = $borrower->{debarred};
2289
            } else {
2290
                $new_debarment_str = $new_debar_dt->ymd();
2291
            }
2292
            }
2292
            # FIXME Should return a DateTime object
2293
            return $new_debarment_str, $is_a_reminder;
2294
        }
2293
        }
2295
    }
2294
    }
2296
    return;
2295
    return;
2297
- 

Return to bug 14784