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

(-)a/C4/Circulation.pm (-16 / +15 lines)
Lines 903-928 sub CanBookBeIssued { Link Here
903
        $alerts{OTHER_CHARGES} = sprintf( "%.2f", $other_charges );
903
        $alerts{OTHER_CHARGES} = sprintf( "%.2f", $other_charges );
904
    }
904
    }
905
905
906
    my ($blocktype, $count) = C4::Members::IsMemberBlocked($borrower->{'borrowernumber'});
906
    my $patron = Koha::Patrons->find( $borrower->{borrowernumber} );
907
    if ($blocktype == -1) {
907
    if ( my $debarred_date = $patron->is_debarred ) {
908
        ## patron has outstanding overdue loans
908
         # patron has accrued fine days or has a restriction. $count is a date
909
	    if ( C4::Context->preference("OverduesBlockCirc") eq 'block'){
909
        if ($debarred_date eq '9999-12-31') {
910
	        $issuingimpossible{USERBLOCKEDOVERDUE} = $count;
910
            $issuingimpossible{USERBLOCKEDNOENDDATE} = $debarred_date;
911
	    }
912
	    elsif ( C4::Context->preference("OverduesBlockCirc") eq 'confirmation'){
913
	        $needsconfirmation{USERBLOCKEDOVERDUE} = $count;
914
	    }
915
    } elsif($blocktype == 1) {
916
        # patron has accrued fine days or has a restriction. $count is a date
917
        if ($count eq '9999-12-31') {
918
            $issuingimpossible{USERBLOCKEDNOENDDATE} = $count;
919
        }
911
        }
920
        else {
912
        else {
921
            $issuingimpossible{USERBLOCKEDWITHENDDATE} = $count;
913
            $issuingimpossible{USERBLOCKEDWITHENDDATE} = $debarred_date;
914
        }
915
    } elsif ( my $num_overdues = $patron->has_overdues ) {
916
        ## patron has outstanding overdue loans
917
        if ( C4::Context->preference("OverduesBlockCirc") eq 'block'){
918
            $issuingimpossible{USERBLOCKEDOVERDUE} = $num_overdues;
919
        }
920
        elsif ( C4::Context->preference("OverduesBlockCirc") eq 'confirmation'){
921
            $needsconfirmation{USERBLOCKEDOVERDUE} = $num_overdues;
922
        }
922
        }
923
    }
923
    }
924
924
925
#
926
    # JB34 CHECKS IF BORROWERS DON'T HAVE ISSUE TOO MANY BOOKS
925
    # JB34 CHECKS IF BORROWERS DON'T HAVE ISSUE TOO MANY BOOKS
927
    #
926
    #
928
    my $toomany = TooMany( $borrower, $item->{biblionumber}, $item, { onsite_checkout => $onsite_checkout } );
927
    my $toomany = TooMany( $borrower, $item->{biblionumber}, $item, { onsite_checkout => $onsite_checkout } );
Lines 945-951 sub CanBookBeIssued { Link Here
945
    #
944
    #
946
    # CHECKPREVCHECKOUT: CHECK IF ITEM HAS EVER BEEN LENT TO PATRON
945
    # CHECKPREVCHECKOUT: CHECK IF ITEM HAS EVER BEEN LENT TO PATRON
947
    #
946
    #
948
    my $patron = Koha::Patrons->find($borrower->{borrowernumber});
947
    $patron = Koha::Patrons->find($borrower->{borrowernumber});
949
    my $wants_check = $patron->wants_check_for_previous_checkout;
948
    my $wants_check = $patron->wants_check_for_previous_checkout;
950
    $needsconfirmation{PREVISSUE} = 1
949
    $needsconfirmation{PREVISSUE} = 1
951
        if ($wants_check and $patron->do_check_for_previous_checkout($item));
950
        if ($wants_check and $patron->do_check_for_previous_checkout($item));
(-)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