Bug 30027 - Koha::Account->payout_amount should not total the lines in perl
Summary: Koha::Account->payout_amount should not total the lines in perl
Status: NEW
Alias: None
Product: Koha
Classification: Unclassified
Component: Fines and fees (show other bugs)
Version: Main
Hardware: All All
: P5 - low normal
Assignee: Bugs List
QA Contact: Testopia
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-02-04 15:53 UTC by Nick Clemens (kidclamp)
Modified: 2025-01-27 13:04 UTC (History)
1 user (show)

See Also:
Change sponsored?: ---
Patch complexity: ---
Documentation contact:
Documentation submission:
Text to go in the release notes:
Version(s) released in:
Circulation function:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nick Clemens (kidclamp) 2022-02-04 15:53:53 UTC
Currently the routine calls:
585     my $outstanding_credits =
586       exists( $params->{credits} )
587       ? $params->{credits}
588       : $self->outstanding_credits->as_list;
589     for my $credit ( @{$outstanding_credits} ) {
590         $outstanding += $credit->amountoutstanding;
591     }

We should instead call: Koha::Account::Lines->total_outstanding on the Resultlines in order to avoid floating point rounding errors


Currently we see some amounts for refunds Throwing a 500 error, and in plack-error.log:
Amount to payout (81.98) is higher than amountoutstanding (81.98)
Comment 1 Johanna Räisä 2025-01-27 13:04:02 UTC
(In reply to Nick Clemens (kidclamp) from comment #0)
> Currently the routine calls:
> 585     my $outstanding_credits =
> 586       exists( $params->{credits} )
> 587       ? $params->{credits}
> 588       : $self->outstanding_credits->as_list;
> 589     for my $credit ( @{$outstanding_credits} ) {
> 590         $outstanding += $credit->amountoutstanding;
> 591     }
> 
> We should instead call: Koha::Account::Lines->total_outstanding on the
> Resultlines in order to avoid floating point rounding errors
> 
> 
> Currently we see some amounts for refunds Throwing a 500 error, and in
> plack-error.log:
> Amount to payout (81.98) is higher than amountoutstanding (81.98)

I'm looking at a problem which relates to this, https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=38972

Koha::Account::Lines->total_outstanding is calculating the outstanding little differently. I tried to replace $outstanding_credits with that in Koha::Account->payout_amount. In some cases the resultset is different, total_outstanding uses only amountoutstanding column and outstanding_credits uses also the amount column. Maybe these functions should be giving same results before total_outstanding could be used in the payout_amount function.