]> wagnertech.de Git - kivitendo-erp.git/commitdiff
Auftrags-Controller: fake id für Items nach Workflow setzen.
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Mon, 28 May 2018 09:29:46 +0000 (11:29 +0200)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Mon, 28 May 2018 09:36:27 +0000 (11:36 +0200)
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.

SL/Controller/Order.pm
templates/webpages/order/tabs/basic_data.html

index 422996499b2be42d4f7e0e9ae911c33b268f11dd..1309f141e9e877ac76654c2626c8ca5d26a5116e 100644 (file)
@@ -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;
index c968a94732b8509f9827c878135c3b3c71225e95..870e4aaa175cb7af86a00b32a4dff83f510a4eb7 100644 (file)
             </thead>
 
             [%- 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 %]
 
           </table>