3 # This Koha test module is a stub!
4 # Add more tests here!!!
7 use POSIX qw(strftime);
9 use C4::Bookseller qw( GetBookSellerFromId );
11 use Test::More tests => 62;
14 use_ok('C4::Acquisition');
15 use_ok('C4::Bookseller');
17 use_ok('C4::Budgets');
18 use_ok('C4::Bookseller');
21 my $dbh = C4::Context->dbh;
22 $dbh->{AutoCommit} = 0;
23 $dbh->{RaiseError} = 1;
25 my $booksellerid = C4::Bookseller::AddBookseller(
28 address1 => "bookseller's address",
35 my $booksellerinfo = C4::Bookseller::GetBookSellerFromId( $booksellerid );
37 is($booksellerinfo->{deliverytime}, 5, 'set deliverytime when creating vendor (Bug 10556)');
39 my ($basket, $basketno);
40 ok($basketno = NewBasket($booksellerid, 1), "NewBasket( $booksellerid , 1 ) returns $basketno");
41 ok($basket = GetBasket($basketno), "GetBasket($basketno) returns $basket");
43 my $budgetid = C4::Budgets::AddBudget(
45 budget_code => "budget_code_test_getordersbybib",
46 budget_name => "budget_name_test_getordersbybib",
49 my $budget = C4::Budgets::GetBudget( $budgetid );
51 my ($ordernumber1, $ordernumber2, $ordernumber3);
52 my ($biblionumber1, $biblioitemnumber1) = AddBiblio(MARC::Record->new, '');
53 my ($biblionumber2, $biblioitemnumber2) = AddBiblio(MARC::Record->new, '');
54 ( undef, $ordernumber1 ) = C4::Acquisition::NewOrder(
56 basketno => $basketno,
58 biblionumber => $biblionumber1,
59 budget_id => $budget->{budget_id},
63 ( undef, $ordernumber2 ) = C4::Acquisition::NewOrder(
65 basketno => $basketno,
67 biblionumber => $biblionumber2,
68 budget_id => $budget->{budget_id},
72 ( undef, $ordernumber3 ) = C4::Acquisition::NewOrder(
74 basketno => $basketno,
76 biblionumber => $biblionumber2,
77 budget_id => $budget->{budget_id},
83 my $orders = SearchOrders({
84 booksellerid => $booksellerid,
87 isa_ok( $orders, 'ARRAY' );
88 is(scalar(@$orders), 3, 'retrieved 3 pending orders');
90 ok( exists( @$orders[0]->{basketgroupid} ), "SearchOrder: The basketgroupid key exists" );
91 ok( exists( @$orders[0]->{basketgroupname} ), "SearchOrder: The basketgroupname key exists" );
93 ok( GetBudgetByOrderNumber($ordernumber1)->{'budget_id'} eq $budgetid, "GetBudgetByOrderNumber returns expected budget" );
95 C4::Acquisition::CloseBasket( $basketno );
96 my @lateorders = GetLateOrders(0);
97 my $order = $lateorders[0];
98 AddClaim( $order->{ordernumber} );
99 my $neworder = GetOrder( $order->{ordernumber} );
100 is( $neworder->{claimed_date}, strftime( "%Y-%m-%d", localtime(time) ), "AddClaim : Check claimed_date" );
102 my @expectedfields = qw( basketno
110 datecancellationprinted
133 my $firstorder = $orders->[0];
134 for my $field ( @expectedfields ) {
135 ok( exists( $firstorder->{ $field } ), "This order has a $field field" );
138 # fake receiving the order
140 ordernumber => $firstorder->{ordernumber},
141 biblionumber => $firstorder->{biblionumber},
142 quantityreceived => $firstorder->{quantity},
144 my $pendingorders = SearchOrders({
145 booksellerid => $booksellerid,
148 is(scalar(@$pendingorders), 2, 'retrieved 2 pending orders after receiving on one (bug 10723)');
149 my $allorders = SearchOrders({
150 booksellerid => $booksellerid,
152 is(scalar(@$allorders), 3, 'retrieved all 3 orders even after after receiving on one (bug 10723)');
154 my $invoiceid = AddInvoice(
155 invoicenumber => 'invoice',
156 booksellerid => $booksellerid,
160 my ($datereceived, $new_ordernumber) = ModReceiveOrder(
170 my $order2 = GetOrder( $ordernumber2 );
171 is($order2->{'quantityreceived'}, 0, 'Splitting up order did not receive any on original order');
172 is($order2->{'quantity'}, 40, '40 items on original order');
173 is($order2->{'budget_id'}, $budgetid, 'Budget on original order is unchanged');
175 $neworder = GetOrder( $new_ordernumber );
176 is($neworder->{'quantity'}, 2, '2 items on new order');
177 is($neworder->{'quantityreceived'}, 2, 'Splitting up order received items on new order');
178 is($neworder->{'budget_id'}, $budgetid, 'Budget on new order is unchanged');
180 my $budgetid2 = C4::Budgets::AddBudget(
182 budget_code => "budget_code_test_modrecv",
183 budget_name => "budget_name_test_modrecv",
187 ($datereceived, $new_ordernumber) = ModReceiveOrder(
199 my $order3 = GetOrder( $ordernumber3 );
200 is($order3->{'quantityreceived'}, 0, 'Splitting up order did not receive any on original order');
201 is($order3->{'quantity'}, 2, '2 items on original order');
202 is($order3->{'budget_id'}, $budgetid, 'Budget on original order is unchanged');
204 $neworder = GetOrder( $new_ordernumber );
205 is($neworder->{'quantity'}, 2, '2 items on new order');
206 is($neworder->{'quantityreceived'}, 2, 'Splitting up order received items on new order');
207 is($neworder->{'budget_id'}, $budgetid2, 'Budget on new order is changed');
209 ($datereceived, $new_ordernumber) = ModReceiveOrder(
221 $order3 = GetOrder( $ordernumber3 );
222 is($order3->{'quantityreceived'}, 2, 'Order not split up');
223 is($order3->{'quantity'}, 2, '2 items on order');
224 is($order3->{'budget_id'}, $budgetid2, 'Budget has changed');