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

(-)a/C4/Circulation.pm (-7 / +13 lines)
Lines 2188-2194 C<$item> item hashref Link Here
2188
2188
2189
C<$datedue> date due DateTime object
2189
C<$datedue> date due DateTime object
2190
2190
2191
C<$today> DateTime object representing the return time
2191
C<$return_date> DateTime object representing the return time
2192
2192
2193
Internal function, called only by AddReturn that calculates and updates
2193
Internal function, called only by AddReturn that calculates and updates
2194
 the user fine days, and debars him if necessary.
2194
 the user fine days, and debars him if necessary.
Lines 2198-2204 Should only be called for overdue returns Link Here
2198
=cut
2198
=cut
2199
2199
2200
sub _debar_user_on_return {
2200
sub _debar_user_on_return {
2201
    my ( $borrower, $item, $dt_due, $dt_today ) = @_;
2201
    my ( $borrower, $item, $dt_due, $return_date ) = @_;
2202
2202
2203
    my $branchcode = _GetCircControlBranch( $item, $borrower );
2203
    my $branchcode = _GetCircControlBranch( $item, $borrower );
2204
2204
Lines 2211-2217 sub _debar_user_on_return { Link Here
2211
    );
2211
    );
2212
    my $finedays = $issuing_rule ? $issuing_rule->finedays : undef;
2212
    my $finedays = $issuing_rule ? $issuing_rule->finedays : undef;
2213
    my $unit     = $issuing_rule ? $issuing_rule->lengthunit : undef;
2213
    my $unit     = $issuing_rule ? $issuing_rule->lengthunit : undef;
2214
    my $chargeable_units = C4::Overdues::get_chargeable_units($unit, $dt_due, $dt_today, $branchcode);
2214
    my $chargeable_units = C4::Overdues::get_chargeable_units($unit, $dt_due, $return_date, $branchcode);
2215
2215
2216
    if ($finedays) {
2216
    if ($finedays) {
2217
2217
Lines 2238-2252 sub _debar_user_on_return { Link Here
2238
                  if DateTime::Duration->compare( $max_sd, $suspension_days ) < 0;
2238
                  if DateTime::Duration->compare( $max_sd, $suspension_days ) < 0;
2239
            }
2239
            }
2240
2240
2241
            my ( $has_been_extended, $is_a_reminder );
2241
            if ( C4::Context->preference('CumulativeRestrictionPeriods') and $borrower->{debarred} ) {
2242
            if ( C4::Context->preference('CumulativeRestrictionPeriods') and $borrower->{debarred} ) {
2242
                my $debarment = @{ GetDebarments( { borrowernumber => $borrower->{borrowernumber}, type => 'SUSPENSION' } ) }[0];
2243
                my $debarment = @{ GetDebarments( { borrowernumber => $borrower->{borrowernumber}, type => 'SUSPENSION' } ) }[0];
2243
                if ( $debarment ) {
2244
                if ( $debarment ) {
2244
                    $return_date = dt_from_string( $debarment->{expiration}, 'sql' );
2245
                    $return_date = dt_from_string( $debarment->{expiration}, 'sql' );
2246
                    $has_been_extended = 1;
2245
                }
2247
                }
2246
            }
2248
            }
2247
2249
2248
            my $new_debar_dt =
2250
            my $new_debar_dt =
2249
              $dt_today->clone()->add_duration( $suspension_days );
2251
              $return_date->clone()->add_duration( $suspension_days );
2250
2252
2251
            Koha::Patron::Debarments::AddUniqueDebarment({
2253
            Koha::Patron::Debarments::AddUniqueDebarment({
2252
                borrowernumber => $borrower->{borrowernumber},
2254
                borrowernumber => $borrower->{borrowernumber},
Lines 2255-2264 sub _debar_user_on_return { Link Here
2255
            });
2257
            });
2256
            # if borrower was already debarred but does not get an extra debarment
2258
            # if borrower was already debarred but does not get an extra debarment
2257
            my $patron = Koha::Patrons->find( $borrower->{borrowernumber} );
2259
            my $patron = Koha::Patrons->find( $borrower->{borrowernumber} );
2260
            my $new_debarment_str;
2258
            if ( $borrower->{debarred} eq $patron->is_debarred ) {
2261
            if ( $borrower->{debarred} eq $patron->is_debarred ) {
2259
                return ($borrower->{debarred},1);
2262
                $is_a_reminder = 1;
2263
                $new_debarment_str = $borrower->{debarred};
2264
            } else {
2265
                $new_debarment_str = $new_debar_dt->ymd();
2260
            }
2266
            }
2261
            return $new_debar_dt->ymd();
2267
            # FIXME Should return a DateTime object
2268
            return $new_debarment_str, $is_a_reminder;
2262
        }
2269
        }
2263
    }
2270
    }
2264
    return;
2271
    return;
2265
- 

Return to bug 14146