From 285667f255d06555776baf35ecc82e92cb6af255 Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Fri, 19 Mar 2021 10:52:54 +0000 Subject: [PATCH] Bug 27995: Update return for Koha::Account::Line->apply This patch updates the return value of Koha::Account::Line->apply to return the updated Koha::Account::Line object with Koha::Object::Messages embedded for the results of any triggered renewals. Available credit, the former return value, is still availabe via the object directly as `amountoutstanding`. Koha::REST::V1::Patrons::Account->add_credit has been updated to reflect the change. No other area's of Koha relied upon the return value. This patch also fixes a bug whereby if you passed a list of debits with an outstanding debit larger than the outstanding credit then you could end up with superflous offest lines with zero amounts that was highlighted by the improved unit tests in t/db_dependent/Koha/Account/Line.t Test plan 1/ Run t/db_dependent/Koha/Account/Line.t 2/ Run t/db_dependent/api/v1/patrons_accounts.t 3/ If both tests pass then signoff Signed-off-by: Tomas Cohen Arazi --- Koha/Account/Line.pm | 13 +++++++++++-- Koha/REST/V1/Patrons/Account.pm | 5 ++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Koha/Account/Line.pm b/Koha/Account/Line.pm index 476e0e49b9e..62f73d50a0c 100644 --- a/Koha/Account/Line.pm +++ b/Koha/Account/Line.pm @@ -657,7 +657,14 @@ sub apply { # Attempt to renew the item associated with this debit if # appropriate if ($debit->renewable) { - $debit->renew_item($params->{interface}); + my $outcome = $debit->renew_item($params->{interface}); + $self->add_message( + { + type => 'info', + message => 'renewal', + payload => $outcome + } + ); } # Same logic exists in Koha::Account::pay @@ -677,10 +684,12 @@ sub apply { C4::Circulation::ReturnLostItem( $self->borrowernumber, $debit->itemnumber ); } + + last if $available_credit == 0; } }); - return $available_credit; + return $self; } =head3 payout diff --git a/Koha/REST/V1/Patrons/Account.pm b/Koha/REST/V1/Patrons/Account.pm index aee36497cea..c75f91a1f70 100644 --- a/Koha/REST/V1/Patrons/Account.pm +++ b/Koha/REST/V1/Patrons/Account.pm @@ -132,13 +132,12 @@ sub add_credit { $debits = Koha::Account::Lines->search({ accountlines_id => { -in => $debits_ids } }) if $debits_ids; - my $outstanding_credit = $credit->amountoutstanding; if ($debits) { # pay them! - $outstanding_credit = $credit->apply({ debits => [ $debits->as_list ], offset_type => 'payment' }); + $credit = $credit->apply({ debits => [ $debits->as_list ], offset_type => 'payment' }); } - if ($outstanding_credit) { + if ($credit->amountoutstanding != 0) { my $outstanding_debits = $account->outstanding_debits; $credit->apply({ debits => [ $outstanding_debits->as_list ], offset_type => 'payment' }); } -- 2.31.1