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

(-)a/C4/Reserves.pm (-7 / +25 lines)
Lines 264-270 sub AddReserve { Link Here
264
264
265
    # add a reserve fee if needed
265
    # add a reserve fee if needed
266
    if ( C4::Context->preference('HoldFeeMode') ne 'any_time_is_collected' ) {
266
    if ( C4::Context->preference('HoldFeeMode') ne 'any_time_is_collected' ) {
267
        my $reserve_fee = GetReserveFee( $borrowernumber, $biblionumber );
267
        my $reserve_fee = GetReserveFee( $hold, $borrowernumber, $biblionumber );
268
        ChargeReserveFee( $borrowernumber, $reserve_fee, $title );
268
        ChargeReserveFee( $borrowernumber, $reserve_fee, $title );
269
    }
269
    }
270
270
Lines 684-693 sub ChargeReserveFee { Link Here
684
=cut
684
=cut
685
685
686
sub GetReserveFee {
686
sub GetReserveFee {
687
    my ( $borrowernumber, $biblionumber ) = @_;
687
    my ( $hold, $borrowernumber, $biblionumber ) = @_;
688
    my $borquery = qq{
688
689
SELECT reservefee FROM borrowers LEFT JOIN categories ON borrowers.categorycode = categories.categorycode WHERE borrowernumber = ?
689
    my $itemtype =
690
    };
690
        $hold->itemtype ? $hold->itemtype
691
      : $hold->item     ? $hold->item->effective_itemtype
692
      :                   $hold->biblio->itemtype;
693
694
    # FIXME: item may not have been attached to hold yet.. so we can't know 'homebranch'
695
    my $item = $hold->item ? $hold->item->unblessed() : { homebranch => "?" };
696
697
    my $reserves_control_branch =
698
      GetReservesControlBranch( $item, $hold->borrower->unblessed );
699
700
    my $rule = Koha::CirculationRules->get_effective_rule(
701
        {
702
            categorycode => $hold->borrower->categorycode,
703
            itemtype     => $itemtype,
704
            branchcode   => $reserves_control_branch,
705
            rule_name    => 'holds_fee'
706
        }
707
    );
708
    my $fee = defined($rule) ? $rule->rule_value : 0;
709
691
    my $issue_qry = qq{
710
    my $issue_qry = qq{
692
SELECT COUNT(*) FROM items
711
SELECT COUNT(*) FROM items
693
LEFT JOIN issues USING (itemnumber)
712
LEFT JOIN issues USING (itemnumber)
Lines 698-704 SELECT COUNT(*) FROM reserves WHERE biblionumber=? AND borrowernumber<>? Link Here
698
    };
717
    };
699
718
700
    my $dbh = C4::Context->dbh;
719
    my $dbh = C4::Context->dbh;
701
    my ( $fee ) = $dbh->selectrow_array( $borquery, undef, ($borrowernumber) );
702
    my $hold_fee_mode = C4::Context->preference('HoldFeeMode') || 'not_always';
720
    my $hold_fee_mode = C4::Context->preference('HoldFeeMode') || 'not_always';
703
    if( $fee and $fee > 0 and $hold_fee_mode eq 'not_always' ) {
721
    if( $fee and $fee > 0 and $hold_fee_mode eq 'not_always' ) {
704
        # This is a reconstruction of the old code:
722
        # This is a reconstruction of the old code:
Lines 1109-1115 sub ModReserveFill { Link Here
1109
    $hold->delete();
1127
    $hold->delete();
1110
1128
1111
    if ( C4::Context->preference('HoldFeeMode') eq 'any_time_is_collected' ) {
1129
    if ( C4::Context->preference('HoldFeeMode') eq 'any_time_is_collected' ) {
1112
        my $reserve_fee = GetReserveFee( $hold->borrowernumber, $hold->biblionumber );
1130
        my $reserve_fee = GetReserveFee( $hold, $hold->borrowernumber, $hold->biblionumber );
1113
        ChargeReserveFee( $hold->borrowernumber, $reserve_fee, $hold->biblio->title );
1131
        ChargeReserveFee( $hold->borrowernumber, $reserve_fee, $hold->biblio->title );
1114
    }
1132
    }
1115
1133
(-)a/Koha/CirculationRules.pm (+3 lines)
Lines 109-114 our $RULE_KINDS = { Link Here
109
    holds_per_record => {
109
    holds_per_record => {
110
        scope => [ 'branchcode', 'categorycode', 'itemtype' ],
110
        scope => [ 'branchcode', 'categorycode', 'itemtype' ],
111
    },
111
    },
112
    holds_fee => {
113
        scope => [ 'categorycode', 'itemtype' ],
114
    },
112
    issuelength => {
115
    issuelength => {
113
        scope => [ 'branchcode', 'categorycode', 'itemtype' ],
116
        scope => [ 'branchcode', 'categorycode', 'itemtype' ],
114
    },
117
    },
(-)a/admin/smart-rules.pl (-1 / +3 lines)
Lines 106-111 if ($op eq 'delete') { Link Here
106
                reservesallowed                  => undef,
106
                reservesallowed                  => undef,
107
                holds_per_record                 => undef,
107
                holds_per_record                 => undef,
108
                holds_per_day                    => undef,
108
                holds_per_day                    => undef,
109
                holds_fee                        => undef,
109
                onshelfholds                     => undef,
110
                onshelfholds                     => undef,
110
                opacitemholds                    => undef,
111
                opacitemholds                    => undef,
111
                overduefinescap                  => undef,
112
                overduefinescap                  => undef,
Lines 274-279 elsif ($op eq 'add') { Link Here
274
    my $reservesallowed  = strip_non_numeric( scalar $input->param('reservesallowed') );
275
    my $reservesallowed  = strip_non_numeric( scalar $input->param('reservesallowed') );
275
    my $holds_per_record = strip_non_numeric( scalar $input->param('holds_per_record') );
276
    my $holds_per_record = strip_non_numeric( scalar $input->param('holds_per_record') );
276
    my $holds_per_day    = strip_non_numeric( scalar $input->param('holds_per_day') );
277
    my $holds_per_day    = strip_non_numeric( scalar $input->param('holds_per_day') );
278
    my $holds_fee        = $input->param('holds_fee') || 0;
277
    my $onshelfholds     = $input->param('onshelfholds') || 0;
279
    my $onshelfholds     = $input->param('onshelfholds') || 0;
278
    my $issuelength  = $input->param('issuelength');
280
    my $issuelength  = $input->param('issuelength');
279
    $issuelength = $issuelength eq q{} ? undef : $issuelength;
281
    $issuelength = $issuelength eq q{} ? undef : $issuelength;
Lines 318-323 elsif ($op eq 'add') { Link Here
318
        reservesallowed               => $reservesallowed,
320
        reservesallowed               => $reservesallowed,
319
        holds_per_record              => $holds_per_record,
321
        holds_per_record              => $holds_per_record,
320
        holds_per_day                 => $holds_per_day,
322
        holds_per_day                 => $holds_per_day,
323
        holds_fee                     => $holds_fee,
321
        onshelfholds                  => $onshelfholds,
324
        onshelfholds                  => $onshelfholds,
322
        opacitemholds                 => $opacitemholds,
325
        opacitemholds                 => $opacitemholds,
323
        overduefinescap               => $overduefinescap,
326
        overduefinescap               => $overduefinescap,
324
- 

Return to bug 3492