S/D/Order: new_from/new_from_multi: Bearbeiter ist immer der aktuelle Benutzer
[kivitendo-erp.git] / bin / mozilla / do.pl
index 4f55310..6adf190 100644 (file)
@@ -245,8 +245,7 @@ sub setup_do_action_bar {
   my $insertdate = DateTime->from_kivitendo($::form->{insertdate});
   my $undo_transfer  = 0;
   if (ref $undo_date eq 'DateTime' && ref $insertdate eq 'DateTime') {
-    # DateTime->compare      it returns 1 if $dt1 > $dt2
-    $undo_transfer = DateTime->compare($insertdate, $undo_date) == 1 ? 1 : 0;
+    $undo_transfer = $insertdate > $undo_date;
   }
   for my $bar ($::request->layout->get('actionbar')) {
     $bar->add(
@@ -925,6 +924,12 @@ sub save {
   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"}) {
@@ -938,7 +943,20 @@ sub save {
   }
 
   $form->{id} = 0 if $form->{saveasnew};
-
+  # we rely on converted_from_orderitems, if the workflow is used
+  # be sure that at least one position is linked to the original orderitem
+  if ($form->{convert_from_oe_ids}) {
+    my $has_linked_pos;
+    for my $i (1 .. $form->{rowcount}) {
+      if ($form->{"converted_from_orderitems_id_$i"}) {
+        $has_linked_pos = 1;
+        last;
+      }
+    }
+    if (!$has_linked_pos) {
+      $form->error($locale->text('Need at least one original position for the workflow Order to Delivery Order!'));
+    }
+  }
   DO->save();
   # saving the history
   if(!exists $form->{addition}) {