Bug 12830: Move the order-related code into Koha::Acquisition::Order
[koha.git] / t / db_dependent / Acquisition / TransferOrder.t
1 #!/usr/bin/perl
2
3 use Modern::Perl;
4
5 use Test::More tests => 11;
6 use C4::Context;
7 use C4::Acquisition;
8 use C4::Biblio;
9 use C4::Items;
10 use C4::Bookseller;
11 use C4::Budgets;
12 use Koha::DateUtils;
13 use Koha::Acquisition::Order;
14 use MARC::Record;
15
16 my $dbh = C4::Context->dbh;
17 $dbh->{RaiseError} = 1;
18 $dbh->{AutoCommit} = 0;
19
20 my $booksellerid1 = C4::Bookseller::AddBookseller(
21     {
22         name => "my vendor 1",
23         address1 => "bookseller's address",
24         phone => "0123456",
25         active => 1
26     }
27 );
28
29 my $basketno1 = C4::Acquisition::NewBasket(
30     $booksellerid1
31 );
32
33 my $booksellerid2 = C4::Bookseller::AddBookseller(
34     {
35         name => "my vendor 2",
36         address1 => "bookseller's address",
37         phone => "0123456",
38         active => 1
39     }
40 );
41
42 my $basketno2 = C4::Acquisition::NewBasket(
43     $booksellerid2
44 );
45
46 my $budgetid = C4::Budgets::AddBudget(
47     {
48         budget_code => "budget_code_test_transferorder",
49         budget_name => "budget_name_test_transferorder",
50     }
51 );
52
53 my $budget = C4::Budgets::GetBudget( $budgetid );
54
55 my ($biblionumber, $biblioitemnumber) = AddBiblio(MARC::Record->new, '');
56 my $itemnumber = AddItem({}, $biblionumber);
57
58 my $order = Koha::Acquisition::Order->new(
59     {
60         basketno => $basketno1,
61         quantity => 2,
62         biblionumber => $biblionumber,
63         budget_id => $budget->{budget_id},
64     }
65 )->insert;
66 my $ordernumber = $order->{ordernumber};
67 $order->add_item( $itemnumber );
68
69 # Begin tests
70 is(scalar GetOrders($basketno1), 1, "1 order in basket1");
71 ($order) = GetOrders($basketno1);
72 is(scalar GetItemnumbersFromOrder($order->{ordernumber}), 1, "1 item in basket1's order");
73 is(scalar GetOrders($basketno2), 0, "0 order in basket2");
74
75 # Transfering order to basket2
76 my $newordernumber = TransferOrder($ordernumber, $basketno2);
77 is(scalar GetOrders($basketno1), 0, "0 order in basket1");
78 is(scalar GetOrders($basketno2), 1, "1 order in basket2");
79 ($order) = GetOrders($basketno2);
80 is(scalar GetItemnumbersFromOrder($order->{ordernumber}), 1, "1 item in basket2's order");
81
82 # Bug 11552
83 my $orders = SearchOrders({ ordernumber => $newordernumber });
84 is ( scalar( @$orders ), 1, 'SearchOrders returns 1 order with newordernumber' );
85 $orders = SearchOrders({ ordernumber => $ordernumber });
86 is ( scalar( @$orders ), 1, 'SearchOrders returns 1 order with [old]ordernumber' );
87 is ( $orders->[0]->{ordernumber}, $newordernumber, 'SearchOrders returns newordernumber if [old]ordernumber is given' );
88
89 ModReceiveOrder({
90     biblionumber => $biblionumber,
91     ordernumber => $newordernumber,
92     quantityreceived => 2, 
93     datereceived => dt_from_string(),
94 });
95 CancelReceipt( $newordernumber );
96 $order = GetOrder( $newordernumber );
97 is ( $order->{ordernumber}, $newordernumber, 'Regression test Bug 11549: After a transfer, receive and cancel the receive should be possible.' );
98 is ( $order->{basketno}, $basketno2, 'Regression test Bug 11549: The order still exist in the basket where the transfer has been done.');
99
100 $dbh->rollback;