+ # 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 if $obj->qty;
+ }
+
+ $item->delivery_order_stock_entries(@save);
+ }
+