commit 2c3ecbd0419d17ac7c7a202d491377e59bea74a1
Author: Moritz Bunkus <m.bunkus@linet.de>
Date:   Mon Aug 15 14:02:09 2016 +0200

    CsvImport: deutlich anzeigen, ob Vorschau oder echter Import

diff --git a/SL/BackgroundJob/CsvImport.pm b/SL/BackgroundJob/CsvImport.pm
index 96583d78b..9815ddfb3 100644
--- a/SL/BackgroundJob/CsvImport.pm
+++ b/SL/BackgroundJob/CsvImport.pm
@@ -95,7 +95,7 @@ sub do_import {
     $result = $::locale->text('Import finished with errors.');
   } else {
 
-    my $report_id = $c->save_report(session_id => $session_id);
+    my $report_id = $c->save_report(session_id => $session_id, test => $test);
     $job->set_data(report_id => $report_id)->save;
 
     $c->track_progress(finished => 1);
diff --git a/SL/Controller/CsvImport.pm b/SL/Controller/CsvImport.pm
index 407d2a5c6..3122037e1 100644
--- a/SL/Controller/CsvImport.pm
+++ b/SL/Controller/CsvImport.pm
@@ -510,6 +510,7 @@ sub save_report_single {
     file       => '',
     numrows    => scalar @{ $self->data },
     numheaders => 1,
+    test_mode  => $params{test} ? 1 : 0,
   );
 
   $report->save(cascade => 1) or die $report->db->error;
@@ -580,6 +581,7 @@ sub save_report_multi {
     file       => '',
     numrows    => scalar @{ $self->data },
     numheaders => scalar @{ $self->worker->profile },
+    test_mode  => $params{test} ? 1 : 0,
   );
 
   $report->save(cascade => 1) or die $report->db->error;
diff --git a/SL/DB/MetaSetup/CsvImportReport.pm b/SL/DB/MetaSetup/CsvImportReport.pm
index 195913212..6b7d29612 100644
--- a/SL/DB/MetaSetup/CsvImportReport.pm
+++ b/SL/DB/MetaSetup/CsvImportReport.pm
@@ -15,6 +15,7 @@ __PACKAGE__->meta->columns(
   numrows    => { type => 'integer', not_null => 1 },
   profile_id => { type => 'integer', not_null => 1 },
   session_id => { type => 'text', not_null => 1 },
+  test_mode  => { type => 'boolean', not_null => 1 },
   type       => { type => 'text', not_null => 1 },
 );
 
diff --git a/locale/de/all b/locale/de/all
index d92eeb17f..ccf33400e 100755
--- a/locale/de/all
+++ b/locale/de/all
@@ -1790,6 +1790,7 @@ $self->{texts} = {
   'No department has been created yet.' => 'Es wurde noch keine Abteilung erfasst.',
   'No draft was found.'         => 'Kein Entwurf gefunden.',
   'No dunnings have been selected for printing.' => 'Es wurden keine Mahnungen zum Drucken ausgew&auml;hlt.',
+  'No entries have been imported yet.' => 'Es wurden noch keine Einträge importiert.',
   'No errors have occurred.'    => 'Es sind keine Fehler aufgetreten.',
   'No file has been uploaded yet.' => 'Es wurde noch keine Datei hochgeladen.',
   'No function blocks have been created yet.' => 'Es wurden noch keine Funktionsblöcke angelegt.',
@@ -2856,6 +2857,7 @@ $self->{texts} = {
   'The following currencies have been used, but they are not defined:' => 'Die folgenden Währungen wurden benutzt, sind aber nicht ordnungsgemäß in der Datenbank eingetragen:',
   'The following drafts have been saved and can be loaded.' => 'Die folgenden Entw&uuml;rfe wurden gespeichert und k&ouml;nnen geladen werden.',
   'The following groups are valid for this client' => 'Die folgenden Gruppen sind für diesen Mandanten gültig',
+  'The following is only a preview.' => 'Das Folgende ist nur eine Vorschau.',
   'The following list has been generated automatically from existing users collapsing users with identical settings into a single entry.' => 'Die folgende Liste wurde automatisch aus den im System vorhandenen Benutzern zusammengestellt, wobei identische Einstellungen zu einem Eintrag zusammengefasst wurden.',
   'The following old files whose settings have to be merged manually into the new configuration file "config/kivitendo.conf" still exist:' => 'Es existieren noch die folgenden alten Dateien, deren Einstellungen manuell in die neue Konfiguratsdatei "config/kivitendo.conf" migriert werden müssen:',
   'The following transaction contains wrong taxes:' => 'Die folgende Buchung enthält falsche Steuern:',
diff --git a/sql/Pg-upgrade2/add_test_mode_to_csv_import_report.sql b/sql/Pg-upgrade2/add_test_mode_to_csv_import_report.sql
new file mode 100644
index 000000000..82e970716
--- /dev/null
+++ b/sql/Pg-upgrade2/add_test_mode_to_csv_import_report.sql
@@ -0,0 +1,8 @@
+-- @tag: add_test_mode_to_csv_import_report
+-- @description: In CSV-Import-Berichtstabelle speichern, ob es ein Test war
+-- @depends: release_3_4_1
+ALTER TABLE csv_import_reports ADD COLUMN test_mode BOOLEAN;
+
+UPDATE csv_import_reports SET test_mode = TRUE;
+
+ALTER TABLE csv_import_reports ALTER COLUMN test_mode SET NOT NULL;
diff --git a/templates/webpages/csv_import/report.html b/templates/webpages/csv_import/report.html
index 539ce5a1f..91f3881ee 100644
--- a/templates/webpages/csv_import/report.html
+++ b/templates/webpages/csv_import/report.html
@@ -1,7 +1,20 @@
 [% USE HTML %]
 [% USE LxERP %]
 [% USE L %]
- <h3>[%- LxERP.t8('Import result') %]</h3>
+ <h2>
+ [%- IF SELF.report.test_mode %]
+  [%- LxERP.t8('Import preview') %]
+ [%- ELSE %]
+  [%- LxERP.t8('Import result') %]
+ [%- END %]
+</h2>
+
+[%- IF SELF.report.test_mode %]
+ <p>
+  [% LxERP.t8("The following is only a preview.") %]
+  [% LxERP.t8("No entries have been imported yet.") %]
+ </p>
+[%- END %]
 
 [%- PROCESS 'common/paginate.html' pages=SELF.pages, base_url = SELF.base_url %]
  <table>
