$fines_amount = ($fines_amount and $fines_amount > 0) ? $fines_amount : 0;
my $fee_limit = _fee_limit();
my $fine_blocked = $fines_amount > $fee_limit;
+ my $circ_blocked =( C4::Context->preference('OverduesBlockCirc') ne "noblock" && defined $flags->{ODUES}->{itemlist} ) ? 1 : 0;
{
no warnings; # any of these $kp->{fields} being concat'd could be undef
%ilspatron = (
address => $adr,
home_phone => $kp->{phone},
email_addr => $kp->{email},
- charge_ok => ( !$debarred && !$expired && !$fine_blocked),
+ charge_ok => ( !$debarred && !$expired && !$fine_blocked && !$circ_blocked),
renew_ok => ( !$debarred && !$expired && !$fine_blocked),
recall_ok => ( !$debarred && !$expired && !$fine_blocked),
hold_ok => ( !$debarred && !$expired && !$fine_blocked),
# This needs to be extended! Your help is appreciated..
use Modern::Perl;
-use Test::More tests => 2;
+use Test::More tests => 3;
use Koha::Database;
use t::lib::TestBuilder;
+use t::lib::Mocks;
use C4::SIP::ILS::Patron;
my $schema = Koha::Database->new->schema;
my $sip_patron2 = C4::SIP::ILS::Patron->new( $card );
is( $sip_patron2, undef, "Patron is not valid (anymore)" );
+subtest "OverduesBlockCirc tests" => sub {
+
+ plan tests => 6;
+
+ my $odue_patron = $builder->build({ source => 'Borrower' });
+ my $good_patron = $builder->build({ source => 'Borrower' });
+ my $odue = $builder->build({ source => 'Issue', value => {
+ borrowernumber => $odue_patron->{borrowernumber},
+ date_due => '2017-01-01',
+ }
+ });
+ t::lib::Mocks::mock_preference( 'OverduesBlockCirc', 'noblock' );
+ my $odue_sip_patron = C4::SIP::ILS::Patron->new( $odue_patron->{cardnumber} );
+ is( $odue_sip_patron->{charge_ok}, 1, "Not blocked with overdues when set to 'Don't block'");
+ $odue_sip_patron = C4::SIP::ILS::Patron->new( $good_patron->{cardnumber} );
+ is( $odue_sip_patron->{charge_ok}, 1, "Not blocked without overdues when set to 'Don't block'");
+
+ t::lib::Mocks::mock_preference( 'OverduesBlockCirc', 'confirmation' );
+ $odue_sip_patron = C4::SIP::ILS::Patron->new( $odue_patron->{cardnumber} );
+ is( $odue_sip_patron->{charge_ok}, '', "Blocked with overdues when set to 'Ask for confirmation'");
+ $odue_sip_patron = C4::SIP::ILS::Patron->new( $good_patron->{cardnumber} );
+ is( $odue_sip_patron->{charge_ok}, 1, "Not blocked without overdues when set to 'confirmation'");
+
+ t::lib::Mocks::mock_preference( 'OverduesBlockCirc', 'block' );
+ $odue_sip_patron = C4::SIP::ILS::Patron->new( $odue_patron->{cardnumber} );
+ is( $odue_sip_patron->{charge_ok}, '', "Blocked with overdues when set to 'Block'");
+ $odue_sip_patron = C4::SIP::ILS::Patron->new( $good_patron->{cardnumber} );
+ is( $odue_sip_patron->{charge_ok}, 1, "Not blocked without overdues when set to 'Block'");
+
+};
+
$schema->storage->txn_rollback;