X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FContract.pm;h=0de49ad361764389587870e9ae776c36d80265ee;hb=39d2885d1330afe825e1881f5fc8033d459f6006;hp=9a49116cfcc765beeef31d77810c6f75cce2ea06;hpb=29eadaa1f7be053c347e02825a3080ba6cbfd9db;p=koha.git diff --git a/C4/Contract.pm b/C4/Contract.pm index 9a49116cfc..0de49ad361 100644 --- a/C4/Contract.pm +++ b/C4/Contract.pm @@ -4,35 +4,36 @@ package C4::Contract; # # 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 2 of the License, or (at your option) any later -# version. +# 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. +# 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, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . +use Modern::Perl; use strict; #use warnings; FIXME - Bug 2505 -use C4::SQLHelper qw(:all); +use C4::Context; +use Koha::Database; -use vars qw($VERSION @ISA @EXPORT); +use vars qw(@ISA @EXPORT); BEGIN { - # set the version for version checking - $VERSION = 3.2; require Exporter; @ISA = qw(Exporter); @EXPORT = qw( - &GetContract - &AddContract - &ModContract - &DelContract + &GetContracts + &GetContract + &AddContract + &ModContract + &DelContract ); } @@ -50,18 +51,92 @@ 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. -This module is just a wrapper for C4::SQLHelper functions, so take a look at -SQLHelper centralised documentation to know how to use the following subs. +=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 { SearchInTable("aqcontract", shift); } +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 AddContract { InsertInTable("aqcontract", shift); } +sub ModContract { + my ($contract) = @_; + my $result = Koha::Database->new()->schema->resultset('Aqcontract')->find($contract); + return unless($result); -sub ModContract { UpdateInTable("aqcontract", shift); } + $result = $result->update($contract); + return $result->in_storage; +} -sub DelContract { DeleteInTable("aqcontract", shift); } +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; @@ -69,6 +144,6 @@ __END__ =head1 AUTHOR -Koha Development Team +Koha Development Team =cut