Bug 15172: (follow-up)Serial enumchron/sequence not visible when returning/checking...
[koha.git] / C4 / Contract.pm
1 package C4::Contract;
2
3 # Copyright 2009-2010 BibLibre SARL
4 #
5 # This file is part of Koha.
6 #
7 # Koha is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3 of the License, or
10 # (at your option) any later version.
11 #
12 # Koha is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with Koha; if not, see <http://www.gnu.org/licenses>.
19
20 use Modern::Perl;
21 use strict;
22 #use warnings; FIXME - Bug 2505
23 use C4::Context;
24 use Koha::Database;
25
26 use vars qw(@ISA @EXPORT);
27
28 BEGIN {
29     require Exporter;
30         @ISA    = qw(Exporter);
31         @EXPORT = qw(
32         &GetContracts
33         &GetContract
34         &AddContract
35         &ModContract
36         &DelContract
37         );
38 }
39
40 =head1 NAME
41
42 C4::Contract - Koha functions for dealing with bookseller contracts.
43
44 =head1 SYNOPSIS
45
46 use C4::Contract;
47
48 =head1 DESCRIPTION
49
50 The functions in this module deal with contracts. They allow to
51 add a new contract, to modify it or to get some informations around
52 a contract.
53
54 =cut
55
56
57 =head2 GetContracts
58
59 $contractlist = GetContracts({
60     booksellerid => $booksellerid,
61     activeonly => $activeonly
62 });
63
64 Looks up the contracts that belong to a bookseller
65
66 Returns a list of contracts
67
68 =over
69
70 =item C<$booksellerid> is the "id" field in the "aqbooksellers" table.
71
72 =item C<$activeonly> if exists get only contracts that are still active.
73
74 =back
75
76 =cut
77
78 sub GetContracts {
79     my ($filters) = @_;
80     if( $filters->{activeonly} ) {
81         $filters->{contractenddate} = {'>=' => \'now()'};
82         delete $filters->{activeonly};
83     }
84
85     my $rs = Koha::Database->new()->schema->resultset('Aqcontract');
86     $rs = $rs->search($filters);
87     $rs->result_class('DBIx::Class::ResultClass::HashRefInflator');
88     return [ $rs->all ];
89 }
90
91 =head2 GetContract
92
93 $contract = GetContract( { contractnumber => $contractnumber } );
94
95 Looks up the contract that has PRIMKEY (contractnumber) value $contractID
96
97 Returns a contract
98
99 =cut
100
101 sub GetContract {
102     my ($params) = @_;
103     my $contractnumber = $params->{contractnumber};
104
105     return unless $contractnumber;
106
107     my $contracts = GetContracts({
108         contractnumber => $contractnumber,
109     });
110     return $contracts->[0];
111 }
112
113 sub AddContract {
114     my ($contract) = @_;
115     return unless($contract->{booksellerid});
116
117     my $rs = Koha::Database->new()->schema->resultset('Aqcontract');
118     return $rs->create($contract)->id;
119 }
120
121 sub ModContract {
122     my ($contract) = @_;
123     my $result = Koha::Database->new()->schema->resultset('Aqcontract')->find($contract);
124     return unless($result);
125
126     $result = $result->update($contract);
127     return $result->in_storage;
128 }
129
130 sub DelContract {
131     my ($contract) = @_;
132     return unless($contract->{contractnumber});
133
134     my $result = Koha::Database->new()->schema->resultset('Aqcontract')->find($contract);
135     return unless($result);
136
137     eval { $result->delete };
138     return !( $result->in_storage );
139 }
140
141 1;
142
143 __END__
144
145 =head1 AUTHOR
146
147 Koha Development Team <http://koha-community.org/>
148
149 =cut