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

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

Return to bug 14146