Bug 21196: Use replacement cost from the item type if not set at item level
When circ rules are set to cap at item replacement cost, calcfine only checks the price in the item record, not the default replacement cost by item type. Note: We do not take '0' into account, what if you do not want to set a replacement cost for an item? It is how it is done in chargelostitem so keeping the existing behaviour, but that may be considered as a bug (?) Test plan: - Set useDefaultReplacementCost to use - Set a default replacement cost for a given item type - Create an item of that type with a replacementcost=0 - Create a circ rule for that item type that accrues fines but caps at replacement cost - check the item out, forcing a due date in the past - check that item in => Fines should have been generated Signed-off-by: Caroline Cyr La rose <caroline.cyr-la-rose@inlibro.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com> (cherry picked from commita62742f426) Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> (cherry picked from commit43b671ac85) Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
This commit is contained in:
parent
7db5f67f66
commit
6f3ecfc10b
|
|
@ -250,6 +250,8 @@ sub CalcFine {
|
|||
my $itemtype = $item->{itemtype} || $item->{itype};
|
||||
my $issuing_rule = Koha::IssuingRules->get_effective_issuing_rule({ categorycode => $bortype, itemtype => $itemtype, branchcode => $branchcode });
|
||||
|
||||
$itemtype = Koha::ItemTypes->find($itemtype);
|
||||
|
||||
return unless $issuing_rule; # If not rule exist, there is no fine
|
||||
|
||||
my $fine_unit = $issuing_rule->lengthunit || 'days';
|
||||
|
|
@ -267,7 +269,15 @@ sub CalcFine {
|
|||
} # else { # a zero (or null) chargeperiod or negative units_minus_grace value means no charge. }
|
||||
|
||||
$amount = $issuing_rule->overduefinescap if $issuing_rule->overduefinescap && $amount > $issuing_rule->overduefinescap;
|
||||
|
||||
# This must be moved to Koha::Item (see also similar code in C4::Accounts::chargelostitem
|
||||
$item->{replacementprice} ||= $itemtype->defaultreplacecost
|
||||
if $itemtype
|
||||
&& $item->{replacementprice} == 0
|
||||
&& C4::Context->preference("useDefaultReplacementCost");
|
||||
|
||||
$amount = $item->{replacementprice} if ( $issuing_rule->cap_fine_to_replacement_price && $item->{replacementprice} && $amount > $item->{replacementprice} );
|
||||
|
||||
$debug and warn sprintf("CalcFine returning (%s, %s, %s, %s)", $amount, $issuing_rule->chargename, $units_minus_grace, $chargeable_units);
|
||||
return ($amount, $issuing_rule->chargename, $units_minus_grace, $chargeable_units);
|
||||
# FIXME: chargename is NEVER populated anywhere.
|
||||
|
|
|
|||
Loading…
Reference in New Issue