Auftrags-Controller: Beleg neu laden nach "Speichern und drucken" auch bei Fehler
[kivitendo-erp.git] / SL / Controller / Order.pm
index de1fad5..faf2ffa 100644 (file)
@@ -291,6 +291,12 @@ sub action_print {
 
   $self->js_reset_order_and_item_ids_after_save;
 
+  my $redirect_url = $self->url_for(
+    action => 'edit',
+    type   => $self->type,
+    id     => $self->order->id,
+  );
+
   my $format      = $::form->{print_options}->{format};
   my $media       = $::form->{print_options}->{media};
   my $formname    = $::form->{print_options}->{formname};
@@ -300,12 +306,14 @@ sub action_print {
 
   # only PDF, OpenDocument & HTML for now
   if (none { $format eq $_ } qw(pdf opendocument opendocument_pdf html)) {
-    return $self->js->flash('error', t8('Format \'#1\' is not supported yet/anymore.', $format))->render;
+    flash_later('error', t8('Format \'#1\' is not supported yet/anymore.', $format));
+    return $self->js->redirect_to($redirect_url)->render;
   }
 
   # only screen or printer by now
   if (none { $media eq $_ } qw(screen printer)) {
-    return $self->js->flash('error', t8('Media \'#1\' is not supported yet/anymore.', $media))->render;
+    flash_later('error', t8('Media \'#1\' is not supported yet/anymore.', $media));
+    return $self->js->redirect_to($redirect_url)->render;
   }
 
   # create a form for generate_attachment_filename
@@ -325,12 +333,13 @@ sub action_print {
                                             printer_id => $printer_id,
                                             groupitems => $groupitems });
   if (scalar @errors) {
-    return $self->js->flash('error', t8('Generating the document failed: #1', $errors[0]))->render;
+    flash_later('error', t8('Generating the document failed: #1', $errors[0]));
+    return $self->js->redirect_to($redirect_url)->render;
   }
 
   if ($media eq 'screen') {
     # screen/download
-    $self->js->flash('info', t8('The document has been created.'));
+    flash_later('info', t8('The document has been created.'));
     $self->send_file(
       \$doc,
       type         => SL::MIME->mime_type_from_ext($doc_filename),
@@ -346,20 +355,19 @@ sub action_print {
       content => $doc,
     );
 
-    $self->js->flash('info', t8('The document has been printed.'));
+    flash_later('info', t8('The document has been printed.'));
   }
 
   my @warnings = $self->store_doc_to_webdav_and_filemanagement($doc, $doc_filename, $formname);
   if (scalar @warnings) {
-    $self->js->flash('warning', $_) for @warnings;
+    flash_later('warning', $_) for @warnings;
   }
 
   $self->save_history('PRINTED');
 
-  $self->js
-    ->run('kivi.ActionBar.setEnabled', '#save_and_email_action')
-    ->render;
+  $self->js->redirect_to($redirect_url)->render;
 }
+
 sub action_preview_pdf {
   my ($self) = @_;
 
@@ -371,6 +379,12 @@ sub action_preview_pdf {
 
   $self->js_reset_order_and_item_ids_after_save;
 
+  my $redirect_url = $self->url_for(
+    action => 'edit',
+    type   => $self->type,
+    id     => $self->order->id,
+  );
+
   my $format      = 'pdf';
   my $media       = 'screen';
   my $formname    = $self->type;
@@ -392,17 +406,23 @@ sub action_preview_pdf {
                                             language   => $self->order->language,
                                           });
   if (scalar @errors) {
-    return $self->js->flash('error', t8('Conversion to PDF failed: #1', $errors[0]))->render;
+    flash_later('error', t8('Conversion to PDF failed: #1', $errors[0]));
+    return $self->js->redirect_to($redirect_url)->render;
   }
+
   $self->save_history('PREVIEWED');
-  $self->js->flash('info', t8('The PDF has been previewed'));
+
+  flash_later('info', t8('The PDF has been previewed'));
+
   # screen/download
   $self->send_file(
     \$pdf,
     type         => SL::MIME->mime_type_from_ext($pdf_filename),
     name         => $pdf_filename,
-    js_no_render => 0,
+    js_no_render => 1,
   );
+
+  $self->js->redirect_to($redirect_url)->render;
 }
 
 # open the email dialog