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 |
- |
|
|