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

(-)a/C4/SIP/ILS/Patron.pm (-1 / +9 lines)
Lines 34-40 our $kp; # koha patron Link Here
34
=cut
34
=cut
35
35
36
sub new {
36
sub new {
37
    my ($class, $patron_id) = @_;
37
    my ($class, $patron_id, $server) = @_;
38
    my $type = ref($class) || $class;
38
    my $type = ref($class) || $class;
39
    my $self;
39
    my $self;
40
40
Lines 97-102 sub new { Link Here
97
        $fines_msg .= " -- " . "Patron blocked by fines ($fines_amount) on guaranteed accounts" if $fine_blocked;
97
        $fines_msg .= " -- " . "Patron blocked by fines ($fines_amount) on guaranteed accounts" if $fine_blocked;
98
    }
98
    }
99
99
100
    my $too_many_lost = 0;
101
    if ( my $lost_block_checkout = $server->{account}->{lost_block_checkout} ) {
102
        my $lost_block_checkout_value = $server->{account}->{lost_block_checkout_value} // 1;
103
        my $lost_checkouts = Koha::Checkouts->search({ borrowernumber => $patron->borrowernumber, 'itemlost' => { '>=', $lost_block_checkout_value } }, { join => 'item'} )->count;
104
        $too_many_lost = $lost_checkouts >= $lost_block_checkout;
105
    }
106
100
    my $circ_blocked =( C4::Context->preference('OverduesBlockCirc') ne "noblock" &&  defined $flags->{ODUES}->{itemlist} ) ? 1 : 0;
107
    my $circ_blocked =( C4::Context->preference('OverduesBlockCirc') ne "noblock" &&  defined $flags->{ODUES}->{itemlist} ) ? 1 : 0;
101
    {
108
    {
102
    no warnings;    # any of these $kp->{fields} being concat'd could be undef
109
    no warnings;    # any of these $kp->{fields} being concat'd could be undef
Lines 140-145 sub new { Link Here
140
        fine_blocked    => $fine_blocked,
147
        fine_blocked    => $fine_blocked,
141
        fee_limit       => $fee_limit,
148
        fee_limit       => $fee_limit,
142
        userid          => $kp->{userid},
149
        userid          => $kp->{userid},
150
        too_many_lost   => $too_many_lost,
143
    );
151
    );
144
    }
152
    }
145
153
(-)a/C4/SIP/Sip/MsgType.pm (-12 / +5 lines)
Lines 501-507 sub handle_patron_status { Link Here
501
    my $fields = $self->{fields};
501
    my $fields = $self->{fields};
502
502
503
    $ils->check_inst_id( $fields->{ (FID_INST_ID) }, "handle_patron_status" );
503
    $ils->check_inst_id( $fields->{ (FID_INST_ID) }, "handle_patron_status" );
504
    $patron = $ils->find_patron( $fields->{ (FID_PATRON_ID) } );
504
    $patron = $ils->find_patron( $fields->{ (FID_PATRON_ID) }, $server );
505
    $resp = build_patron_status( $patron, $lang, $fields, $server );
505
    $resp = build_patron_status( $patron, $lang, $fields, $server );
506
    $self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} );
506
    $self->write_msg( $resp, undef, $server->{account}->{terminator}, $server->{account}->{encoding} );
507
    return (PATRON_STATUS_REQ);
507
    return (PATRON_STATUS_REQ);
