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