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

(-)a/C4/Circulation.pm (-3 / +4 lines)
Lines 2412-2419 sub _debar_user_on_return { Link Here
2412
                type           => 'SUSPENSION',
2412
                type           => 'SUSPENSION',
2413
            });
2413
            });
2414
            # if borrower was already debarred but does not get an extra debarment
2414
            # if borrower was already debarred but does not get an extra debarment
2415
            if ( $borrower->{debarred} eq Koha::Patron::Debarments::IsDebarred($borrower->{borrowernumber}) ) {
2415
            my $patron = Koha::Patrons->find( $borrower->{borrowernumber} );
2416
                    return ($borrower->{debarred},1);
2416
            if ( $borrower->{debarred} eq $patron->is_debarred ) {
2417
                return ($borrower->{debarred},1);
2417
            }
2418
            }
2418
            return $new_debar_dt->ymd();
2419
            return $new_debar_dt->ymd();
2419
        }
2420
        }
Lines 2975-2981 sub CanBookBeRenewed { Link Here
2975
2976
2976
    my $overduesblockrenewing = C4::Context->preference('OverduesBlockRenewing');
2977
    my $overduesblockrenewing = C4::Context->preference('OverduesBlockRenewing');
2977
    my $restrictionblockrenewing = C4::Context->preference('RestrictionBlockRenewing');
2978
    my $restrictionblockrenewing = C4::Context->preference('RestrictionBlockRenewing');
2978
    my $restricted = Koha::Patron::Debarments::IsDebarred($borrowernumber);
2979
    my $restricted = Koha::Patrons->find( $borrowernumber )->is_debarred;
2979
    my $hasoverdues = C4::Members::HasOverdues($borrowernumber);
2980
    my $hasoverdues = C4::Members::HasOverdues($borrowernumber);
2980
2981
2981
    if ( $restricted and $restrictionblockrenewing ) {
2982
    if ( $restricted and $restrictionblockrenewing ) {
(-)a/C4/Members.pm (-2 / +2 lines)
Lines 37-48 use C4::NewsChannels; #get slip news Link Here
37
use DateTime;
37
use DateTime;
38
use Koha::Database;
38
use Koha::Database;
39
use Koha::DateUtils;
39
use Koha::DateUtils;
40
use Koha::Patron::Debarments qw(IsDebarred);
41
use Text::Unaccent qw( unac_string );
40
use Text::Unaccent qw( unac_string );
42
use Koha::AuthUtils qw(hash_password);
41
use Koha::AuthUtils qw(hash_password);
43
use Koha::Database;
42
use Koha::Database;
44
use Koha::Holds;
43
use Koha::Holds;
45
use Koha::List::Patron;
44
use Koha::List::Patron;
45
use Koha::Patrons;
46
46
47
our (@ISA,@EXPORT,@EXPORT_OK,$debug);
47
our (@ISA,@EXPORT,@EXPORT_OK,$debug);
48
48
Lines 492-498 sub IsMemberBlocked { Link Here
492
    my $borrowernumber = shift;
492
    my $borrowernumber = shift;
493
    my $dbh            = C4::Context->dbh;
493
    my $dbh            = C4::Context->dbh;
494
494
495
    my $blockeddate = Koha::Patron::Debarments::IsDebarred($borrowernumber);
495
    my $blockeddate = Koha::Patrons->find( $borrowernumber )->is_debarred;
496
496
497
    return ( 1, $blockeddate ) if $blockeddate;
497
    return ( 1, $blockeddate ) if $blockeddate;
498
498
(-)a/Koha/Patron.pm (+20 lines)
Lines 24-29 use Carp; Link Here
24
24
25
use C4::Context;
25
use C4::Context;
26
use Koha::Database;
26
use Koha::Database;
27
use Koha::DateUtils;
27
use Koha::Issues;
28
use Koha::Issues;
28
use Koha::OldIssues;
29
use Koha::OldIssues;
29
use Koha::Patron::Categories;
30
use Koha::Patron::Categories;
Lines 168-173 sub do_check_for_previous_checkout { Link Here
168
    return $old_issues->count;  # 0 || N
169
    return $old_issues->count;  # 0 || N
169
}
170
}
170
171
172
=head2 is_debarred
173
174
my $debarment_expiration = $patron->is_debarred;
175
176
Returns the date a patron debarment will expire, or undef if the patron is not
177
debarred
178
179
=cut
180
181
sub is_debarred {
182
    my ($self) = @_;
183
184
    return unless $self->debarred;
185
    return $self->debarred
186
      if $self->debarred =~ '^9999'
187
      or dt_from_string( $self->debarred ) > dt_from_string;
188
    return;
189
}
190
171
=head3 type
191
=head3 type
172
192
173
=cut
193
=cut
(-)a/Koha/Patron/Debarments.pm (-23 lines)
Lines 33-39 our @EXPORT = qw( Link Here
33
  AddUniqueDebarment
33
  AddUniqueDebarment
34
  DelUniqueDebarment
34
  DelUniqueDebarment
35
35
36
  IsDebarred
37
);
36
);
38
37
39
=head1 Koha::Patron::Debarments
38
=head1 Koha::Patron::Debarments
Lines 169-196 sub ModDebarment { Link Here
169
    return $r;
168
    return $r;
170
}
169
}
171
170
172
=head2 IsDebarred
173
174
my $debarment_expiration = IsDebarred( $borrowernumber );
175
176
Returns the date a borrowers debarment will expire, or
177
undef if the patron is not debarred
178
179
=cut
180
181
sub IsDebarred {
182
    my ($borrowernumber) = @_;
183
184
    return unless ($borrowernumber);
185
186
    my $sql = "SELECT debarred FROM borrowers WHERE borrowernumber = ? AND debarred > CURRENT_DATE()";
187
    my $sth = C4::Context->dbh->prepare($sql);
188
    $sth->execute($borrowernumber);
189
    my ($debarred) = $sth->fetchrow_array();
190
191
    return $debarred;
192
}
193
194
=head2 AddUniqueDebarment
171
=head2 AddUniqueDebarment
195
172
196
my $success = AddUniqueDebarment({
173
my $success = AddUniqueDebarment({
(-)a/Koha/Patron/Discharge.pm (-2 / +2 lines)
Lines 11-16 use C4::Reserves qw( GetReservesFromBorrowernumber CancelReserve ); Link Here
11
11
12
use Koha::Database;
12
use Koha::Database;
13
use Koha::DateUtils qw( dt_from_string output_pref );
13
use Koha::DateUtils qw( dt_from_string output_pref );
14
use Koha::Patrons;
14
15
15
my $rs = Koha::Database->new->schema->resultset('Discharge');
16
my $rs = Koha::Database->new->schema->resultset('Discharge');
16
17
Lines 50-57 sub is_discharged { Link Here
50
    return unless $params->{borrowernumber};
51
    return unless $params->{borrowernumber};
51
    my $borrowernumber = $params->{borrowernumber};
52
    my $borrowernumber = $params->{borrowernumber};
52
53
53
54
    my $restricted = Koha::Patrons->find( $borrowernumber )->is_debarred;
54
    my $restricted = Koha::Patron::Debarments::IsDebarred($borrowernumber);
55
    my $validated = get_validated({borrowernumber => $borrowernumber});
55
    my $validated = get_validated({borrowernumber => $borrowernumber});
56
56
57
    if ($restricted && $validated) {
57
    if ($restricted && $validated) {
(-)a/Koha/Template/Plugin/Borrowers.pm (-2 / +2 lines)
Lines 23-29 use Modern::Perl; Link Here
23
use base qw( Template::Plugin );
23
use base qw( Template::Plugin );
24
24
25
use Koha::Patron::Debarments qw();
25
use Koha::Patron::Debarments qw();
26
use C4::Members qw();
26
use Koha::Patrons;
27
27
28
=pod
28
=pod
29
29
Lines 46-52 sub IsDebarred { Link Here
46
46
47
    return unless $borrower;
47
    return unless $borrower;
48
48
49
    return Koha::Patron::Debarments::IsDebarred($borrower->{borrowernumber});
49
    return Koha::Patrons->find( $borrower->{borrowernumber} )->is_debarred;
50
}
50
}
51
51
52
sub HasOverdues {
52
sub HasOverdues {
(-)a/circ/circulation.pl (-2 / +2 lines)
Lines 44-50 use C4::Context; Link Here
44
use CGI::Session;
44
use CGI::Session;
45
use C4::Members::Attributes qw(GetBorrowerAttributes);
45
use C4::Members::Attributes qw(GetBorrowerAttributes);
46
use Koha::Patron;
46
use Koha::Patron;
47
use Koha::Patron::Debarments qw(GetDebarments IsDebarred);
47
use Koha::Patron::Debarments qw(GetDebarments);
48
use Koha::DateUtils;
48
use Koha::DateUtils;
49
use Koha::Database;
49
use Koha::Database;
50
use Koha::Patron::Messages;
50
use Koha::Patron::Messages;
Lines 297-303 if ($borrowernumber) { Link Here
297
        finetotal    => $fines
297
        finetotal    => $fines
298
    );
298
    );
299
299
300
    if ( IsDebarred($borrowernumber) ) {
300
    if ( Koha::Patrons->find( $borrowernumber )->is_debarred ) {
301
        $template->param(
301
        $template->param(
302
            'userdebarred'    => $borrower->{debarred},
302
            'userdebarred'    => $borrower->{debarred},
303
            'debarredcomment' => $borrower->{debarredcomment},
303
            'debarredcomment' => $borrower->{debarredcomment},
(-)a/members/moremember.pl (-2 / +2 lines)
Lines 51-57 use C4::Branch; # GetBranchName Link Here
51
use C4::Form::MessagingPreferences;
51
use C4::Form::MessagingPreferences;
52
use List::MoreUtils qw/uniq/;
52
use List::MoreUtils qw/uniq/;
53
use C4::Members::Attributes qw(GetBorrowerAttributes);
53
use C4::Members::Attributes qw(GetBorrowerAttributes);
54
use Koha::Patron::Debarments qw(GetDebarments IsDebarred);
54
use Koha::Patron::Debarments qw(GetDebarments);
55
use Koha::Patron::Images;
55
use Koha::Patron::Images;
56
use Module::Load;
56
use Module::Load;
57
if ( C4::Context->preference('NorwegianPatronDBEnable') && C4::Context->preference('NorwegianPatronDBEnable') == 1 ) {
57
if ( C4::Context->preference('NorwegianPatronDBEnable') && C4::Context->preference('NorwegianPatronDBEnable') == 1 ) {
Lines 144-150 for (qw(gonenoaddress lost borrowernotes)) { Link Here
144
	 $data->{$_} and $template->param(flagged => 1) and last;
144
	 $data->{$_} and $template->param(flagged => 1) and last;
145
}
145
}
146
146
147
if ( IsDebarred($borrowernumber) ) {
147
if ( Koha::Patrons->find( $borrowernumber )->is_debarred ) {
148
    $template->param( 'userdebarred' => 1, 'flagged' => 1 );
148
    $template->param( 'userdebarred' => 1, 'flagged' => 1 );
149
    my $debar = $data->{'debarred'};
149
    my $debar = $data->{'debarred'};
150
    if ( $debar ne "9999-12-31" ) {
150
    if ( $debar ne "9999-12-31" ) {
(-)a/opac/opac-reserve.pl (-2 / +2 lines)
Lines 35-41 use C4::Overdues; Link Here
35
use C4::Debug;
35
use C4::Debug;
36
use Koha::DateUtils;
36
use Koha::DateUtils;
37
use Koha::Libraries;
37
use Koha::Libraries;
38
use Koha::Patron::Debarments qw(IsDebarred);
38
use Koha::Patrons;
39
use Date::Calc qw/Today Date_to_Days/;
39
use Date::Calc qw/Today Date_to_Days/;
40
use List::MoreUtils qw/uniq/;
40
use List::MoreUtils qw/uniq/;
41
41
Lines 333-339 if ( $borr->{lost} && ($borr->{lost} == 1) ) { Link Here
333
    );
333
    );
334
}
334
}
335
335
336
if ( IsDebarred($borrowernumber) ) {
336
if ( Koha::Patrons->find( $borrowernumber )->is_debarred ) {
337
    $noreserves = 1;
337
    $noreserves = 1;
338
    $template->param(
338
    $template->param(
339
        message          => 1,
339
        message          => 1,
(-)a/opac/opac-user.pl (-2 / +1 lines)
Lines 35-41 use C4::Items; Link Here
35
use C4::Letters;
35
use C4::Letters;
36
use C4::Branch; # GetBranches
36
use C4::Branch; # GetBranches
37
use Koha::DateUtils;
37
use Koha::DateUtils;
38
use Koha::Patron::Debarments qw(IsDebarred);
39
use Koha::Holds;
38
use Koha::Holds;
40
use Koha::Database;
39
use Koha::Database;
41
use Koha::Patron::Messages;
40
use Koha::Patron::Messages;
Lines 90-96 my ( $borr ) = GetMemberDetails( $borrowernumber ); Link Here
90
my (  $today_year,   $today_month,   $today_day) = Today();
89
my (  $today_year,   $today_month,   $today_day) = Today();
91
my ($warning_year, $warning_month, $warning_day) = split /-/, $borr->{'dateexpiry'};
90
my ($warning_year, $warning_month, $warning_day) = split /-/, $borr->{'dateexpiry'};
92
91
93
my $debar = IsDebarred($borrowernumber);
92
my $debar = Koha::Patrons->find( $borrowernumber )->is_debarred;
94
my $userdebarred;
93
my $userdebarred;
95
94
96
if ($debar) {
95
if ($debar) {
(-)a/reserve/request.pl (-2 / +2 lines)
Lines 44-50 use C4::Utils::DataTables::Members; Link Here
44
use C4::Members;
44
use C4::Members;
45
use C4::Search;		# enabled_staff_search_views
45
use C4::Search;		# enabled_staff_search_views
46
use Koha::DateUtils;
46
use Koha::DateUtils;
47
use Koha::Patron::Debarments qw(IsDebarred);
48
use Koha::Holds;
47
use Koha::Holds;
49
use Koha::Libraries;
48
use Koha::Libraries;
50
49
Lines 181-186 if ($borrowernumber_hold && !$action) { Link Here
181
        $diffbranch = 1;
180
        $diffbranch = 1;
182
    }
181
    }
183
182
183
    my $is_debarred = Koha::Patrons->find( $borrowerinfo->{borrowernumber} )->is_debarred;
184
    $template->param(
184
    $template->param(
185
                borrowernumber      => $borrowerinfo->{'borrowernumber'},
185
                borrowernumber      => $borrowerinfo->{'borrowernumber'},
186
                borrowersurname     => $borrowerinfo->{'surname'},
186
                borrowersurname     => $borrowerinfo->{'surname'},
Lines 199-205 if ($borrowernumber_hold && !$action) { Link Here
199
                diffbranch          => $diffbranch,
199
                diffbranch          => $diffbranch,
200
                messages            => $messages,
200
                messages            => $messages,
201
                warnings            => $warnings,
201
                warnings            => $warnings,
202
                restricted          => IsDebarred($borrowerinfo->{'borrowernumber'}),
202
                restricted          => $is_debarred,
203
                amount_outstanding  => GetMemberAccountRecords($borrowerinfo->{borrowernumber}),
203
                amount_outstanding  => GetMemberAccountRecords($borrowerinfo->{borrowernumber}),
204
    );
204
    );
205
}
205
}
(-)a/t/db_dependent/Patron/Borrower_Debarments.t (-3 / +4 lines)
Lines 5-10 use Modern::Perl; Link Here
5
use C4::Context;
5
use C4::Context;
6
use C4::Members;
6
use C4::Members;
7
use Koha::Database;
7
use Koha::Database;
8
use Koha::Patrons;
8
9
9
use t::lib::TestBuilder;
10
use t::lib::TestBuilder;
10
11
Lines 154-163 $debarments = GetDebarments({ borrowernumber => $borrowernumber }); Link Here
154
is( @$debarments, 0, "DelDebarment functions correctly" );
155
is( @$debarments, 0, "DelDebarment functions correctly" );
155
156
156
$dbh->do(q|UPDATE borrowers SET debarred = '1970-01-01'|);
157
$dbh->do(q|UPDATE borrowers SET debarred = '1970-01-01'|);
157
is( IsDebarred( $borrowernumber ), undef, 'A patron with a debarred date in the past is not debarred' );
158
is( Koha::Patrons->find( $borrowernumber )->is_debarred, undef, 'A patron with a debarred date in the past is not debarred' );
158
159
159
$dbh->do(q|UPDATE borrowers SET debarred = NULL|);
160
$dbh->do(q|UPDATE borrowers SET debarred = NULL|);
160
is( IsDebarred( $borrowernumber ), undef, 'A patron without a debarred date is not debarred' );
161
is( Koha::Patrons->find( $borrowernumber )->is_debarred, undef, 'A patron without a debarred date is not debarred' );
161
162
162
$dbh->do(q|UPDATE borrowers SET debarred = '9999-12-31'|); # Note: Change this test before the first of January 10000!
163
$dbh->do(q|UPDATE borrowers SET debarred = '9999-12-31'|); # Note: Change this test before the first of January 10000!
163
is( IsDebarred( $borrowernumber ), '9999-12-31', 'A patron with a debarred date in the future is debarred' );
164
is( Koha::Patrons->find( $borrowernumber )->is_debarred, '9999-12-31', 'A patron with a debarred date in the future is debarred' );
(-)a/t/db_dependent/Patron/Borrower_Discharge.t (-3 / +2 lines)
Lines 90-101 Koha::Patron::Discharge::discharge( { borrowernumber => $patron->{borrowernumber Link Here
90
Koha::Patron::Discharge::discharge( { borrowernumber => $patron2->{borrowernumber} } );
90
Koha::Patron::Discharge::discharge( { borrowernumber => $patron2->{borrowernumber} } );
91
Koha::Patron::Discharge::discharge( { borrowernumber => $patron3->{borrowernumber} } );
91
Koha::Patron::Discharge::discharge( { borrowernumber => $patron3->{borrowernumber} } );
92
is( Koha::Patron::Discharge::is_discharged( { borrowernumber => $patron->{borrowernumber} } ), 1, 'The patron has been discharged' );
92
is( Koha::Patron::Discharge::is_discharged( { borrowernumber => $patron->{borrowernumber} } ), 1, 'The patron has been discharged' );
93
is( Koha::Patron::Debarments::IsDebarred( $patron->{borrowernumber} ), '9999-12-31', 'The patron has been debarred after discharge' );
93
is( Koha::Patrons->find( $patron->{borrowernumber} )->is_debarred, '9999-12-31', 'The patron has been debarred after discharge' );
94
is( scalar( @{ Koha::Patron::Discharge::get_validated() } ),             3,            'There are 3 validated discharges' );
94
is( scalar( @{ Koha::Patron::Discharge::get_validated() } ),             3,            'There are 3 validated discharges' );
95
is( scalar( @{ Koha::Patron::Discharge::get_validated( { borrowernumber => $patron->{borrowernumber} } ) } ), 1, 'There is 1 validated discharge for a given patron' );
95
is( scalar( @{ Koha::Patron::Discharge::get_validated( { borrowernumber => $patron->{borrowernumber} } ) } ), 1, 'There is 1 validated discharge for a given patron' );
96
is( scalar( @{ Koha::Patron::Discharge::get_validated( { branchcode => $library->{branchcode} } ) } ), 2, 'There is 2 validated discharges for a given branchcode' );    # This is not used in the code yet
96
is( scalar( @{ Koha::Patron::Discharge::get_validated( { branchcode => $library->{branchcode} } ) } ), 2, 'There is 2 validated discharges for a given branchcode' );    # This is not used in the code yet
97
Koha::Patron::Debarments::DelUniqueDebarment( { 'borrowernumber' => $patron->{borrowernumber}, 'type' => 'DISCHARGE' } );
97
Koha::Patron::Debarments::DelUniqueDebarment( { 'borrowernumber' => $patron->{borrowernumber}, 'type' => 'DISCHARGE' } );
98
ok( !Koha::Patron::Debarments::IsDebarred( $patron->{borrowernumber} ), 'The debarment has been lifted' );
98
ok( !Koha::Patrons->find( $patron->{borrowernumber} )->is_debarred, 'The debarment has been lifted' );
99
ok( !Koha::Patron::Discharge::is_discharged( { borrowernumber => $patron->{borrowernumber} } ), 'The patron is not discharged after the restriction has been lifted' );
99
ok( !Koha::Patron::Discharge::is_discharged( { borrowernumber => $patron->{borrowernumber} } ), 'The patron is not discharged after the restriction has been lifted' );
100
100
101
# Verify that the discharge works multiple times
101
# Verify that the discharge works multiple times
102
- 

Return to bug 16849