use strict;
#use warnings; FIXME - Bug 2505
use C4::Context;
-use C4::SQLHelper qw(:all);
+use Koha::Database;
use vars qw($VERSION @ISA @EXPORT);
=cut
sub GetContracts {
- my ($params) = @_;
- my $booksellerid = $params->{booksellerid};
- my $activeonly = $params->{activeonly};
-
- my $dbh = C4::Context->dbh;
- my $query = "SELECT * FROM aqcontract";
- my $result_set;
- if($booksellerid) {
- $query .= " WHERE booksellerid=?";
-
- if($activeonly) {
- $query .= " AND contractenddate >= CURDATE( )";
- }
-
- $result_set = $dbh->selectall_arrayref( $query, { Slice => {} }, $booksellerid );
- }
- else {
- $result_set = $dbh->selectall_arrayref( $query, { Slice => {} } );
+ my ($filters) = @_;
+ if( $filters->{activeonly} ) {
+ $filters->{contractenddate} = {'>=' => \'now()'};
+ delete $filters->{activeonly};
}
- return $result_set;
+ my $rs = Koha::Database->new()->schema->resultset('Aqcontract');
+ $rs = $rs->search($filters);
+ $rs->result_class('DBIx::Class::ResultClass::HashRefInflator');
+ return [ $rs->all ];
}
=head2 GetContract
sub GetContract {
my ($params) = @_;
- my $contractno = $params->{contractnumber};
+ my $contractnumber = $params->{contractnumber};
- my $dbh = C4::Context->dbh;
- my $query = "SELECT * FROM aqcontract WHERE contractnumber=?";
+ my $contracts = GetContracts({
+ contractnumber => $contractnumber,
+ });
+ return $contracts->[0];
+}
+
+sub AddContract {
+ my ($contract) = @_;
+ return unless($contract->{booksellerid});
- my $sth = $dbh->prepare($query);
- $sth->execute($contractno);
- my $result = $sth->fetchrow_hashref;
- return $result;
+ 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);
-#sub GetContract { SearchInTable("aqcontract", shift); }
+ $result = $result->update($contract);
+ return $result->in_storage;
+}
-sub AddContract { InsertInTable("aqcontract", shift); }
+sub DelContract {
+ my ($contract) = @_;
+ return unless($contract->{contractnumber});
-sub ModContract { UpdateInTable("aqcontract", shift); }
+ my $result = Koha::Database->new()->schema->resultset('Aqcontract')->find($contract);
+ return unless($result);
-sub DelContract { DeleteInTable("aqcontract", shift); }
+ eval { $result->delete };
+ return !( $result->in_storage );
+}
1;
use C4::Context;
use C4::Bookseller;
-use Test::More tests => 40;
+use Test::More tests => 43;
BEGIN {
use_ok('C4::Contract');
isnt( $bookseller_id2, undef, 'AddBookseller does not return undef' );
my $contracts = GetContracts();
is( @$contracts, 0, 'GetContracts returns the correct number of contracts' );
+my $contract = GetContract();
+is( $contract, undef, 'GetContract without argument returns undef' );
+
my $my_contract1 = {
contractstartdate => '2014-06-01',
contractdescription => 'My contract description',
booksellerid => $bookseller_id1,
};
-my $my_contract_id1 = AddContract($my_contract1);
+my $my_contract_id1 = AddContract();
+is( $my_contract_id1, undef, 'AddContract without argument returns undef' );
+$my_contract_id1 = AddContract($my_contract1);
isnt( $my_contract_id1, undef, 'AddContract does not return undef' );
+
$contracts = GetContracts();
is( @$contracts, 1, 'AddContract adds a contract' );
-my $contract = GetContract( { contractnumber => $my_contract_id1 } );
+
+$contract = GetContract();
+is( $contract, undef, 'GetContract without argument returns undef' );
+$contract = GetContract( { contractnumber => $my_contract_id1 } );
is( $contract->{contractstartdate}, $my_contract1->{contractstartdate}, 'AddContract stores the contract start date correctly.' );
is( $contract->{contractenddate}, $my_contract1->{contractenddate}, 'AddContract stores the contract end date correctly.' );
is( $contract->{contractname}, $my_contract1->{contractname}, 'AddContract stores the contract name correctly.' );
booksellerid => $bookseller_id2,
};
my $mod_status = ModContract($my_contract1);
-is( $mod_status, '0E0', 'ModContract without the contract number returns 0E0' );
+is( $mod_status, undef, 'ModContract without the contract number returns 0E0' );
$my_contract1->{contractnumber} = $my_contract_id1;
$mod_status = ModContract($my_contract1);
$contracts = GetContracts( { booksellerid => $bookseller_id1 } );
is( @$contracts, 1, 'GetContracts returns the correct number of contracts' );
$contracts = GetContracts({
- booksellerid => $bookseller_id1,
activeonly => 1
});
-is( @$contracts, 0, 'GetContracts with active only returns only current contracts' );
+is( @$contracts, 1, 'GetContracts with active only returns only current contracts' );
$contracts = GetContracts( { booksellerid => $bookseller_id2 } );
is( @$contracts, 1, 'GetContracts returns the correct number of contracts' );
$contracts = GetContracts();