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

(-)a/C4/Circulation.pm (-15 / +14 lines)
Lines 901-926 sub CanBookBeIssued { Link Here
901
        $alerts{OTHER_CHARGES} = sprintf( "%.2f", $other_charges );
901
        $alerts{OTHER_CHARGES} = sprintf( "%.2f", $other_charges );
902
    }
902
    }
903
903
904
    my ($blocktype, $count) = C4::Members::IsMemberBlocked($borrower->{'borrowernumber'});
904
    my $patron = Koha::Patrons->find( $borrower->{borrowernumber} );
905
    if ($blocktype == -1) {
905
    if ( my $debarred_date = $patron->is_debarred ) {
906
        ## patron has outstanding overdue loans
906
         # patron has accrued fine days or has a restriction. $count is a date
907
	    if ( C4::Context->preference("OverduesBlockCirc") eq 'block'){
907
        if ($debarred_date eq '9999-12-31') {
908
	        $issuingimpossible{USERBLOCKEDOVERDUE} = $count;
908
            $issuingimpossible{USERBLOCKEDNOENDDATE} = $debarred_date;
909
	    }
910
	    elsif ( C4::Context->preference("OverduesBlockCirc") eq 'confirmation'){
911
	        $needsconfirmation{USERBLOCKEDOVERDUE} = $count;
912
	    }
913
    } elsif($blocktype == 1) {
914
        # patron has accrued fine days or has a restriction. $count is a date
915
        if ($count eq '9999-12-31') {
916
            $issuingimpossible{USERBLOCKEDNOENDDATE} = $count;
917
        }
909
        }
918
        else {
910
        else {
919
            $issuingimpossible{USERBLOCKEDWITHENDDATE} = $count;
911
            $issuingimpossible{USERBLOCKEDWITHENDDATE} = $debarred_date;
912
        }
913
    } elsif ( my $num_overdues = $patron->has_overdues ) {
914
        ## patron has outstanding overdue loans
915
        if ( C4::Context->preference("OverduesBlockCirc") eq 'block'){
916
            $issuingimpossible{USERBLOCKEDOVERDUE} = $num_overdues;
917
        }
918
        elsif ( C4::Context->preference("OverduesBlockCirc") eq 'confirmation'){
919
            $needsconfirmation{USERBLOCKEDOVERDUE} = $num_overdues;
920
        }
920
        }
921
    }
921
    }
922
922
923
#
924
    # JB34 CHECKS IF BORROWERS DON'T HAVE ISSUE TOO MANY BOOKS
923
    # JB34 CHECKS IF BORROWERS DON'T HAVE ISSUE TOO MANY BOOKS
925
    #
924
    #
926
    my $toomany = TooMany( $borrower, $item->{biblionumber}, $item, { onsite_checkout => $onsite_checkout } );
925
    my $toomany = TooMany( $borrower, $item->{biblionumber}, $item, { onsite_checkout => $onsite_checkout } );
(-)a/C4/Members.pm (-45 lines)
Lines 75-81 BEGIN { Link Here
75
75
76
        &GetHideLostItemsPreference
76
        &GetHideLostItemsPreference
77
77
78
        &IsMemberBlocked
79
        &GetMemberAccountRecords
78
        &GetMemberAccountRecords
80
        &GetBorNotifyAcctRecord
79
        &GetBorNotifyAcctRecord
81
80
Lines 466-514 sub GetMember { Link Here
466
    return;
465
    return;
467
}
466
}
468
467
469
=head2 IsMemberBlocked
470
471
  my ($block_status, $count) = IsMemberBlocked( $borrowernumber );
472
473
Returns whether a patron is restricted or has overdue items that may result
474
in a block of circulation privileges.
475
476
C<$block_status> can have the following values:
477
478
1 if the patron is currently restricted, in which case
479
C<$count> is the expiration date (9999-12-31 for indefinite)
480
481
-1 if the patron has overdue items, in which case C<$count> is the number of them
482
483
0 if the patron has no overdue items or outstanding fine days, in which case C<$count> is 0
484
485
Existing active restrictions are checked before current overdue items.
486
487
=cut
488
489
sub IsMemberBlocked {
490
    my $borrowernumber = shift;
491
    my $dbh            = C4::Context->dbh;
492
493
    my $blockeddate = Koha::Patrons->find( $borrowernumber )->is_debarred;
494
495
    return ( 1, $blockeddate ) if $blockeddate;
496
497
    # if he have late issues
498
    my $sth = $dbh->prepare(
499
        "SELECT COUNT(*) as latedocs
500
         FROM issues
501
         WHERE borrowernumber = ?
502
         AND date_due < now()"
503
    );
504
    $sth->execute($borrowernumber);
505
    my $latedocs = $sth->fetchrow_hashref->{'latedocs'};
506
507
    return ( -1, $latedocs ) if $latedocs > 0;
508
509
    return ( 0, 0 );
510
}
511
512
=head2 GetMemberIssuesAndFines
468
=head2 GetMemberIssuesAndFines
513
469
514
  ($overdue_count, $issue_count, $total_fines) = &GetMemberIssuesAndFines($borrowernumber);
470
  ($overdue_count, $issue_count, $total_fines) = &GetMemberIssuesAndFines($borrowernumber);
515
- 

Return to bug 16850