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

(-)a/C4/Circulation.pm (-7 / +13 lines)
Lines 2199-2205 C<$item> item hashref Link Here
2199
2199
2200
C<$datedue> date due DateTime object
2200
C<$datedue> date due DateTime object
2201
2201
2202
C<$today> DateTime object representing the return time
2202
C<$return_date> DateTime object representing the return time
2203
2203
2204
Internal function, called only by AddReturn that calculates and updates
2204
Internal function, called only by AddReturn that calculates and updates
2205
 the user fine days, and debars him if necessary.
2205
 the user fine days, and debars him if necessary.
Lines 2209-2215 Should only be called for overdue returns Link Here
2209
=cut
2209
=cut
2210
2210
2211
sub _debar_user_on_return {
2211
sub _debar_user_on_return {
2212
    my ( $borrower, $item, $dt_due, $dt_today ) = @_;
2212
    my ( $borrower, $item, $dt_due, $return_date ) = @_;
2213
2213
2214
    my $branchcode = _GetCircControlBranch( $item, $borrower );
2214
    my $branchcode = _GetCircControlBranch( $item, $borrower );
2215
2215
Lines 2222-2228 sub _debar_user_on_return { Link Here
2222
    );
2222
    );
2223
    my $finedays = $issuing_rule ? $issuing_rule->finedays : undef;
2223
    my $finedays = $issuing_rule ? $issuing_rule->finedays : undef;
2224
    my $unit     = $issuing_rule ? $issuing_rule->lengthunit : undef;
2224
    my $unit     = $issuing_rule ? $issuing_rule->lengthunit : undef;
2225
    my $chargeable_units = C4::Overdues::get_chargeable_units($unit, $dt_due, $dt_today, $branchcode);
2225
    my $chargeable_units = C4::Overdues::get_chargeable_units($unit, $dt_due, $return_date, $branchcode);
2226
2226
2227
    if ($finedays) {
2227
    if ($finedays) {
2228
2228
Lines 2249-2263 sub _debar_user_on_return { Link Here
2249
                  if DateTime::Duration->compare( $max_sd, $suspension_days ) < 0;
2249
                  if DateTime::Duration->compare( $max_sd, $suspension_days ) < 0;
2250
            }
2250
            }
2251
2251
2252
            my ( $has_been_extended, $is_a_reminder );
2252
            if ( C4::Context->preference('CumulativeRestrictionPeriods') and $borrower->{debarred} ) {
2253
            if ( C4::Context->preference('CumulativeRestrictionPeriods') and $borrower->{debarred} ) {
2253
                my $debarment = @{ GetDebarments( { borrowernumber => $borrower->{borrowernumber}, type => 'SUSPENSION' } ) }[0];
2254
                my $debarment = @{ GetDebarments( { borrowernumber => $borrower->{borrowernumber}, type => 'SUSPENSION' } ) }[0];
2254
                if ( $debarment ) {
2255
                if ( $debarment ) {
2255
                    $return_date = dt_from_string( $debarment->{expiration}, 'sql' );
2256
                    $return_date = dt_from_string( $debarment->{expiration}, 'sql' );
2257
                    $has_been_extended = 1;
2256
                }
2258
                }
2257
            }
2259
            }
2258
2260
2259
            my $new_debar_dt =
2261
            my $new_debar_dt =
2260
              $dt_today->clone()->add_duration( $suspension_days );
2262
              $return_date->clone()->add_duration( $suspension_days );
2261
2263
2262
            Koha::Patron::Debarments::AddUniqueDebarment({
2264
            Koha::Patron::Debarments::AddUniqueDebarment({
2263
                borrowernumber => $borrower->{borrowernumber},
2265
                borrowernumber => $borrower->{borrowernumber},
Lines 2266-2275 sub _debar_user_on_return { Link Here
2266
            });
2268
            });
2267
            # if borrower was already debarred but does not get an extra debarment
2269
            # if borrower was already debarred but does not get an extra debarment
2268
            my $patron = Koha::Patrons->find( $borrower->{borrowernumber} );
2270
            my $patron = Koha::Patrons->find( $borrower->{borrowernumber} );
2271
            my $new_debarment_str;
2269
            if ( $borrower->{debarred} eq $patron->is_debarred ) {
2272
            if ( $borrower->{debarred} eq $patron->is_debarred ) {
2270
                return ($borrower->{debarred},1);
2273
                $is_a_reminder = 1;
2274
                $new_debarment_str = $borrower->{debarred};
2275
            } else {
2276
                $new_debarment_str = $new_debar_dt->ymd();
2271
            }
2277
            }
2272
            return $new_debar_dt->ymd();
2278
            # FIXME Should return a DateTime object
2279
            return $new_debarment_str, $is_a_reminder;
2273
        }
2280
        }
2274
    }
2281
    }
2275
    return;
2282
    return;
2276
- 

Return to bug 14146