Bug 22071: (follow-up) Simplify code
[koha.git] / Koha / Account / Lines.pm
1 package Koha::Account::Lines;
2
3 # This file is part of Koha.
4 #
5 # Koha is free software; you can redistribute it and/or modify it under the
6 # terms of the GNU General Public License as published by the Free Software
7 # Foundation; either version 3 of the License, or (at your option) any later
8 # version.
9 #
10 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
11 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License along
15 # with Koha; if not, write to the Free Software Foundation, Inc.,
16 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17
18 use Modern::Perl;
19
20 use Carp;
21
22 use Koha::Database;
23 use Koha::Account::Line;
24
25 use base qw(Koha::Objects);
26
27 =head1 NAME
28
29 Koha::Account::Lines - Koha Account Line Object set class
30
31 =head1 API
32
33 =head2 Class Methods
34
35 =head3 total_outstanding
36
37     my $lines = Koha::Account::Lines->search({ ...  });
38     my $total = $lines->total_outstanding;
39
40 Returns the sum of the outstanding amounts of the resultset. If the resultset is
41 empty it returns 0.
42
43 =cut
44
45 sub total_outstanding {
46     my ( $self ) = @_;
47
48     my $lines = $self->search(
49         {},
50         {
51             select => [ { sum => 'amountoutstanding' } ],
52             as => ['total_amountoutstanding'],
53         }
54     );
55
56     return $lines->count
57       ? $lines->next->get_column('total_amountoutstanding') + 0
58       : 0;
59 }
60
61 =head2 Internal methods
62
63 =head3 _type
64
65 =cut
66
67 sub _type {
68     return 'Accountline';
69 }
70
71 sub object_class {
72     return 'Koha::Account::Line';
73 }
74
75 1;