|
Lines 268-275
sub CalcFine {
Link Here
|
| 268 |
} else { |
268 |
} else { |
| 269 |
# a zero (or null) chargeperiod or negative units_minus_grace value means no charge. |
269 |
# a zero (or null) chargeperiod or negative units_minus_grace value means no charge. |
| 270 |
} |
270 |
} |
|
|
271 |
|
| 271 |
$amount = $data->{overduefinescap} if $data->{overduefinescap} && $amount > $data->{overduefinescap}; |
272 |
$amount = $data->{overduefinescap} if $data->{overduefinescap} && $amount > $data->{overduefinescap}; |
|
|
273 |
$amount = $item->{'replacementprice'} if ( C4::Context->preference('MaxFineIsReplacementPrice') && $item->{'replacementprice'} && $amount > $item->{'replacementprice'} ); |
| 274 |
|
| 272 |
$debug and warn sprintf("CalcFine returning (%s, %s, %s, %s)", $amount, $data->{'chargename'}, $units_minus_grace, $chargeable_units); |
275 |
$debug and warn sprintf("CalcFine returning (%s, %s, %s, %s)", $amount, $data->{'chargename'}, $units_minus_grace, $chargeable_units); |
|
|
276 |
|
| 273 |
return ($amount, $data->{'chargename'}, $units_minus_grace, $chargeable_units); |
277 |
return ($amount, $data->{'chargename'}, $units_minus_grace, $chargeable_units); |
| 274 |
# FIXME: chargename is NEVER populated anywhere. |
278 |
# FIXME: chargename is NEVER populated anywhere. |
| 275 |
} |
279 |
} |
|
Lines 542-557
sub UpdateFine {
Link Here
|
| 542 |
} |
546 |
} |
| 543 |
$total_amount_other += $rec->{'amount'}; |
547 |
$total_amount_other += $rec->{'amount'}; |
| 544 |
} |
548 |
} |
|
|
549 |
|
| 550 |
if ( C4::Context->preference('MaxFineIsReplacementPrice') ) { |
| 551 |
my $item = C4::Items::GetItem( $itemnum ); |
| 552 |
if ( $item->{'replacementprice'} && $amount > $item->{'replacementprice'} ) { |
| 553 |
$debug && warn "Reducing fine for item $itemnum borrower $borrowernumber from $amount to $item->{'replacementprice'} - Fine exceeds replacement price"; |
| 554 |
$amount = $item->{'replacementprice'}; |
| 555 |
} |
| 556 |
} |
| 557 |
|
| 545 |
if (my $maxfine = C4::Context->preference('MaxFine')) { |
558 |
if (my $maxfine = C4::Context->preference('MaxFine')) { |
| 546 |
if ($total_amount_other + $amount > $maxfine) { |
559 |
if ($total_amount_other + $amount > $maxfine) { |
| 547 |
my $new_amount = $maxfine - $total_amount_other; |
560 |
my $new_amount = $maxfine - $total_amount_other; |
| 548 |
warn "Reducing fine for item $itemnum borrower $borrowernumber from $amount to $new_amount - MaxFine reached"; |
561 |
$debug && warn "Reducing fine for item $itemnum borrower $borrowernumber from $amount to $new_amount - MaxFine reached"; |
| 549 |
return if $new_amount <= 0.00; |
562 |
return if $new_amount <= 0.00; |
| 550 |
|
563 |
|
| 551 |
$amount = $new_amount; |
564 |
$amount = $new_amount; |
| 552 |
} |
565 |
} |
| 553 |
} |
566 |
} |
| 554 |
|
567 |
|
|
|
568 |
|
| 555 |
if ( $data ) { |
569 |
if ( $data ) { |
| 556 |
|
570 |
|
| 557 |
# we're updating an existing fine. Only modify if amount changed |
571 |
# we're updating an existing fine. Only modify if amount changed |