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

(-)a/C4/Circulation.pm (-18 / +16 lines)
Lines 1989-2006 sub AddReturn { Link Here
1989
        my $fix = _FixOverduesOnReturn($borrowernumber, $item->{itemnumber}, $exemptfine, $dropbox);
1989
        my $fix = _FixOverduesOnReturn($borrowernumber, $item->{itemnumber}, $exemptfine, $dropbox);
1990
        defined($fix) or warn "_FixOverduesOnReturn($borrowernumber, $item->{itemnumber}...) failed!";  # zero is OK, check defined
1990
        defined($fix) or warn "_FixOverduesOnReturn($borrowernumber, $item->{itemnumber}...) failed!";  # zero is OK, check defined
1991
1991
1992
        my $newdebardate;
1992
        if ( $issue and $issue->is_overdue ) {
1993
        if ( $issue and $issue->is_overdue ) {
1993
        # fix fine days
1994
            # fix fine days
1994
            $today = dt_from_string($return_date) if $return_date;
1995
            $today = dt_from_string($return_date) if $return_date;
1995
            $today = $dropboxdate if $dropbox;
1996
            $today = $dropboxdate if $dropbox;
1996
            my ($debardate,$reminder) = _debar_user_on_return( $patron_unblessed, $item, dt_from_string($issue->date_due), $today );
1997
            $newdebardate = _debar_user_on_return( $patron_unblessed, $item, dt_from_string($issue->date_due), $today );
1997
            if ($reminder){
1998
1998
                $messages->{'PrevDebarred'} = $debardate;
1999
            if ( $newdebardate ) {
1999
            } else {
2000
                $messages->{'Debarred'} = $newdebardate;
2000
                $messages->{'Debarred'} = $debardate if $debardate;
2001
            }
2001
            }
2002
        }
2002
        # there's no overdue on the item but borrower had been previously debarred
2003
        # there's no overdue on the item but borrower had been previously debarred
2003
        } elsif ( $issue->date_due and $patron->debarred ) {
2004
        if ( $patron->debarred ) {
2004
             if ( $patron->debarred eq "9999-12-31") {
2005
             if ( $patron->debarred eq "9999-12-31") {
2005
                $messages->{'ForeverDebarred'} = $patron->debarred;
2006
                $messages->{'ForeverDebarred'} = $patron->debarred;
2006
             } else {
2007
             } else {
Lines 2194-2199 Internal function, called only by AddReturn that calculates and updates Link Here
2194
2195
2195
Should only be called for overdue returns
2196
Should only be called for overdue returns
2196
2197
2198
Only returns a valid date if there is a new (or extended) debarment.
2199
2197
=cut
2200
=cut
2198
2201
2199
sub _debar_user_on_return {
2202
sub _debar_user_on_return {
Lines 2237-2243 sub _debar_user_on_return { Link Here
2237
                  if DateTime::Duration->compare( $max_sd, $suspension_days ) < 0;
2240
                  if DateTime::Duration->compare( $max_sd, $suspension_days ) < 0;
2238
            }
2241
            }
2239
2242
2240
            my ( $has_been_extended, $is_a_reminder );
2243
            my ( $has_been_extended );
2241
            if ( C4::Context->preference('CumulativeRestrictionPeriods') and $borrower->{debarred} ) {
2244
            if ( C4::Context->preference('CumulativeRestrictionPeriods') and $borrower->{debarred} ) {
2242
                my $debarment = @{ GetDebarments( { borrowernumber => $borrower->{borrowernumber}, type => 'SUSPENSION' } ) }[0];
2245
                my $debarment = @{ GetDebarments( { borrowernumber => $borrower->{borrowernumber}, type => 'SUSPENSION' } ) }[0];
2243
                if ( $debarment ) {
2246
                if ( $debarment ) {
Lines 2271-2287 sub _debar_user_on_return { Link Here
2271
                expiration     => $new_debar_dt->ymd(),
2274
                expiration     => $new_debar_dt->ymd(),
2272
                type           => 'SUSPENSION',
2275
                type           => 'SUSPENSION',
2273
            });
2276
            });
2274
            # if borrower was already debarred but does not get an extra debarment
2277
2278
            # Only return a valid date if there is a new (or extented) debarment
2275
            my $patron = Koha::Patrons->find( $borrower->{borrowernumber} );
2279
            my $patron = Koha::Patrons->find( $borrower->{borrowernumber} );
2276
            my $new_debarment_str;
2280
            if ( $borrower->{debarred} ne $patron->is_debarred or $has_been_extended ) {
2277
            if ( $borrower->{debarred} eq $patron->is_debarred ) {
2281
                # FIXME Should return a DateTime object
2278
                $is_a_reminder = 1;
2282
                return $new_debar_dt->ymd();
2279
                $new_debarment_str = $borrower->{debarred};
2280
            } else {
2281
                $new_debarment_str = $new_debar_dt->ymd();
2282
            }
2283
            }
2283
            # FIXME Should return a DateTime object
2284
            return $new_debarment_str, $is_a_reminder;
2285
        }
2284
        }
2286
    }
2285
    }
2287
    return;
2286
    return;
2288
- 

Return to bug 14784