@@ -, +, @@ -- A previous restriction reminder will appear No previous restriction reminder will appear --- C4/Circulation.pm | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) --- a/C4/Circulation.pm +++ a/C4/Circulation.pm @@ -2051,14 +2051,14 @@ sub AddReturn { if ( $issue and $issue->is_overdue($return_date) ) { # fix fine days - my ($debardate,$reminder) = _debar_user_on_return( $patron_unblessed, $item->unblessed, dt_from_string($issue->date_due), $return_date ); - if ($reminder){ - $messages->{'PrevDebarred'} = $debardate; - } else { - $messages->{'Debarred'} = $debardate if $debardate; + my $newdebardate = _debar_user_on_return( $patron_unblessed, $item->unblessed, dt_from_string($issue->date_due), $return_date ); + + if ( $newdebardate ) { + $messages->{'Debarred'} = $newdebardate; } + } # there's no overdue on the item but borrower had been previously debarred - } elsif ( $issue->date_due and $patron->debarred ) { + if ( $patron->debarred ) { if ( $patron->debarred eq "9999-12-31") { $messages->{'ForeverDebarred'} = $patron->debarred; } else { @@ -2360,7 +2360,7 @@ sub _calculate_new_debar_dt { else { $new_debar_dt = $return_date->clone()->add_duration($suspension_days); } - return $new_debar_dt; + return ($new_debar_dt, $has_been_extended); } return; } @@ -2370,7 +2370,7 @@ sub _debar_user_on_return { $return_date //= dt_from_string(); - my $new_debar_dt = _calculate_new_debar_dt ($borrower, $item, $dt_due, $return_date); + my ($new_debar_dt, $has_been_extended) = _calculate_new_debar_dt ($borrower, $item, $dt_due, $return_date); return unless $new_debar_dt; @@ -2379,17 +2379,12 @@ sub _debar_user_on_return { expiration => $new_debar_dt->ymd(), type => 'SUSPENSION', }); - # if borrower was already debarred but does not get an extra debarment + # Only return a valid date if there is a new (or extented) debarment my $patron = Koha::Patrons->find( $borrower->{borrowernumber} ); - my ($new_debarment_str, $is_a_reminder); - if ( $borrower->{debarred} && $borrower->{debarred} eq $patron->is_debarred ) { - $is_a_reminder = 1; - $new_debarment_str = $borrower->{debarred}; - } else { - $new_debarment_str = $new_debar_dt->ymd(); + if ( ( $borrower->{debarred} && $borrower->{debarred} ne $patron->is_debarred ) or $has_been_extended ) { + # FIXME Should return a DateTime object + return $new_debar_dt->ymd(); } - # FIXME Should return a DateTime object - return $new_debarment_str, $is_a_reminder; } =head2 _FixOverduesOnReturn --