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 |
|