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