Bug 32366: (bug 30460 follow-up) Add tests
[koha.git] / Koha / Acquisition / Fund.pm
1 package Koha::Acquisition::Fund;
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 Koha::Acquisition::Budgets;
21 use Koha::Database;
22
23 use base qw(Koha::Object);
24
25 =head1 NAME
26
27 Koha::Acquisition::Fund object class
28
29 =head1 API
30
31 =head2 Class methods
32
33 =head3 budget
34
35     my $budget = $fund->budget;
36
37 Returns the I<Koha::Acquisition::Budget> object for the budget (aqbudgetperiods)
38 associated to the fund.
39
40 =cut
41
42 sub budget {
43     my ( $self )  = @_;
44     my $budget_rs = $self->_result->budget;
45     return Koha::Acquisition::Budget->_new_from_dbic( $budget_rs );
46 }
47
48 =head3 to_api
49
50     my $json = $fund->to_api;
51
52 Overloaded method that returns a JSON representation of the Koha::Acquisition::Fund object,
53 suitable for API output.
54
55 =cut
56
57 sub to_api {
58     my ( $self, $args ) = @_;
59
60     # Preserve conflicting attribute names
61     my $budget_id        = $self->budget_id;
62     my $budget_period_id = $self->budget_period_id;
63
64     my $json_fund = $self->SUPER::to_api($args);
65     $json_fund->{fund_id}   = $budget_id;
66     $json_fund->{budget_id} = $budget_period_id;
67
68     return $json_fund;
69 }
70
71 =head3 to_api_mapping
72
73 This method returns the mapping for representing a Koha::Acquisition::Fund object
74 on the API.
75
76 =cut
77
78 sub to_api_mapping {
79     return {
80         budget_id         => 'fund_id',
81         budget_code       => 'code',
82         budget_name       => 'name',
83         budget_branchcode => 'library_id',
84         budget_amount     => 'total_amount',
85         budget_encumb     => 'warn_at_percentage',
86         budget_expend     => 'warn_at_amount',
87         budget_notes      => 'notes',
88         budget_period_id  => 'budget_id',
89         timestamp         => 'timestamp',
90         budget_owner_id   => 'fund_owner_id',
91         budget_permission => 'fund_access',
92         sort1_authcat     => 'statistic1_auth_value_category',
93         sort2_authcat     => 'statistic2_auth_value_category',
94         budget_parent_id  => 'parent_fund_id',
95     };
96 }
97
98 =head2 Internal methods
99
100 =head3 _type
101
102 =cut
103
104 sub _type {
105     return 'Aqbudget';
106 }
107
108 1;