Revision 554ddc07
Von Werner Hahn vor mehr als 1 Jahr hinzugefügt
SL/Controller/DispositionManager.pm | ||
---|---|---|
8 | 8 |
use SL::DB::PurchaseBasketItem; |
9 | 9 |
use SL::PriceSource; |
10 | 10 |
use SL::Locale::String qw(t8); |
11 |
use SL::Helper::Flash qw(flash); |
|
12 |
|
|
11 | 13 |
use Data::Dumper; |
12 | 14 |
|
13 | 15 |
sub action_list_parts { |
... | ... | |
28 | 30 |
my $basket_part = SL::DB::PurchaseBasketItem->new( |
29 | 31 |
parts_id => $part->id, |
30 | 32 |
qty => $part->ordersize, # was ist wenn order_size < (rop-onhand) ist? sollte dann nicht (rop-onhand) genommen werden? |
31 |
orderer => SL::DB::Manager::Employee->current;
|
|
33 |
orderer => SL::DB::Manager::Employee->current,
|
|
32 | 34 |
)->save; |
33 | 35 |
} |
34 | 36 |
$self->action_show_basket; |
... | ... | |
38 | 40 |
sub action_show_basket { |
39 | 41 |
my ( $self ) = @_; |
40 | 42 |
|
41 |
$::request->{layout}->add_javascripts('kivi.DispositionManager.js'); |
|
43 |
$::request->{layout}->add_javascripts('kivi.DispositionManager.js', 'kivi.PartDetail.js');
|
|
42 | 44 |
my $basket_items = SL::DB::Manager::PurchaseBasketItem->get_all( query => [ cleared => 'F' ], with_objects => [ 'part', 'part.makemodels' ]); |
43 | 45 |
$self->_setup_show_basket_action_bar; |
44 | 46 |
$self->render('disposition_manager/show_purchase_basket', BASKET_ITEMS => $basket_items, title => "Purchase basket" ); |
45 | 47 |
} |
46 | 48 |
|
49 |
sub action_show_vendor_items { |
|
50 |
my ( $self ) = @_; |
|
51 |
|
|
52 |
my $makemodels_parts = SL::DB::Manager::Part->get_all( query => [ 'makemodels.make' => $::form->{v_id}, '!id' => ['5599'], ], sort_by => 'onhand', with_objects => [ 'makemodels' ]); |
|
53 |
$self->render('disposition_manager/_show_vendor_parts', { layout => 0 }, MAKEMODEL_ITEMS => $makemodels_parts); |
|
54 |
} |
|
55 |
|
|
47 | 56 |
sub action_transfer_to_purchase_order { |
48 | 57 |
|
49 | 58 |
my ( $self ) = @_; |
50 | 59 |
require SL::DB::Order; |
51 | 60 |
require SL::DB::OrderItem; |
52 |
require SL::DB::Part; |
|
53 | 61 |
require SL::DB::Vendor; |
54 | 62 |
my @error_report; |
55 | 63 |
|
64 |
unless (($::form->{ids} && scalar @{ $::form->{ids}}) || ( $::form->{vendor_part_ids} && scalar @{ $::form->{vendor_part_ids}})) { |
|
65 |
die 'There are no items selected'; |
|
66 |
} |
|
56 | 67 |
my $v_id = $::form->{vendor_ids}->[0] ; |
57 | 68 |
|
58 | 69 |
my ($vendor, $employee); |
59 | 70 |
$vendor = SL::DB::Manager::Vendor->find_by(id => $v_id) or die "Can't find vendor"; |
60 | 71 |
$employee = SL::DB::Manager::Employee->current or die "Can't find employee"; |
61 | 72 |
|
62 |
my $basket_items = SL::DB::Manager::PurchaseBasketItem->get_all( query => [ id => \@{ $::form->{ids} } ] ); |
|
73 |
|
|
74 |
my $basket_items; |
|
75 |
$basket_items = SL::DB::Manager::PurchaseBasketItem->get_all( query => [ id => \@{ $::form->{ids} } ] ) if ($::form->{ids} && scalar @{ $::form->{ids}}); |
|
76 |
|
|
77 |
my $vendor_items; |
|
78 |
$vendor_items = SL::DB::Manager::Part->get_all( query => [ id => \@{ $::form->{vendor_part_ids} } ] ) if ($::form->{vendor_part_ids} && scalar @{ $::form->{vendor_part_ids}}); |
|
63 | 79 |
|
64 | 80 |
# create order first so we have a record for PriceSource |
65 | 81 |
my $order = SL::DB::Order->new( |
... | ... | |
76 | 92 |
my $i = 0; |
77 | 93 |
my @items; |
78 | 94 |
|
79 |
foreach my $basket_item ( @{ $basket_items } ) { |
|
80 |
$i++; |
|
81 |
my $mm = SL::DB::Manager::MakeModel->get_first( query => [ make => $vendor->id, parts_id => $basket_item->parts_id] ); |
|
82 |
|
|
83 |
my $current_order_item = SL::DB::OrderItem->new( |
|
84 |
part => $basket_item->part, |
|
85 |
description => $basket_item->part->description, |
|
86 |
qty => $basket_item->qty || 1, |
|
87 |
unit => $basket_item->part->unit, |
|
88 |
position => $i, |
|
89 |
); |
|
95 |
if ($::form->{ids} && scalar @{ $::form->{ids}}) { |
|
96 |
foreach my $basket_item ( @{ $basket_items } ) { |
|
97 |
$i++; |
|
98 |
|
|
99 |
my $current_order_item = SL::DB::OrderItem->new( |
|
100 |
part => $basket_item->part, |
|
101 |
description => $basket_item->part->description, |
|
102 |
qty => $basket_item->part->min_order_qty || 1, |
|
103 |
unit => $basket_item->part->unit, |
|
104 |
position => $i, |
|
105 |
orderer_id => $basket_item->orderer->id, |
|
106 |
); |
|
107 |
|
|
108 |
my $price_source = SL::PriceSource->new(record_item => $current_order_item, record => $order); |
|
109 |
$current_order_item->sellprice($price_source->best_price->price); |
|
110 |
$current_order_item->active_price_source($price_source->best_price->source); |
|
111 |
push(@items, $current_order_item); |
|
112 |
} |
|
113 |
} |
|
90 | 114 |
|
91 |
my $price_source = SL::PriceSource->new(record_item => $current_order_item, record => $order); |
|
92 |
$current_order_item->sellprice($price_source->best_price->price); |
|
93 |
$current_order_item->active_price_source($price_source->best_price->source); |
|
94 |
push(@items, $current_order_item); |
|
115 |
if ($::form->{vendor_part_ids} && scalar @{ $::form->{vendor_part_ids}}) { |
|
116 |
foreach my $vendor_item ( @{ $vendor_items } ) { |
|
117 |
$i++; |
|
118 |
|
|
119 |
my $current_order_item = SL::DB::OrderItem->new( |
|
120 |
part => $vendor_item, |
|
121 |
description => $vendor_item->description, |
|
122 |
qty => $vendor_item->min_order_qty || 1, |
|
123 |
unit => $vendor_item->unit, |
|
124 |
position => $i, |
|
125 |
orderer_id => $employee->id, |
|
126 |
); |
|
127 |
|
|
128 |
my $price_source = SL::PriceSource->new(record_item => $current_order_item, record => $order); |
|
129 |
$current_order_item->sellprice($price_source->best_price->price); |
|
130 |
$current_order_item->active_price_source($price_source->best_price->source); |
|
131 |
push(@items, $current_order_item); |
|
132 |
} |
|
95 | 133 |
} |
96 | 134 |
|
97 | 135 |
$order->orderitems( [ @items ] ); |
136 |
|
|
98 | 137 |
$order->db->with_transaction( sub { |
99 | 138 |
$order->calculate_prices_and_taxes; |
100 | 139 |
$order->save; |
... | ... | |
112 | 151 |
$item->{custom_variables} = \@{ $item->cvars_by_config }; |
113 | 152 |
$item->save; |
114 | 153 |
} |
115 |
SL::DB::Manager::PurchaseBasketItem->delete_all( where => [ id => \@{ $::form->{ids} }]); |
|
154 |
SL::DB::Manager::PurchaseBasketItem->delete_all( where => [ id => \@{ $::form->{ids} }]) if ($::form->{ids} && scalar @{ $::form->{ids}});
|
|
116 | 155 |
return 1; |
117 | 156 |
}) || die "error: " . $order->db->error; |
118 | 157 |
$self->redirect_to(controller => "oe.pl", action => 'edit', type => 'purchase_order', vc => 'vendor', id => $order->id); |
... | ... | |
153 | 192 |
$bar->add( |
154 | 193 |
action => [ |
155 | 194 |
t8('Reload'), |
156 |
submit => [ '#purchasebasket', { action => "DispositionManager/show_basket" } ],
|
|
195 |
link => $self->url_for(controller => 'DispositionManager', action => 'show_basket'),
|
|
157 | 196 |
], |
158 | 197 |
action => [ |
159 | 198 |
t8('Action'), |
... | ... | |
218 | 257 |
|
219 | 258 |
Shows a list with parts which are in the basket. |
220 | 259 |
This list can be filtered by vendor. Then you can create a purchase order. |
260 |
When filtered by vendor, a table with the parts from the vendor of the purchase basket and |
|
261 |
a table with all parts from the vendor will be shown. From there you can mark |
|
262 |
the parts and create an order |
|
221 | 263 |
|
222 | 264 |
=item C<action_transfer_to_purchase_order> |
223 | 265 |
|
Auch abrufbar als: Unified diff
Dispositionsmanager Zusätzliche Artikel des Lieferanten anzeigen