Bug 35248: Add unit tests for Koha::Item->find_booking
[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     return unless $json_fund;
66
67     $json_fund->{fund_id}   = $budget_id;
68     $json_fund->{budget_id} = $budget_period_id;
69
70     return $json_fund;
71 }
72
73 =head3 to_api_mapping
74
75 This method returns the mapping for representing a Koha::Acquisition::Fund object
76 on the API.
77
78 =cut
79
80 sub to_api_mapping {
81     return {
82         budget_id         => 'fund_id',
83         budget_code       => 'code',
84         budget_name       => 'name',
85         budget_branchcode => 'library_id',
86         budget_amount     => 'total_amount',
87         budget_encumb     => 'warn_at_percentage',
88         budget_expend     => 'warn_at_amount',
89         budget_notes      => 'notes',
90         budget_period_id  => 'budget_id',
91         timestamp         => 'timestamp',
92         budget_owner_id   => 'fund_owner_id',
93         budget_permission => 'fund_access',
94         sort1_authcat     => 'statistic1_auth_value_category',
95         sort2_authcat     => 'statistic2_auth_value_category',
96         budget_parent_id  => 'parent_fund_id',
97     };
98 }
99
100 =head2 Internal methods
101
102 =head3 _type
103
104 =cut
105
106 sub _type {
107     return 'Aqbudget';
108 }
109
110 1;