0083f0d3ab8dac52c75eda5e95a0d92d1d85cde0
[srvgit] / Koha / Account / Offsets.pm
1 package Koha::Account::Offsets;
2
3 # This file is part of Koha.
4 #
5 # Koha is free software; you can redistribute it and/or modify it
6 # under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 3 of the License, or
8 # (at your option) any later version.
9 #
10 # Koha is distributed in the hope that it will be useful, but
11 # WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with Koha; if not, see <http://www.gnu.org/licenses>.
17
18 use Modern::Perl;
19
20 use Carp;
21
22 use Koha::Database;
23
24 use Koha::Account::Offset;
25
26 use base qw(Koha::Objects);
27
28 =head1 NAME
29
30 Koha::Account::Offsets - Koha Account Offset Object set class
31
32 Account offsets track the changes made to the balance of account lines
33
34 =head1 API
35
36 =head2 Class methods
37
38     my $offsets = Koha::Account::Offsets->search({ ...  });
39     my $total   = $offsets->total;
40
41 Returns the sum of the amounts of the account offsets resultset. If the resultset is
42 empty it returns 0.
43
44 =head3 total
45
46 =cut
47
48 sub total {
49     my ($self) = @_;
50
51     my $offsets = $self->search(
52         {},
53         {
54             select => [ { sum => 'amount' } ],
55             as     => ['total_amount'],
56         }
57     );
58
59     return $offsets->count
60       ? $offsets->next->get_column('total_amount') + 0
61       : 0;
62 }
63
64 =head2 Internal methods
65
66 =head3 _type
67
68 =cut
69
70 sub _type {
71     return 'AccountOffset';
72 }
73
74 =head3 object_class
75
76 =cut
77
78 sub object_class {
79     return 'Koha::Account::Offset';
80 }
81
82 1;