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

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

Return to bug 14784