Jonathan Druart
f1f9c6dc74
.pm must not have -x .t must have -x .pl must have -x Test plan: Apply only the first patch, run the tests and confirm that the failures make sense Apply this patch and confirm that the test now returns green Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
139 lines
4.2 KiB
Perl
Executable file
139 lines
4.2 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
use Modern::Perl;
|
|
|
|
use Test::More tests => 14;
|
|
use C4::Context;
|
|
use C4::Acquisition;
|
|
use C4::Biblio;
|
|
use C4::Items;
|
|
use C4::Budgets;
|
|
use Koha::Acquisition::Orders;
|
|
use t::lib::Mocks;
|
|
use t::lib::TestBuilder;
|
|
|
|
my $schema = Koha::Database->schema;
|
|
$schema->storage->txn_begin;
|
|
my $builder = t::lib::TestBuilder->new;
|
|
|
|
# Set up configuration data
|
|
|
|
my $branch = $builder->build( { source => 'Branch' } );
|
|
my $bookseller = $builder->build( { source => 'Aqbookseller' } );
|
|
my $budget = $builder->build( { source => 'Aqbudget' } );
|
|
my $staffmember = $builder->build( { source => 'Borrower' } );
|
|
my $curcode = $builder->build( { source => 'Currency' })->{currencycode};
|
|
|
|
# Create baskets and orders
|
|
|
|
my $basketno = NewBasket(
|
|
$bookseller->{id},
|
|
$staffmember->{borrowernumber},
|
|
'Standing order basket', # basketname
|
|
'', # basketnote
|
|
'', # basketbooksellernote
|
|
undef, # basketcontractnumber
|
|
$branch->{branchcode}, # deliveryplace
|
|
$branch->{branchcode}, # billingplace
|
|
1 # is_standing
|
|
);
|
|
|
|
my $nonstandingbasketno = NewBasket(
|
|
$bookseller->{id},
|
|
$staffmember->{borrowernumber},
|
|
'Non-standing order basket', # basketname
|
|
'', # basketnote
|
|
'', # basketbooksellernote
|
|
undef, # basketcontractnumber
|
|
$branch->{branchcode}, # deliveryplace
|
|
$branch->{branchcode}, # billingplace
|
|
0 # is_standing
|
|
);
|
|
|
|
my $basket = GetBasket($basketno);
|
|
|
|
is( $basket->{is_standing}, 1, 'basket correctly created as standing order basket' );
|
|
|
|
my ( $biblionumber, $biblioitemnumber ) = C4::Biblio::AddBiblio( MARC::Record->new, '' );
|
|
|
|
|
|
my $ordernumber = Koha::Acquisition::Order->new(
|
|
{
|
|
basketno => $basketno,
|
|
biblionumber => $biblionumber,
|
|
budget_id => $budget->{budget_id},
|
|
currency => $curcode,
|
|
quantity => 0,
|
|
rrp => 42,
|
|
rrp_tax_included => 42,
|
|
rrp_tax_excluded => 42,
|
|
ecost => 22,
|
|
ecost_tax_included => 22,
|
|
ecost_tax_excluded => 22,
|
|
unitprice => 12,
|
|
unitprice_tax_included => 12,
|
|
unitprice_tax_excluded => 12,
|
|
tax_rate_on_ordering => 0,
|
|
tax_rate_on_receiving => 0,
|
|
}
|
|
)->store->ordernumber;
|
|
|
|
isnt( $ordernumber, undef, 'standing order successfully created' );
|
|
|
|
my $search_orders = SearchOrders( {
|
|
basketno => $basketno,
|
|
pending => 1,
|
|
ordered => 1,
|
|
} );
|
|
|
|
ok(
|
|
scalar @$search_orders == 1 && $search_orders->[0]->{ordernumber} == $ordernumber,
|
|
'standing order counts as a pending/ordered order'
|
|
);
|
|
|
|
my $invoiceid = AddInvoice(
|
|
invoicenumber => 'invoice',
|
|
booksellerid => $bookseller->{id},
|
|
unknown => "unknown"
|
|
);
|
|
|
|
my $order = Koha::Acquisition::Orders->find( $ordernumber );
|
|
|
|
my ( $datereceived, $new_ordernumber ) = ModReceiveOrder(
|
|
{
|
|
biblionumber => $biblionumber,
|
|
order => $order->unblessed,
|
|
quantityreceived => 2,
|
|
invoiceid => $invoiceid,
|
|
}
|
|
);
|
|
|
|
isnt( $ordernumber, $new_ordernumber, "standing order split on receive" );
|
|
|
|
#order has been updated, refetch
|
|
$order = Koha::Acquisition::Orders->find( $ordernumber );
|
|
my $neworder = Koha::Acquisition::Orders->find( $new_ordernumber );
|
|
|
|
is( $order->orderstatus, 'partial', 'original order set to partially received' );
|
|
is( $order->quantity, 1, 'original order quantity unchanged' );
|
|
is( $order->quantityreceived, 0, 'original order has no received items' );
|
|
isnt( $order->unitprice, 12, 'original order does not get cost' );
|
|
is( $neworder->orderstatus, 'complete', 'new order set to complete' );
|
|
is( $neworder->quantityreceived, 2, 'new order has received items' );
|
|
cmp_ok( $neworder->unitprice, '==', 12, 'new order does get cost' );
|
|
|
|
$search_orders = SearchOrders( {
|
|
basketno => $basketno,
|
|
pending => 1,
|
|
ordered => 1,
|
|
} );
|
|
|
|
is( scalar @$search_orders, 1, 'only one pending order after receive' );
|
|
is( $search_orders->[0]->{ordernumber}, $ordernumber, 'original order is only pending order' );
|
|
|
|
CancelReceipt($new_ordernumber);
|
|
$order = Koha::Acquisition::Orders->find( $ordernumber );
|
|
is( $order->quantity, 1, 'CancelReceipt should not have increased the quantity if order is standing');
|
|
|
|
|
|
$schema->storage->txn_rollback();
|