X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/8ee7fcb0ed6575b116050ccbe711a26f7d1a86fc..93e82bab24ec05ffe820ad264328e55e7b62ba6f:/SL/Controller/DeliveryOrder.pm?ds=sidebyside diff --git a/SL/Controller/DeliveryOrder.pm b/SL/Controller/DeliveryOrder.pm index 61e614e66..33b35bbab 100644 --- a/SL/Controller/DeliveryOrder.pm +++ b/SL/Controller/DeliveryOrder.pm @@ -911,7 +911,7 @@ sub action_stock_in_out_dialog { do_unit => $unit, delivered => $self->order->delivered, row => $row, - itme_id => $item_id, + item_id => $item_id, ); } @@ -1272,6 +1272,8 @@ sub load_order { # You need a custom shipto object to call cvars_by_config to get the cvars. $self->order->custom_shipto(SL::DB::Shipto->new(module => 'OE', custom_variables => [])) if !$self->order->custom_shipto; + $self->prepare_stock_info($_) for $self->order->items; + return $self->order; } @@ -1321,6 +1323,9 @@ sub make_order { push @items, $item; $pos++; } + + $self->prepare_stock_info($_) for $order->items, @items; + $order->add_items(grep {!$_->id} @items); return $order; @@ -1343,6 +1348,26 @@ sub make_item { # saved. Adding empty custom_variables to new orderitem here solves this problem. $item ||= SL::DB::DeliveryOrderItem->new(custom_variables => []); + # handle stock info + if (my $stock_info = delete $attr->{stock_info}) { + my %existing = map { $_->id => $_ } $item->delivery_order_stock_entries; + my @save; + + for my $line (@{ DO->unpack_stock_information(packed => $stock_info) }) { + # lookup existing or make new + my $obj = delete $existing{$line->{delivery_order_items_stock_id}} + // SL::DB::DeliveryOrderItemsStock->new; + + # assign attributes + $obj->$_($line->{$_}) for qw(bin_id warehouse_id chargenumber qty unit); + $obj->bestbefore_as_date($line->{bestfbefore}) + if $line->{bestbefore} && $::instance_conf->get_show_bestbefore; + push @save, $obj; + } + + $item->delivery_order_stock_entries(@save); + } + $item->assign_attributes(%$attr); if ($is_new) { @@ -1428,6 +1453,21 @@ sub new_item { return $item; } +sub prepare_stock_info { + my ($self, $item) = @_; + + $item->{stock_info} = SL::YAML::Dump([ + map +{ + delivery_order_items_stock_id => $_->id, + qty => $_->qty, + warehouse_id => $_->warehouse_id, + bin_id => $_->bin_id, + chargenumber => $_->chargenumber, + unit => $_->unit, + }, $item->delivery_order_stock_entries + ]); +} + sub setup_order_from_cv { my ($order) = @_;