Lines 769-775 sub handle_block_patron { Link Here
769
    # FIXME ???
769
    # FIXME ???
770
770
771
    $ils->check_inst_id( $inst_id, "block_patron" );
771
    $ils->check_inst_id( $inst_id, "block_patron" );
772
    $patron = $ils->find_patron($patron_id);
772
    $patron = $ils->find_patron( $patron_id, $server );
773
773
774
    # The correct response for a "Block Patron" message is a
774
    # The correct response for a "Block Patron" message is a
775
    # "Patron Status Response", so use that handler to generate
775
    # "Patron Status Response", so use that handler to generate
Lines 988-994 sub handle_patron_info { Link Here
988
988
989
    Koha::Plugins->call('patron_barcode_transform', \$patron_id );
989
    Koha::Plugins->call('patron_barcode_transform', \$patron_id );
990
990
991
    $patron = $ils->find_patron($patron_id);
991
    $patron = $ils->find_patron( $patron_id, $server );
992
992
993
    $resp = (PATRON_INFO_RESP);
993
    $resp = (PATRON_INFO_RESP);
994
    if ($patron) {
994
    if ($patron) {
Lines 1359-1365 sub handle_patron_enable { Link Here
1359
1359
1360
    siplog( "LOG_DEBUG", "handle_patron_enable: patron_id: '%s', patron_pwd: '%s'", $patron_id, $patron_pwd );
1360
    siplog( "LOG_DEBUG", "handle_patron_enable: patron_id: '%s', patron_pwd: '%s'", $patron_id, $patron_pwd );
1361
1361
1362
    $patron = $ils->find_patron($patron_id);
1362
    $patron = $ils->find_patron( $patron_id, $server );
1363
1363
1364
    if ( !defined($patron) ) {
1364
    if ( !defined($patron) ) {
1365
1365
Lines 1717-1729 sub patron_status_string { Link Here
1717
1717
1718
    my $patron_status;
1718
    my $patron_status;
1719
1719
1720
    my $too_many_lost = 0;
1721
    if ( my $lost_block_checkout = $server->{account}->{lost_block_checkout} ) {
1722
        my $lost_block_checkout_value = $server->{account}->{lost_block_checkout_value} // 1;
1723
        my $lost_checkouts = Koha::Checkouts->search({ borrowernumber => $patron->borrowernumber, 'itemlost' => { '>=', $lost_block_checkout_value } }, { join => 'item'} )->count;
1724
        $too_many_lost = $lost_checkouts >= $lost_block_checkout;
1725
    }
1726
1727
    siplog( "LOG_DEBUG", "patron_status_string: %s charge_ok: %s", $patron->id, $patron->charge_ok );
1720
    siplog( "LOG_DEBUG", "patron_status_string: %s charge_ok: %s", $patron->id, $patron->charge_ok );
1728
    $patron_status = sprintf(
1721
    $patron_status = sprintf(
1729
        '%s%s%s%s%s%s%s%s%s%s%s%s%s%s',
1722
        '%s%s%s%s%s%s%s%s%s%s%s%s%s%s',
Lines 1736-1742 sub patron_status_string { Link Here
1736
        $server->{account}->{overdues_block_checkout} ? boolspace( $patron->too_many_overdue ) : q{ },
1729
        $server->{account}->{overdues_block_checkout} ? boolspace( $patron->too_many_overdue ) : q{ },
1737
        boolspace( $patron->too_many_renewal ),
1730
        boolspace( $patron->too_many_renewal ),
1738
        boolspace( $patron->too_many_claim_return ),
1731
        boolspace( $patron->too_many_claim_return ),
1739
        boolspace( $too_many_lost ),
1732
        boolspace( $patron->too_many_lost ),
1740
        boolspace( $patron->excessive_fines ),
1733
        boolspace( $patron->excessive_fines ),
1741
        boolspace( $patron->excessive_fees ),
1734
        boolspace( $patron->excessive_fees ),
1742
        boolspace( $patron->recall_overdue ),
1735
        boolspace( $patron->recall_overdue ),
(-)a/t/db_dependent/SIP/Message.t (-1 / +7 lines)
Lines 289-320 subtest "Test patron_status_string" => sub { Link Here
289
    is( Koha::Checkouts->search({ borrowernumber => $patron->{borrowernumber}, 'itemlost' => { '>', 0 } }, { join => 'item'} )->count, 2, "Found 2 lost checkouts for this patron" );
289
    is( Koha::Checkouts->search({ borrowernumber => $patron->{borrowernumber}, 'itemlost' => { '>', 0 } }, { join => 'item'} )->count, 2, "Found 2 lost checkouts for this patron" );
290
290
291
    my $server->{account}->{lost_block_checkout} = undef;
291
    my $server->{account}->{lost_block_checkout} = undef;
292
    $sip_patron = C4::SIP::ILS::Patron->new( $patron->{cardnumber}, $server );
292
    my $patron_status_string = C4::SIP::Sip::MsgType::patron_status_string( $sip_patron, $server );
293
    my $patron_status_string = C4::SIP::Sip::MsgType::patron_status_string( $sip_patron, $server );
293
    is( substr($patron_status_string, 9, 1), q{ }, "lost_block_checkout = 0 does not block checkouts with 2 lost checkouts" );;
294
    is( substr($patron_status_string, 9, 1), q{ }, "lost_block_checkout = 0 does not block checkouts with 2 lost checkouts" );;
294
295
295
    $server->{account}->{lost_block_checkout} = 0;
296
    $server->{account}->{lost_block_checkout} = 0;
297
    $sip_patron = C4::SIP::ILS::Patron->new( $patron->{cardnumber}, $server );
296
    $patron_status_string = C4::SIP::Sip::MsgType::patron_status_string( $sip_patron, $server );
298
    $patron_status_string = C4::SIP::Sip::MsgType::patron_status_string( $sip_patron, $server );
297
    is( substr($patron_status_string, 9, 1), q{ }, "lost_block_checkout = 0 does not block checkouts with 2 lost checkouts" );;
299
    is( substr($patron_status_string, 9, 1), q{ }, "lost_block_checkout = 0 does not block checkouts with 2 lost checkouts" );;
298
300
299
    $server->{account}->{lost_block_checkout} = 1;
301
    $server->{account}->{lost_block_checkout} = 1;
302
    $sip_patron = C4::SIP::ILS::Patron->new( $patron->{cardnumber}, $server );
300
    $patron_status_string = C4::SIP::Sip::MsgType::patron_status_string( $sip_patron, $server );
303
    $patron_status_string = C4::SIP::Sip::MsgType::patron_status_string( $sip_patron, $server );
301
    is( substr($patron_status_string, 9, 1), q{Y}, "lost_block_checkout = 1 does block checkouts with 2 lost checkouts" );;
304
    is( substr($patron_status_string, 9, 1), q{Y}, "lost_block_checkout = 1 does block checkouts with 2 lost checkouts" );;
302
305
303
    $server->{account}->{lost_block_checkout} = 2;
306
    $server->{account}->{lost_block_checkout} = 2;
307
    $sip_patron = C4::SIP::ILS::Patron->new( $patron->{cardnumber}, $server );
304
    $patron_status_string = C4::SIP::Sip::MsgType::patron_status_string( $sip_patron, $server );
308
    $patron_status_string = C4::SIP::Sip::MsgType::patron_status_string( $sip_patron, $server );
305
    is( substr($patron_status_string, 9, 1), q{Y}, "lost_block_checkout = 2 does block checkouts with 2 lost checkouts" );;
309
    is( substr($patron_status_string, 9, 1), q{Y}, "lost_block_checkout = 2 does block checkouts with 2 lost checkouts" );;
306
310
307
    $server->{account}->{lost_block_checkout} = 3;
311
    $server->{account}->{lost_block_checkout} = 3;
312
    $sip_patron = C4::SIP::ILS::Patron->new( $patron->{cardnumber}, $server );
308
    $patron_status_string = C4::SIP::Sip::MsgType::patron_status_string( $sip_patron, $server );
313
    $patron_status_string = C4::SIP::Sip::MsgType::patron_status_string( $sip_patron, $server );
309
    is( substr($patron_status_string, 9, 1), q{ }, "lost_block_checkout = 3 does not block checkouts with 2 lost checkouts" );;
314
    is( substr($patron_status_string, 9, 1), q{ }, "lost_block_checkout = 3 does not block checkouts with 2 lost checkouts" );;
310
315
311
    $server->{account}->{lost_block_checkout} = 2;
316
    $server->{account}->{lost_block_checkout} = 2;
312
    $server->{account}->{lost_block_checkout_value} = 2;
317
    $server->{account}->{lost_block_checkout_value} = 2;
318
    $sip_patron = C4::SIP::ILS::Patron->new( $patron->{cardnumber}, $server );
313
    $patron_status_string = C4::SIP::Sip::MsgType::patron_status_string( $sip_patron, $server );
319
    $patron_status_string = C4::SIP::Sip::MsgType::patron_status_string( $sip_patron, $server );
314
    is( substr($patron_status_string, 9, 1), q{ }, "lost_block_checkout = 2, lost_block_checkout_value = 2 does not block checkouts with 2 lost checkouts where only 1 has itemlost = 2" );
320
    is( substr($patron_status_string, 9, 1), q{ }, "lost_block_checkout = 2, lost_block_checkout_value = 2 does not block checkouts with 2 lost checkouts where only 1 has itemlost = 2" );
315
321
316
    $server->{account}->{lost_block_checkout} = 1;
322
    $server->{account}->{lost_block_checkout} = 1;
317
    $server->{account}->{lost_block_checkout_value} = 2;
323
    $server->{account}->{lost_block_checkout_value} = 2;
324
    $sip_patron = C4::SIP::ILS::Patron->new( $patron->{cardnumber}, $server );
318
    $patron_status_string = C4::SIP::Sip::MsgType::patron_status_string( $sip_patron, $server );
325
    $patron_status_string = C4::SIP::Sip::MsgType::patron_status_string( $sip_patron, $server );
319
    is( substr($patron_status_string, 9, 1), q{Y}, "lost_block_checkout = 2, lost_block_checkout_value = 2 does block checkouts with 2 lost checkouts where only 1 has itemlost = 2" );
326
    is( substr($patron_status_string, 9, 1), q{Y}, "lost_block_checkout = 2, lost_block_checkout_value = 2 does block checkouts with 2 lost checkouts where only 1 has itemlost = 2" );
320
327
321
- 

Return to bug 32684