From de33f2f2916c8d4de0700d8c04e635b6b6c08a7b Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 8 Nov 2016 13:50:10 +0000 Subject: [PATCH] Bug 17586: Add the Koha::Account::Lines->get_balance method Test plan: prove t/db_dependent/Accounts.t should return green Signed-off-by: Josef Moravec Signed-off-by: Tomas Cohen Arazi Signed-off-by: Kyle M Hall --- Koha/Account/Lines.pm | 20 ++++++++++++++++++++ t/db_dependent/Accounts.t | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/Koha/Account/Lines.pm b/Koha/Account/Lines.pm index 0e0677ca85..aa54e0c6cf 100644 --- a/Koha/Account/Lines.pm +++ b/Koha/Account/Lines.pm @@ -36,6 +36,26 @@ Koha::Account::Lines - Koha Account Line Object set class =cut +=head3 get_balance + +my $balance = $self->get_balance + +Return the balance (sum of amountoutstanding columns) + +=cut + +sub get_balance { + my ($self) = @_; + my $fines = $self->search( + {}, + { + select => [ { sum => 'amountoutstanding' } ], + as => ['total_amountoutstanding'] + } + ); + return $fines->count ? $fines->next->get_column('total_amountoutstanding') : 0; +} + =head3 type =cut diff --git a/t/db_dependent/Accounts.t b/t/db_dependent/Accounts.t index e8b4a03867..f9d1d80b6d 100644 --- a/t/db_dependent/Accounts.t +++ b/t/db_dependent/Accounts.t @@ -18,7 +18,7 @@ use Modern::Perl; -use Test::More tests => 19; +use Test::More tests => 20; use Test::MockModule; use Test::Warn; @@ -365,4 +365,39 @@ subtest "makepartialpayment() tests" => sub { } }; +subtest 'get_balance' => sub { + plan tests => 2; + + my $patron = $builder->build({source => 'Borrower'}); + $patron = Koha::Patrons->find( $patron->{borrowernumber} ); + my $account_lines = $patron->get_account_lines; + is( $account_lines->get_balance, 0, 'get_balance should return 0 if the patron does not have fines' ); + + my $accountline_1 = $builder->build( + { + source => 'Accountline', + value => { + borrowernumber => $patron->borrowernumber, + amount => 42, + amountoutstanding => 42 + } + } + ); + my $accountline_2 = $builder->build( + { + source => 'Accountline', + value => { + borrowernumber => $patron->borrowernumber, + amount => -13, + amountoutstanding => -13 + } + } + ); + + my $balance = $patron->get_account_lines->get_balance; + is( int($balance), 29, 'get_balance should return the correct value'); + + $patron->delete; +}; + 1; -- 2.39.5