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

(-)a/C4/Circulation.pm (-2 / +37 lines)
Lines 55-61 use Koha::Holds; Link Here
55
use Koha::RefundLostItemFeeRule;
55
use Koha::RefundLostItemFeeRule;
56
use Koha::RefundLostItemFeeRules;
56
use Koha::RefundLostItemFeeRules;
57
use Carp;
57
use Carp;
58
use List::MoreUtils qw( uniq );
58
use List::MoreUtils qw( uniq any );
59
use YAML qw/Load/;
59
use Scalar::Util qw( looks_like_number );
60
use Scalar::Util qw( looks_like_number );
60
use Date::Calc qw(
61
use Date::Calc qw(
61
  Today
62
  Today
Lines 2607-2612 sub CanBookBeRenewed { Link Here
2607
    my $issue = Koha::Checkouts->find( { itemnumber => $itemnumber } ) or return ( 0, 'no_checkout' );
2608
    my $issue = Koha::Checkouts->find( { itemnumber => $itemnumber } ) or return ( 0, 'no_checkout' );
2608
    return ( 0, 'onsite_checkout' ) if $issue->onsite_checkout;
2609
    return ( 0, 'onsite_checkout' ) if $issue->onsite_checkout;
2609
2610
2611
    return ( 0, 'item_denied_renewal') if _item_denied_renewal({ item => $item });
2612
2610
    $borrowernumber ||= $issue->borrowernumber;
2613
    $borrowernumber ||= $issue->borrowernumber;
2611
    my $patron = Koha::Patrons->find( $borrowernumber )
2614
    my $patron = Koha::Patrons->find( $borrowernumber )
2612
      or return;
2615
      or return;
Lines 4062-4067 sub _CalculateAndUpdateFine { Link Here
4062
    }
4065
    }
4063
}
4066
}
4064
4067
4068
sub _item_denied_renewal {
4069
    my ($params) = @_;
4070
4071
    my $item = $params->{item};
4072
    unless ($item)    { carp "No item passed in!" && return }
4073
4074
    my $yaml = C4::Context->preference('ItemsDeniedRenewal');
4075
    return () if (! $yaml =~ /\S/ );
4076
    $yaml = "$yaml\n\n"; # YAML is anal on ending \n. Surplus does not hurt
4077
    my $denyingrules;
4078
    eval {
4079
        $denyingrules = YAML::Load($yaml);
4080
    };
4081
    if ($@) {
4082
        warn "Unable to parse ItemsDeniedRenewal syspref : $@";
4083
        return ();
4084
    }
4085
    foreach my $field (keys %$denyingrules) {
4086
        my $val;
4087
        if (exists $item->{$field}) {
4088
            $val = $item->{$field};
4089
        }
4090
        $val = '' unless defined $val;
4091
        # If the results matches the values in the yaml file
4092
        if (any { $val eq $_ } @{$denyingrules->{$field}}) {
4093
             # We return true if match found
4094
            return 1;
4095
        }
4096
    }
4097
    return 0;
4098
}
4099
4100
4065
1;
4101
1;
4066
4102
4067
__END__
4103
__END__
4068
- 

Return to bug 15494