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);
10 use_ok 'Support::TestSetup';
12 use_ok 'SL::DB::Part';
13 use_ok 'SL::DB::Warehouse';
14 use_ok 'SL::DB::Inventory';
16 use_ok 'SL::Helper::Inventory';
18 Support::TestSetup::login();
20 my ($wh, $bin1, $bin2, $assembly1);
23 create_standard_stock();
26 # simple stock in, get_stock, get_onhand
33 is(SL::Helper::Inventory::get_stock(part => $assembly1), "25.00000", 'simple get_stock works');
34 is(SL::Helper::Inventory::get_onhand(part => $assembly1), "25.00000", 'simple get_onhand works');
36 # stock on some more, get_stock, get_onhand
39 parts_id => $assembly1->id,
41 transfer_type => 'stock',
42 dst_warehouse_id => $bin1->warehouse_id,
43 dst_bin_id => $bin1->id,
48 parts_id => $assembly1->id,
50 transfer_type => 'stock',
51 chargenumber => '298345',
52 dst_warehouse_id => $bin1->warehouse_id,
53 dst_bin_id => $bin1->id,
57 is(SL::Helper::Inventory::get_stock(part => $assembly1), "60.00000", 'normal get_stock works');
58 is(SL::Helper::Inventory::get_onhand(part => $assembly1), "60.00000", 'normal get_onhand works');
62 my @allocations = SL::Helper::Inventory::allocate(
67 is_deeply(\%{ $allocations[0] }, {
71 parts_id => $assembly1->id,
73 warehouse_id => $wh->id,
75 for_object_id => undef,
76 }, 'allocation works');
84 # produce the same using auto_allocation
88 SL::DB::Manager::Order->delete_all(all => 1);
89 SL::DB::Manager::Inventory->delete_all(all => 1);
90 SL::DB::Manager::Assembly->delete_all(all => 1);
91 SL::DB::Manager::Part->delete_all(all => 1);
92 SL::DB::Manager::Bin->delete_all(all => 1);
93 SL::DB::Manager::Warehouse->delete_all(all => 1);
96 sub create_standard_stock {
97 ($wh, $bin1) = create_warehouse_and_bins();
98 $bin2 = SL::DB::Bin->new(description => "Bin 2", warehouse => $wh)->save;
101 $assembly1 = new_assembly()->save;