6 use SL::Dev::Part qw(new_part new_assembly);
7 use SL::Dev::Inventory qw(create_warehouse_and_bins set_stock);
8 use SL::Dev::Record qw(create_sales_order);
9 use SL::DB::Helper::Reservation qw(make_reservation);
11 use_ok 'Support::TestSetup';
13 use_ok 'SL::DB::Part';
14 use_ok 'SL::DB::Warehouse';
15 use_ok 'SL::DB::Inventory';
17 use_ok 'SL::Helper::Inventory';
19 Support::TestSetup::login();
21 my ($wh, $bin1, $bin2, $assembly1);
24 create_standard_stock();
27 # simple stock in, get_stock, get_onhand
34 is(SL::Helper::Inventory::get_stock(part => $assembly1), "25.00000", 'simple get_stock works');
35 is(SL::Helper::Inventory::get_onhand(part => $assembly1), "25.00000", 'simple get_onhand works');
37 # stock on some more, get_stock, get_onhand
40 parts_id => $assembly1->id,
42 transfer_type => 'stock',
43 dst_warehouse_id => $bin1->warehouse_id,
44 dst_bin_id => $bin1->id,
49 parts_id => $assembly1->id,
51 transfer_type => 'stock',
52 chargenumber => '298345',
53 dst_warehouse_id => $bin1->warehouse_id,
54 dst_bin_id => $bin1->id,
58 is(SL::Helper::Inventory::get_stock(part => $assembly1), "60.00000", 'normal get_stock works');
59 is(SL::Helper::Inventory::get_onhand(part => $assembly1), "60.00000", 'normal get_onhand works');
61 # reserve some of it, get_stock, get_onhand
63 my $order = create_sales_order(save => 1);
68 reserve_for => $order,
72 is(WH->get_stock_(part => $assembly1), "60.00000", 'normal get_stock works');
73 is(WH->get_onhand_(part => $assembly1), "35.00000", 'normal get_onhand works');
77 my @allocations = SL::Helper::Inventory::allocate(
82 is_deeply(\%{ $allocations[0] }, {
86 parts_id => $assembly1->id,
88 reserve_for_id => undef,
89 reserve_for_table => undef,
90 warehouse_id => $wh->id,
92 for_object_id => undef,
93 }, 'allocation works');
103 # produce the same using auto_allocation
107 SL::DB::Manager::Order->delete_all(all => 1);
108 SL::DB::Manager::Inventory->delete_all(all => 1);
109 SL::DB::Manager::Assembly->delete_all(all => 1);
110 SL::DB::Manager::Part->delete_all(all => 1);
111 SL::DB::Manager::Bin->delete_all(all => 1);
112 SL::DB::Manager::Warehouse->delete_all(all => 1);
115 sub create_standard_stock {
116 ($wh, $bin1) = create_warehouse_and_bins();
117 $bin2 = SL::DB::Bin->new(description => "Bin 2", warehouse => $wh)->save;
120 $assembly1 = new_assembly()->save;