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 . 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 information 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]; } =head2 AddContract Missing POD for AddContract. =cut sub AddContract { my ($contract) = @_; return unless ( $contract->{booksellerid} ); my $rs = Koha::Database->new()->schema->resultset('Aqcontract'); return $rs->create($contract)->id; } =head2 ModContract Missing POD for ModContract. =cut 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; } =head2 DelContract Missing POD for DelContract. =cut 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 =cut