From: Bernd Bleßmann Date: Mon, 28 May 2018 09:29:46 +0000 (+0200) Subject: Auftrags-Controller: fake id für Items nach Workflow setzen. X-Git-Tag: release-3.5.4~406 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=a823f2b0dcf59d7344f7b112272849018e1bbf91;p=kivitendo-erp.git Auftrags-Controller: fake id für Items nach Workflow setzen. Für items, die hinzugefügt werden, also noch nicht in der DB gespeichert sind, muss eine fake id gesetzt werden, damit diese bei den actions, die einzelne items betreffen, auch richtig gefunden/zugeordnet werden können. Das behebt z.B. einen Fehler mit falschen Preisquellen nach dem Workflow Angebot -> Auftrag, wo immer die Preisquellen der ersten Postion im Dialog verwendet wurde. --- diff --git a/SL/Controller/Order.pm b/SL/Controller/Order.pm index 422996499..1309f141e 100644 --- a/SL/Controller/Order.pm +++ b/SL/Controller/Order.pm @@ -1372,6 +1372,11 @@ sub _workflow_sales_or_purchase_order { $self->order(SL::DB::Order->new_from($self->order, destination_type => $destination_type)); $self->{converted_from_oe_id} = delete $::form->{id}; + # set item ids to new fake id, to identify them as new items + foreach my $item (@{$self->order->items_sorted}) { + $item->{new_fake_id} = join('_', 'new', Time::HiRes::gettimeofday(), int rand 1000000000000); + } + # change form type $::form->{type} = $destination_type; $self->init_type; diff --git a/templates/webpages/order/tabs/basic_data.html b/templates/webpages/order/tabs/basic_data.html index c968a9473..870e4aaa1 100644 --- a/templates/webpages/order/tabs/basic_data.html +++ b/templates/webpages/order/tabs/basic_data.html @@ -223,7 +223,7 @@ [%- FOREACH item = SELF.order.items_sorted %] - [%- PROCESS order/tabs/_row.html ITEM=item ID=item.id TYPE=SELF.type ALL_PRICE_FACTORS=SELF.all_price_factors %] + [%- PROCESS order/tabs/_row.html ITEM=item ID=(item.id||item.new_fake_id) TYPE=SELF.type ALL_PRICE_FACTORS=SELF.all_price_factors %] [%- END %]