remove_emptied_rows();
   validate_items();
 
+  # check for serial number if part needs one
+  for my $i (1 .. $form->{rowcount} - 1) {
+    next unless $form->{"has_sernumber_$i"};
+    $form->isblank("serialnumber_$i",
+                   $locale->text('Serial Number missing in Row') . " $i");
+  }
   # if the name changed get new values
   my $vc = $form->{vc};
   if (($form->{"previous_${vc}_id"} || $form->{"${vc}_id"}) != $form->{"${vc}_id"}) {
 
       map { $form->{"${_}_${i}"} = $form->format_amount(\%myconfig, $form->{"${_}_${i}"}) } qw(sellprice discount lastcost);
       push @hidden_vars, grep { defined $form->{"${_}_${i}"} } qw(sellprice discount not_discountable price_factor_id lastcost);
       push @hidden_vars, "stock_${stock_in_out}_sum_qty", "stock_${stock_in_out}";
-      push @hidden_vars, qw(delivery_order_items_id converted_from_orderitems_id converted_from_delivery_order_items_id);
+      push @hidden_vars, qw(delivery_order_items_id converted_from_orderitems_id converted_from_delivery_order_items_id has_sernumber);
     }
 
     my @HIDDENS = map { value => $_}, (
     $form->{"weight_$i"}            = $info->{weight};
     $form->{"part_type_$i"}         = $info->{part_type};
     $form->{"classification_id_$i"} = $info->{classification_id};
+    $form->{"has_sernumber_$i"}     = $info->{has_sernumber};
   }
 
   $main::lxdebug->leave_sub();
 
   Ist die Option ausgestellt, ist das Verhalten nach dem Buchen wie zuvor
   und es gibt eine zweite Aktion "Buchen und Dokument hochladen", mit der
   in den Dokumenten-Tab gesprungen werden kann.
+- Seriennummer ist jetzt ein Pflichtfeld für Lieferscheine (Einkauf und Verkauf),
+  falls die Ware im Beleg in den Stammdaten mit "Hat eine Serienummer" markiert ist.
 
 Bugfixes (Tracker: https://www.kivitendo.de/redmine):
 
 
   'September'                   => 'September',
   'Serial No.'                  => 'Seriennummer',
   'Serial Number'               => 'Seriennummer',
+  'Serial Number missing in Row' => 'Seriennummer fehlt in Position',
   'Server'                      => 'Server',
   'Server control'              => 'Serversteuerung',
   'Service'                     => 'Dienstleistung',
 
   'September'                   => '',
   'Serial No.'                  => '',
   'Serial Number'               => '',
+  'Serial Number missing in Row' => '',
   'Server'                      => '',
   'Server control'              => '',
   'Service'                     => '',