Revision fed28e9e
Von Werner Hahn vor mehr als 6 Jahren hinzugefügt
SL/BackgroundJob/ShopOrderMassTransfer.pm | ||
---|---|---|
42 | 42 |
foreach my $shop_order_id (@{ $job_obj->data_as_hash->{shop_order_record_ids} }) { |
43 | 43 |
my $data = $job_obj->data_as_hash; |
44 | 44 |
my $shop_order = SL::DB::ShopOrder->new(id => $shop_order_id)->load; |
45 |
# die "can't find shoporder with id $shop_order_id" unless $shop_order; |
|
46 |
#TODO Kundenabfrage so ändern, dass es nicht abricht |
|
47 | 45 |
unless($shop_order){ |
48 | 46 |
push @{ $error_report{$shop_order_id} }, 'Shoporder not found'; |
49 | 47 |
} |
... | ... | |
52 | 50 |
my $employee = SL::DB::Manager::Employee->current; |
53 | 51 |
my $items = SL::DB::Manager::ShopOrderItem->get_all( where => [shop_order_id => $shop_order_id], |
54 | 52 |
sort_by => 'partnumber::int' ); |
55 |
# check inventory onhand > 0 and active = 1 |
|
56 |
my $transferable = 0; |
|
57 |
foreach my $item (@$items) { |
|
58 |
my $part = SL::DB::Manager::Part->find_by(partnumber => $item->{partnumber}); |
|
59 |
# TODO: qty direkt aus dem Lager holen und nicht von onhand |
|
60 |
$transferable = $part->{onhand} >= $item->{quantity} ? 1 : 0; |
|
61 |
$transferable = $part->{active} = 1 ? 1 : 0; |
|
62 |
|
|
63 |
last if $transferable == 0; |
|
64 |
} |
|
65 |
if ($transferable == 1 && $customer->{order_lock} == 0) { |
|
53 |
if ($customer->{order_lock} == 0) { |
|
66 | 54 |
$shop_order->{shop_order_items} = $items; |
67 | 55 |
|
68 | 56 |
my $order = $shop_order->convert_to_sales_order(customer => $customer, employee => $employee); |
... | ... | |
85 | 73 |
push @{ $data->{shop_orders_ids} }, $shop_order->id; |
86 | 74 |
|
87 | 75 |
$job_obj->update_attributes(data_as_hash => $data); |
88 |
my $delivery_order = $order->convert_to_delivery_order(customer => $customer, employee => $employee); |
|
89 |
$delivery_order->save; |
|
90 |
my $snumbers = "deliveryordernumber_" . $delivery_order->donumber; |
|
91 |
SL::DB::History->new( |
|
92 |
trans_id => $delivery_order->id, |
|
93 |
snumbers => $snumbers, |
|
94 |
employee_id => SL::DB::Manager::Employee->current->id, |
|
95 |
addition => 'SAVED', |
|
96 |
what_done => 'Shopimport->Order->Deliveryorder(MassTransfer)', |
|
97 |
)->save(); |
|
98 |
$order->link_to_record($delivery_order); |
|
99 |
my $delivery_order_items = $delivery_order->{orderitems}; |
|
100 |
# Lagerentnahme |
|
101 |
# entsprechende defaults holen, falls standardlagerplatz verwendet werden soll |
|
102 |
my $test = $::instance_conf->get_transfer_default_use_master_default_bin; |
|
103 |
require SL::DB::Inventory; |
|
104 |
my $rose_db = SL::DB::Inventory->new->db; |
|
105 |
my $dbh = $db->dbh; |
|
106 |
my $default_warehouse_id; |
|
107 |
my $default_bin_id; |
|
108 |
my @parts_ids; |
|
109 |
my @transfers; |
|
110 |
my @errors; |
|
111 |
my $qty; |
|
112 |
my $stock_out; |
|
113 |
require SL::WH; |
|
114 |
require SL::IS; |
|
115 |
require SL::DB::DeliveryOrderItemsStock; |
|
116 |
foreach my $item (@{$delivery_order_items}) { |
|
117 |
my ($err, $wh_id, $bin_id) = IS->_determine_wh_and_bin($dbh, $::instance_conf, |
|
118 |
$item->{parts_id}, |
|
119 |
$item->{qty}, |
|
120 |
$item->{unit} |
|
121 |
); |
|
122 |
if (!@{ $err } && $wh_id && $bin_id) { |
|
123 |
my $delivery_order_items_stock = SL::DB::DeliveryOrderItemsStock->new; |
|
124 |
$delivery_order_items_stock->assign_attributes ( |
|
125 |
'delivery_order_item_id' => $item->{id}, |
|
126 |
'qty' => $item->{qty}, |
|
127 |
'unit' => $item->{unit}, |
|
128 |
'warehouse_id' => $wh_id, |
|
129 |
'bin_id' => $bin_id, |
|
130 |
); |
|
131 |
$delivery_order_items_stock->save; |
|
132 |
|
|
133 |
my ($trans_id) = selectrow_query($::form, $::form->get_standard_dbh, qq|SELECT nextval('id')|); |
|
134 |
my $wh_transfer = SL::DB::Inventory->new; |
|
135 |
$wh_transfer->assign_attributes ( |
|
136 |
'trans_id' => $trans_id, |
|
137 |
'employee' => $employee->{id}, |
|
138 |
'bestbefore' => undef, |
|
139 |
'chargenumber' => '', |
|
140 |
'shippingdate' => DateTime->today, |
|
141 |
'delivery_order_items_stock_id' => $delivery_order_items_stock->id, |
|
142 |
'project_id' => '', |
|
143 |
'parts_id' => $item->{parts_id}, |
|
144 |
'qty' => $item->{qty} * -1, |
|
145 |
'trans_type_id' => 889,#hardcodiert |
|
146 |
'warehouse_id' => $wh_id, |
|
147 |
'bin_id' => $bin_id, |
|
148 |
'comment' => $main::locale->text("Default transfer delivery order"), |
|
149 |
'oe_id' => $delivery_order->{id}, |
|
150 |
); |
|
151 |
$wh_transfer->save; |
|
152 |
} |
|
153 |
push @errors, @{ $err }; |
|
154 |
} |
|
155 |
if (!@errors) { |
|
156 |
$delivery_order->delivered(1); |
|
157 |
$delivery_order->save; |
|
158 |
} |
|
159 | 76 |
} |
160 | 77 |
} |
161 | 78 |
} |
Auch abrufbar als: Unified diff
Shopmodul: sql-Updatesfiles für das Shopmodul.
Beinhaltet auch ein hinzufügen der Spalte Auftragssperre in der Tabelle customer sowie das webtemplate billing beim Kunden wo die Auftragssperre eingegeben werden kann