Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision e43a7a53

Von Sven Schöling vor mehr als 3 Jahren hinzugefügt

  • ID e43a7a5333cb46e48992c96797323d613ee10433
  • Vorgänger 8ee7fcb0
  • Nachfolger eccf9705

DeliveryOrder: stock roundtrip

Unterschiede anzeigen:

SL/Controller/DeliveryOrder.pm
do_unit => $unit,
delivered => $self->order->delivered,
row => $row,
itme_id => $item_id,
item_id => $item_id,
);
}
......
# 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;
}
......
push @items, $item;
$pos++;
}
$self->prepare_stock_info($_) for $order->items, @items;
$order->add_items(grep {!$_->id} @items);
return $order;
......
# 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) {
......
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) = @_;

Auch abrufbar als: Unified diff