Revision c2075a3c
Von Sven Schöling vor mehr als 3 Jahren hinzugefügt
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) = @_;
|
||
|
SL/DB/DeliveryOrderItemsStock.pm | ||
---|---|---|
class => 'SL::DB::Inventory',
|
||
column_map => { id => 'delivery_order_items_stock_id' },
|
||
},
|
||
unit_obj => {
|
||
type => 'many to one',
|
||
class => 'SL::DB::Unit',
|
||
column_map => { unit => 'name' },
|
||
},
|
||
);
|
||
|
||
__PACKAGE__->meta->initialize;
|
js/kivi.DeliveryOrder.js | ||
---|---|---|
type: $("#type").val(),
|
||
parts_id: $row.find("[name$=parts_id]").val(),
|
||
unit: $row.find("[name$=unit]").val(),
|
||
qty_as_number: $("qty_" + id).val(),
|
||
stock: $("stock_" + id).val(),
|
||
qty_as_number: $row.find("[name$=qty_as_number]").val(),
|
||
stock: $row.find("[name$=stock_info]").val(),
|
||
item_id: id,
|
||
row: $row.attr("id"),
|
||
},
|
templates/webpages/delivery_order/tabs/_row.html | ||
---|---|---|
[%- END %]
|
||
[% L.hidden_tag("orderitem_ids[+]", ID) %]
|
||
[% L.hidden_tag("converted_from_orderitems_ids[+]", ITEM.converted_from_orderitems_id) %]
|
||
[% L.hidden_tag("stock_info[+]", ITEM.stock_info, class="data-stock-info") %]
|
||
[% L.hidden_tag("order.orderitems[+].id", ITEM.id, id='item_' _ ID) %]
|
||
[% L.hidden_tag("order.orderitems[].stock_info", ITEM.stock_info, class="data-stock-info") %]
|
||
[% L.hidden_tag("order.orderitems[].parts_id", ITEM.parts_id) %]
|
||
</td>
|
||
<td>
|
Auch abrufbar als: Unified diff
DeliveryOrder: stock roundtrip