5 use Test
::More tests
=> 14;
11 use Koha
::Acquisition
::Orders
;
13 use t
::lib
::TestBuilder
;
15 my $schema = Koha
::Database
->schema;
16 $schema->storage->txn_begin;
17 my $builder = t
::lib
::TestBuilder
->new;
19 # Set up configuration data
21 my $branch = $builder->build( { source
=> 'Branch' } );
22 my $bookseller = $builder->build( { source
=> 'Aqbookseller' } );
23 my $budget = $builder->build( { source
=> 'Aqbudget' } );
24 my $staffmember = $builder->build( { source
=> 'Borrower' } );
25 my $curcode = $builder->build( { source
=> 'Currency' })->{currencycode
};
27 # Create baskets and orders
29 my $basketno = NewBasket
(
31 $staffmember->{borrowernumber
},
32 'Standing order basket', # basketname
34 '', # basketbooksellernote
35 undef, # basketcontractnumber
36 $branch->{branchcode
}, # deliveryplace
37 $branch->{branchcode
}, # billingplace
41 my $nonstandingbasketno = NewBasket
(
43 $staffmember->{borrowernumber
},
44 'Non-standing order basket', # basketname
46 '', # basketbooksellernote
47 undef, # basketcontractnumber
48 $branch->{branchcode
}, # deliveryplace
49 $branch->{branchcode
}, # billingplace
53 my $basket = GetBasket
($basketno);
55 is
( $basket->{is_standing
}, 1, 'basket correctly created as standing order basket' );
57 my ( $biblionumber, $biblioitemnumber ) = C4
::Biblio
::AddBiblio
( MARC
::Record
->new, '' );
60 my $ordernumber = Koha
::Acquisition
::Order
->new(
62 basketno
=> $basketno,
63 biblionumber
=> $biblionumber,
64 budget_id
=> $budget->{budget_id
},
68 rrp_tax_included
=> 42,
69 rrp_tax_excluded
=> 42,
71 ecost_tax_included
=> 22,
72 ecost_tax_excluded
=> 22,
74 unitprice_tax_included
=> 12,
75 unitprice_tax_excluded
=> 12,
76 tax_rate_on_ordering
=> 0,
77 tax_rate_on_receiving
=> 0,
79 )->store->ordernumber;
81 isnt
( $ordernumber, undef, 'standing order successfully created' );
83 my $search_orders = SearchOrders
( {
84 basketno
=> $basketno,
90 scalar @
$search_orders == 1 && $search_orders->[0]->{ordernumber
} == $ordernumber,
91 'standing order counts as a pending/ordered order'
94 my $invoiceid = AddInvoice
(
95 invoicenumber
=> 'invoice',
96 booksellerid
=> $bookseller->{id
},
100 my $order = Koha
::Acquisition
::Orders
->find( $ordernumber );
102 my ( $datereceived, $new_ordernumber ) = ModReceiveOrder
(
104 biblionumber
=> $biblionumber,
105 order
=> $order->unblessed,
106 quantityreceived
=> 2,
107 invoiceid
=> $invoiceid,
111 isnt
( $ordernumber, $new_ordernumber, "standing order split on receive" );
113 #order has been updated, refetch
114 $order = Koha
::Acquisition
::Orders
->find( $ordernumber );
115 my $neworder = Koha
::Acquisition
::Orders
->find( $new_ordernumber );
117 is
( $order->orderstatus, 'partial', 'original order set to partially received' );
118 is
( $order->quantity, 1, 'original order quantity unchanged' );
119 is
( $order->quantityreceived, 0, 'original order has no received items' );
120 isnt
( $order->unitprice, 12, 'original order does not get cost' );
121 is
( $neworder->orderstatus, 'complete', 'new order set to complete' );
122 is
( $neworder->quantityreceived, 2, 'new order has received items' );
123 cmp_ok
( $neworder->unitprice, '==', 12, 'new order does get cost' );
125 $search_orders = SearchOrders
( {
126 basketno
=> $basketno,
131 is
( scalar @
$search_orders, 1, 'only one pending order after receive' );
132 is
( $search_orders->[0]->{ordernumber
}, $ordernumber, 'original order is only pending order' );
134 CancelReceipt
($new_ordernumber);
135 $order = Koha
::Acquisition
::Orders
->find( $ordernumber );
136 is
( $order->quantity, 1, 'CancelReceipt should not have increased the quantity if order is standing');
139 $schema->storage->txn_rollback();