X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;ds=sidebyside;f=C4%2FContract.pm;h=2630af403e872fbbb23ad3b9d456d56feb9e4523;hb=7d9d79566991dadfaca1a058989d03358a1df6ce;hp=28e4e7598dbb0767852f7f819c3047d637e46317;hpb=7183a241c4f696c0f7cea9868ee82573328fe98a;p=koha-ffzg.git diff --git a/C4/Contract.pm b/C4/Contract.pm index 28e4e7598d..2630af403e 100644 --- a/C4/Contract.pm +++ b/C4/Contract.pm @@ -4,36 +4,35 @@ 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 strict; -#use warnings; FIXME - Bug 2505 -use C4::SQLHelper qw(:all); +use Modern::Perl; +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.07.00.049; require Exporter; - @ISA = qw(Exporter); - @EXPORT = qw( - &GetContract - &AddContract - &ModContract - &DelContract - ); + @ISA = qw(Exporter); + @EXPORT = qw( + GetContracts + GetContract + AddContract + ModContract + DelContract + ); } =head1 NAME @@ -50,18 +49,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;