use Modern::Perl;
-use Test::More tests => 10;
-use Data::Dumper;
+use Test::More tests => 12;
-use_ok('C4::Serials');
-use_ok('C4::Budgets');
-use_ok('C4::Acquisition');
-my $supplierlist=eval{GetSuppliersWithLateIssues()};
-ok(length($@)==0,"No SQL problem in GetSuppliersWithLateIssues");
+use t::lib::TestBuilder;
-my $biblionumber = 1;
-my $budgetid;
+use_ok('C4::Acquisition', qw( NewBasket AddInvoice GetInvoice ModReceiveOrder GetInvoices ));
+use_ok('C4::Biblio', qw( AddBiblio ));
+use_ok('C4::Budgets', qw( AddBudgetPeriod AddBudget ));
+use_ok('C4::Serials', qw( NewSubscription GetSubscription subscriptionCurrentlyOnOrder ));
+
+use Koha::Acquisition::Orders;
+use Koha::Database;
+
+# Start transaction
+my $schema = Koha::Database->new()->schema();
+$schema->storage->txn_begin();
+my $builder = t::lib::TestBuilder->new;
+my $dbh = C4::Context->dbh;
+
+my $curcode = $builder->build({ source => 'Currency' })->{currencycode};
+
+my $bookseller = Koha::Acquisition::Bookseller->new(
+ {
+ name => "my vendor",
+ address1 => "bookseller's address",
+ phone => "0123456",
+ active => 1
+ }
+)->store;
+
+my ($biblionumber, $biblioitemnumber) = AddBiblio(MARC::Record->new, '');
my $bpid = AddBudgetPeriod({
- budget_period_startdate => '01-01-2015',
- budget_period_enddate => '31-12-2015',
- budget_description => "budget desc"
+ budget_period_startdate => '2015-01-01',
+ budget_period_enddate => '2015-12-31',
+ budget_period_description => "budget desc"
});
my $budget_id = AddBudget({
budget_amount => "123.132",
budget_name => "Périodiques",
budget_notes => "This is a note",
- budget_description => "Serials",
- budget_active => 1,
budget_period_id => $bpid
});
my $subscriptionid = NewSubscription(
- undef, "", undef, undef, $budget_id, $biblionumber, '01-01-2013',undef,
- undef, undef, undef, undef, undef, undef, undef, undef,
- undef, undef, undef, undef, undef, undef, undef, undef,
- undef, undef, undef, undef, undef, undef, undef, 1,
- "notes", undef, undef, undef, undef, undef, undef, 0,
- "intnotes", 0, undef, undef, 0, undef, '31-12-2013',
+ undef, "", undef, undef, $budget_id, $biblionumber,
+ '2013-01-01',undef, undef, undef, undef,
+ undef, undef, undef, undef, undef, undef,
+ 1, "notes",undef, '2013-01-01', undef, undef,
+ undef, undef, 0, "intnotes", 0,
+ undef, undef, 0, undef, '2013-12-31', 0
);
die unless $subscriptionid;
+
+my $basketno;
+ok($basketno = NewBasket($bookseller->id, 1), "NewBasket( " . $bookseller->id . ", 1 ) returns $basketno");
+
my $cost = 42.00;
my $subscription = GetSubscription( $subscriptionid );
-my ( $basketno, $ordernumber ) = NewOrder({
+
+my $order = Koha::Acquisition::Order->new({
biblionumber => $subscription->{biblionumber},
- entrydate => '01-01-2013',
+ entrydate => '2013-01-01',
quantity => 1,
- currency => 'USD',
+ currency => $curcode,
listprice => $cost,
- notes => "This is a note",
- basketno => 1,
+ basketno => $basketno,
rrp => $cost,
ecost => $cost,
- gstrate => 0.0500,
- orderstatus => 0,
+ orderstatus => 'new',
subscriptionid => $subscription->{subscriptionid},
budget_id => $budget_id,
-});
+})->store;
+my $ordernumber = $order->ordernumber;
my $is_currently_on_order = subscriptionCurrentlyOnOrder( $subscription->{subscriptionid} );
is ( $is_currently_on_order, 1, "The subscription is currently on order");
-my $order = GetLastOrderNotReceivedFromSubscriptionid( $subscription->{subscriptionid} );
+$order = Koha::Acquisition::Orders->search({ subscriptionid => $subscription->{subscriptionid}, datereceived => undef })->next->unblessed;
is ( $order->{subscriptionid}, $subscription->{subscriptionid}, "test subscriptionid for the last order not received");
ok( $order->{ecost} == $cost, "test cost for the last order not received");
+$dbh->do(q{DELETE FROM aqinvoices});
+my $invoiceid = AddInvoice(invoicenumber => 'invoice1', booksellerid => $bookseller->id, unknown => "unknown");
+
+my $invoice = GetInvoice( $invoiceid );
+$invoice->{datereceived} = '2013-01-02';
+
my ( $datereceived, $new_ordernumber ) = ModReceiveOrder(
- $biblionumber, $ordernumber, 1, undef, $cost, $cost,
- undef, $cost, $budget_id, '02-01-2013', undef);
+ {
+ biblionumber => $biblionumber,
+ order => $order,
+ quantityreceived => 1,
+ budget_id => $budget_id,
+ invoice => $invoice,
+ }
+);
+
+$order = Koha::Acquisition::Orders->search(
+ {
+ subscriptionid => $subscriptionid,
+ datereceived => { '!=' => undef }
+ },
+ {
+ order_by => [ { -desc => 'datereceived' }, { -desc => 'ordernumber' } ]
+ }
+)->next->unblessed;
-$order = GetLastOrderReceivedFromSubscriptionid( $subscription->{subscriptionid} );
is ( $order->{subscriptionid}, $subscription->{subscriptionid}, "test subscriptionid for the last order received");
ok( $order->{ecost} == $cost, "test cost for the last order received");
-$order = GetLastOrderNotReceivedFromSubscriptionid( $subscription->{subscriptionid} );
-is ( $order, undef, "test no not received order for a received order");
+$order = Koha::Acquisition::Orders->search({ subscriptionid => $subscription->{subscriptionid}, datereceived => undef });
+is ( $order->count, 0, "test no not received order for a received order");
+
+my @invoices = GetInvoices();
+my @invoices_linked_to_subscriptions = grep { $_->{is_linked_to_subscriptions} } @invoices;
+is(scalar(@invoices_linked_to_subscriptions), 1, 'GetInvoices() can identify invoices that are linked to a subscription');
-# cleaning
-DelSubscription( $subscription->{subscriptionid} );
-DelOrder( $subscription->{biblionumber}, $ordernumber );
-DelBudgetPeriod($bpid);
-DelBudget($budget_id);
+# Cleanup
+$schema->storage->txn_rollback();