+# save the order as new document an open it for edit
+sub action_save_as_new {
+  my ($self) = @_;
+
+  if (!$self->order->id) {
+    $self->js->flash('error', t8('This object has not been saved yet.'));
+    return $self->js->render();
+  }
+
+  delete $::form->{$_} for qw(closed delivered converted_from_oe_id converted_from_orderitems_ids);
+
+  my $src_order = SL::DB::Order->new(id => $self->order->id)->load;
+
+  # Lets assign a new number if the user hasn't changed the previous one.
+  # If it has been changed manually then use it as-is.
+  if (trim($self->order->number) eq $src_order->number) {
+    $self->order->number('');
+  }
+
+  # Clear reqdate and transdate unless changed
+  if ($self->order->transdate == $src_order->transdate) {
+    $self->order->transdate(DateTime->today_local)
+  }
+  if ($self->order->reqdate == $src_order->reqdate) {
+    my $extra_days = $self->type eq _sales_quotation_type() ? $::instance_conf->get_reqdate_interval : 1;
+    $self->order->reqdate(DateTime->today_local->next_workday(extra_days => $extra_days));
+  }
+
+  # Update employee
+  $self->order->employee(SL::DB::Manager::Employee->current);
+
+  # save
+  $self->action_save();
+}
+