Revision c7ad052c
Von Kivitendo Admin vor etwa 1 Jahr hinzugefügt
t/controllers/disposition_manager/disposition_manager.t | ||
---|---|---|
1 | 1 |
use strict; |
2 |
use Test::More; |
|
2 |
use Test::More tests => 9;
|
|
3 | 3 |
|
4 | 4 |
use lib 't'; |
5 | 5 |
use Support::TestSetup; |
... | ... | |
7 | 7 |
use SL::DB::Part; |
8 | 8 |
use SL::DB::Inventory; |
9 | 9 |
use SL::DB::MakeModel; |
10 |
use SL::DB::PurchaseBasket; |
|
11 |
use SL::Controller::DispositionsManager;
|
|
10 |
use SL::DB::PurchaseBasketItem;
|
|
11 |
use SL::Controller::DispositionManager; |
|
12 | 12 |
use DateTime; |
13 | 13 |
use Data::Dumper; |
14 | 14 |
use SL::Dev::Part qw(new_part); |
... | ... | |
25 | 25 |
my $vendor = new_vendor()->save; |
26 | 26 |
|
27 | 27 |
my $part1 = new_part( |
28 |
partnumber => 'Testpart 1 rop no stock', |
|
28 |
partnumber => 'TP 1', |
|
29 |
description => 'Testpart 1 rop no stock', |
|
30 |
sellprice => 5, |
|
31 |
lastcost => 3, |
|
29 | 32 |
rop => 20, |
30 | 33 |
warehouse_id => $wh->id, |
31 | 34 |
bin_id => $bin->id, |
... | ... | |
33 | 36 |
)->save; |
34 | 37 |
|
35 | 38 |
my $part2 = new_part( |
36 |
partnumber => 'Testpart 2 rop with stock', |
|
39 |
partnumber => 'TP 2', |
|
40 |
description => 'Testpart 2 norop', |
|
37 | 41 |
rop => 60, |
38 | 42 |
)->save; |
39 |
set_stock(part => $part2, bin_id => $bin->id, qty => 10); |
|
43 |
set_stock(part => $part2, bin_id => $bin->id, qty => 80); |
|
44 |
|
|
45 |
for my $i (1 .. 10) { |
|
46 |
my $part = new_part( |
|
47 |
partnumber => "TPO $i", |
|
48 |
description => "Testpart onhand $i", |
|
49 |
rop => 50, |
|
50 |
sellprice => 5, |
|
51 |
lastcost => 3, |
|
52 |
warehouse_id => $wh->id, |
|
53 |
bin_id => $bin->id, |
|
54 |
makemodels => [ _create_makemodel_for_vendor(vendor => $vendor) ], |
|
55 |
)->save; |
|
56 |
set_stock(part => $part, bin_id => $bin->id, qty => ($i * 10)); |
|
57 |
} |
|
40 | 58 |
|
41 |
my $part3 = new_part( |
|
42 |
partnumber => 'Testpart 3 norop', |
|
43 |
rop => 60, |
|
44 |
)->save; |
|
45 |
set_stock(part => $part3, bin_id => $bin->id, qty => 80); |
|
59 |
my $controller = SL::Controller::DispositionManager->new(); |
|
60 |
my $reorder_parts = $controller->_get_parts; |
|
61 |
is(scalar @{$reorder_parts}, 6, "found 6 parts where onhand <= rop"); |
|
62 |
|
|
63 |
# die; # die here if you want to test making basket manually |
|
64 |
|
|
65 |
note('creating purchase basket items'); |
|
66 |
$::form = Support::TestSetup->create_new_form; |
|
67 |
$::form->{ids} = [ map { $_->id } @{$reorder_parts} ]; |
|
68 |
|
|
69 |
# call action_add_to_purchase_basket while redirecting rendered HTML output |
|
70 |
my $output; |
|
71 |
open(my $outputFH, '>', \$output) or die; |
|
72 |
my $oldFH = select $outputFH; |
|
73 |
$controller->action_add_to_purchase_basket; |
|
74 |
select $oldFH; |
|
75 |
close $outputFH; |
|
76 |
|
|
77 |
is(SL::DB::Manager::PurchaseBasketItem->get_all_count(), 6, "6 items in purchase basket ok"); |
|
78 |
|
|
79 |
# die; # die here if you want to test creating purchase orders manually |
|
80 |
|
|
81 |
note('making purchase order from purchase basket items'); |
|
82 |
my $purchase_basket_items = SL::DB::Manager::PurchaseBasketItem->get_all; |
|
83 |
$::form = Support::TestSetup->create_new_form; |
|
84 |
$::form->{ids} = [ map { $_->id } @{ $purchase_basket_items } ]; |
|
85 |
$::form->{vendor_ids} = [ map { $vendor->id } @{ $purchase_basket_items } ]; |
|
86 |
|
|
87 |
$controller->action_transfer_to_purchase_order; |
|
88 |
|
|
89 |
is(SL::DB::Manager::Order->get_all_count( where => [ SL::DB::Manager::Order->type_filter('purchase_order') ] ), 1, "1 purchase order created ok"); |
|
90 |
is(SL::DB::Manager::PurchaseBasketItem->get_all_count(), 0, "purchase basket empty after purchase order was created"); |
|
46 | 91 |
|
47 |
my $controller = SL::Controller::DispositionsManager->new(); |
|
48 |
my $parts = $controller->_get_parts; |
|
92 |
my $purchase_order = SL::DB::Manager::Order->get_first(); |
|
49 | 93 |
|
50 |
is(scalar @{$parts}, 2, "found 2 parts that are below rop"); |
|
94 |
is( scalar @{$purchase_order->items}, 6, "Purchase order has 6 item ok"); |
|
95 |
my $first_item = $purchase_order->items_sorted->[0]; |
|
96 |
is( $first_item->parts_id, $part1->id, "Purchase order: first item is part1"); |
|
97 |
is( $first_item->qty, 1, "Purchase order: first item has qty 1"); |
|
98 |
cmp_ok( $purchase_order->netamount, '==', 12, "Purchase order: netamount ok"); |
|
99 |
is( $first_item->active_price_source, 'makemodel/' . $first_item->part->makemodels->[0]->id, "Purchase order: first item has correct active_price_source"); |
|
51 | 100 |
|
52 | 101 |
done_testing(); |
53 | 102 |
# clear_up(); |
... | ... | |
56 | 105 |
my %params = @_; |
57 | 106 |
SL::DB::Manager::Inventory->delete_all(all => 1); |
58 | 107 |
SL::DB::Manager::Order->delete_all(all => 1); |
59 |
SL::DB::Manager::PurchaseBasket->delete_all(all => 1); |
|
108 |
SL::DB::Manager::PurchaseBasketItem->delete_all(all => 1);
|
|
60 | 109 |
SL::DB::Manager::MakeModel->delete_all(all => 1); |
61 | 110 |
SL::DB::Manager::Part->delete_all(all => 1); |
62 | 111 |
SL::DB::Manager::Vendor->delete_all(all => 1); |
... | ... | |
73 | 122 |
my $mm = SL::DB::MakeModel->new(make => $vendor->id, |
74 | 123 |
model => '', |
75 | 124 |
min_order_qty => '1', |
76 |
lastcost => 0,
|
|
125 |
lastcost => 2,
|
|
77 | 126 |
sortorder => 1, |
78 | 127 |
); |
79 | 128 |
$mm->assign_attributes( %params ); |
Auch abrufbar als: Unified diff
Disposition Manager - ein paar Änderungen 2 neu
Folgende Sachen habe ich umbenannt:
DispositionsManager
> DispositionManager>PurchaseBucketItem: rose foreign key Relationship für parts: parts -> partdispositionsmanager -> disposition_manager
purchase_bucket -> purchase_bucket_item
form arrayrefs: id -> ids, vendor_id -> vendor_ids
SL::DB::MetaSetup
Dadurch, daß sich die Dateinamen geändert haben, ist leider die
git-Änderungshistorie ausgehebelt...