|
Lines 2083-2096
sub AddReturn {
Link Here
|
| 2083 |
|
2083 |
|
| 2084 |
if ( $issue and $issue->is_overdue($return_date) ) { |
2084 |
if ( $issue and $issue->is_overdue($return_date) ) { |
| 2085 |
# fix fine days |
2085 |
# fix fine days |
| 2086 |
my ($debardate,$reminder) = _debar_user_on_return( $patron_unblessed, $item->unblessed, dt_from_string($issue->date_due), $return_date ); |
2086 |
my $newdebardate = _debar_user_on_return( $patron_unblessed, $item->unblessed, dt_from_string($issue->date_due), $return_date ); |
| 2087 |
if ($reminder){ |
2087 |
|
| 2088 |
$messages->{'PrevDebarred'} = $debardate; |
2088 |
if ( $newdebardate ) { |
| 2089 |
} else { |
2089 |
$messages->{'Debarred'} = $newdebardate; |
| 2090 |
$messages->{'Debarred'} = $debardate if $debardate; |
|
|
| 2091 |
} |
2090 |
} |
|
|
2091 |
} |
| 2092 |
# there's no overdue on the item but borrower had been previously debarred |
2092 |
# there's no overdue on the item but borrower had been previously debarred |
| 2093 |
} elsif ( $issue->date_due and $patron->debarred ) { |
2093 |
if ( $patron->debarred ) { |
| 2094 |
if ( $patron->debarred eq "9999-12-31") { |
2094 |
if ( $patron->debarred eq "9999-12-31") { |
| 2095 |
$messages->{'ForeverDebarred'} = $patron->debarred; |
2095 |
$messages->{'ForeverDebarred'} = $patron->debarred; |
| 2096 |
} else { |
2096 |
} else { |
|
Lines 2380-2386
sub _calculate_new_debar_dt {
Link Here
|
| 2380 |
if ( C4::Context->preference('CumulativeRestrictionPeriods') and $borrower->{debarred} ) { |
2380 |
if ( C4::Context->preference('CumulativeRestrictionPeriods') and $borrower->{debarred} ) { |
| 2381 |
my $debarment = @{ GetDebarments( { borrowernumber => $borrower->{borrowernumber}, type => 'SUSPENSION' } ) }[0]; |
2381 |
my $debarment = @{ GetDebarments( { borrowernumber => $borrower->{borrowernumber}, type => 'SUSPENSION' } ) }[0]; |
| 2382 |
if ( $debarment ) { |
2382 |
if ( $debarment ) { |
| 2383 |
$return_date = dt_from_string( $debarment->{expiration}, 'sql' ); |
2383 |
$return_date = dt_from_string( $debarment->{return_date}, 'sql' ); |
| 2384 |
$has_been_extended = 1; |
2384 |
$has_been_extended = 1; |
| 2385 |
} |
2385 |
} |
| 2386 |
} |
2386 |
} |
|
Lines 2397-2403
sub _calculate_new_debar_dt {
Link Here
|
| 2397 |
else { |
2397 |
else { |
| 2398 |
$new_debar_dt = $return_date->clone()->add_duration($suspension_days); |
2398 |
$new_debar_dt = $return_date->clone()->add_duration($suspension_days); |
| 2399 |
} |
2399 |
} |
| 2400 |
return $new_debar_dt; |
2400 |
return ($new_debar_dt, $has_been_extended); |
| 2401 |
} |
2401 |
} |
| 2402 |
return; |
2402 |
return; |
| 2403 |
} |
2403 |
} |
|
Lines 2407-2413
sub _debar_user_on_return {
Link Here
|
| 2407 |
|
2407 |
|
| 2408 |
$return_date //= dt_from_string(); |
2408 |
$return_date //= dt_from_string(); |
| 2409 |
|
2409 |
|
| 2410 |
my $new_debar_dt = _calculate_new_debar_dt ($borrower, $item, $dt_due, $return_date); |
2410 |
my ($new_debar_dt, $has_been_extended) = _calculate_new_debar_dt ($borrower, $item, $dt_due, $return_date); |
| 2411 |
|
2411 |
|
| 2412 |
return unless $new_debar_dt; |
2412 |
return unless $new_debar_dt; |
| 2413 |
|
2413 |
|
|
Lines 2416-2432
sub _debar_user_on_return {
Link Here
|
| 2416 |
expiration => $new_debar_dt->ymd(), |
2416 |
expiration => $new_debar_dt->ymd(), |
| 2417 |
type => 'SUSPENSION', |
2417 |
type => 'SUSPENSION', |
| 2418 |
}); |
2418 |
}); |
| 2419 |
# if borrower was already debarred but does not get an extra debarment |
2419 |
# Only return a valid date if there is a new (or extented) debarment |
| 2420 |
my $patron = Koha::Patrons->find( $borrower->{borrowernumber} ); |
2420 |
my $patron = Koha::Patrons->find( $borrower->{borrowernumber} ); |
| 2421 |
my ($new_debarment_str, $is_a_reminder); |
2421 |
if ( ( $borrower->{debarred} && $borrower->{debarred} ne $patron->is_debarred ) or $has_been_extended ) { |
| 2422 |
if ( $borrower->{debarred} && $borrower->{debarred} eq $patron->is_debarred ) { |
2422 |
# FIXME Should return a DateTime object |
| 2423 |
$is_a_reminder = 1; |
2423 |
return $new_debar_dt->ymd(); |
| 2424 |
$new_debarment_str = $borrower->{debarred}; |
|
|
| 2425 |
} else { |
| 2426 |
$new_debarment_str = $new_debar_dt->ymd(); |
| 2427 |
} |
2424 |
} |
| 2428 |
# FIXME Should return a DateTime object |
|
|
| 2429 |
return $new_debarment_str, $is_a_reminder; |
| 2430 |
} |
2425 |
} |
| 2431 |
|
2426 |
|
| 2432 |
=head2 _FixOverduesOnReturn |
2427 |
=head2 _FixOverduesOnReturn |
| 2433 |
- |
|
|