Bug 16202: GetIssuingCharges should return a collectable amount

Charges should not include elements less than a penny/cent
they are not displayed but can be saved to the database
causing "odd" behaviour down the line

Make the routine round the resultant charge to nearest cent,
so consistent values are returned.
Removed the one case where it was rounded post call.
Although the main danger is values generated by the discount
calculation apply the rounding to all returned charges in case
the item charge is defined using the 3rd or 4th decimal
places.

NOTE: prove -v t/db_dependent/Circulation.t triggers the change.
      Though, all the returned amounts are 0.00 only.

Signed-off-by: Mark Tompsett <mtompset@hotmail.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
(cherry picked from commit d84ed89557)
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
This commit is contained in:
Colin Campbell 2016-04-05 12:56:24 +01:00 committed by Mason James
parent 1a565cf3c8
commit ea70d6dfdf
1 changed files with 3 additions and 1 deletions

View File

@ -909,7 +909,6 @@ sub CanBookBeIssued {
if ( $rentalConfirmation ){
my ($rentalCharge) = GetIssuingCharges( $item->{'itemnumber'}, $borrower->{'borrowernumber'} );
if ( $rentalCharge > 0 ){
$rentalCharge = sprintf("%.02f", $rentalCharge);
$needsconfirmation{RENTALCHARGE} = $rentalCharge;
}
}
@ -3133,6 +3132,9 @@ sub GetIssuingCharges {
my $discount = _get_discount_from_rule($discount_rules, $branch, $item_type);
$charge = ( $charge * ( 100 - $discount ) ) / 100;
}
if ($charge) {
$charge = sprintf '%.2f', $charge; # ensure no fractions of a penny returned
}
}
return ( $charge, $item_type );