Statusausgabe verbessert
authorMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 1 Mar 2011 13:33:14 +0000 (14:33 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 16 Jun 2011 06:44:22 +0000 (08:44 +0200)
SL/Controller/CsvImport.pm
SL/Controller/CsvImport/CustomerVendor.pm
locale/de/all
templates/webpages/csv_import/_data.html [deleted file]
templates/webpages/csv_import/_preview.html
templates/webpages/csv_import/_result.html
templates/webpages/csv_import/form.html

index 37d801a..806429d 100644 (file)
@@ -15,7 +15,7 @@ use parent qw(SL::Controller::Base);
 use Rose::Object::MakeMethods::Generic
 (
  scalar => [ qw(type profile file all_profiles all_charsets sep_char all_sep_chars quote_char all_quote_chars escape_char all_escape_chars all_buchungsgruppen
-                import_status errors headers data num_imported) ],
+                import_status errors headers data num_imported num_importable) ],
 );
 
 __PACKAGE__->run_before('check_auth');
@@ -147,6 +147,7 @@ sub test_and_import {
   $worker->run;
   $worker->save_objects if !$params{test};
 
+  $self->num_importable(scalar grep { !$_ } map { scalar @{ $_->{errors} } } @{ $self->data });
   $self->import_status($params{test} ? 'tested' : 'imported');
 
   $self->action_new;
index 5fe15af..1fb29cc 100644 (file)
@@ -52,7 +52,7 @@ sub check_duplicates {
 
   my %by_name;
   if ('check_db' eq $self->controller->profile->get('duplicates')) {
-    %by_name = map { ( $normalizer->($_->name) => 1 ) } @{ $self->existing_objects };
+    %by_name = map { ( $normalizer->($_->name) => 'db' ) } @{ $self->existing_objects };
   }
 
   foreach my $entry (@{ $self->controller->data }) {
@@ -60,10 +60,10 @@ sub check_duplicates {
 
     my $name = $normalizer->($entry->{object}->name);
     if (!$by_name{$name}) {
-      $by_name{$name} = 1;
+      $by_name{$name} = 'csv';
 
     } else {
-      push @{ $entry->{errors} }, $::locale->text('Duplicate');
+      push @{ $entry->{errors} }, $by_name{$name} eq 'db' ? $::locale->text('Duplicate in database') : $::locale->text('Duplicate in CSV file');
     }
   }
 }
index ae6e118..547526a 100644 (file)
@@ -13,7 +13,7 @@ $self->{texts} = {
   ' Date missing!'              => ' Datum fehlt!',
   ' Part Number missing!'       => ' Artikelnummer fehlt!',
   ' missing!'                   => ' fehlt!',
-  '#1 objects were imported.'   => '#1 Objekte wurden importiert.',
+  '#1 of #2 importable objects were imported.' => '#1 von #2 importierbaren Objekten wurden importiert.',
   '#1 prices were updated.'     => '#1 Preise wurden aktualisiert.',
   '*/'                          => '*/',
   '---please select---'         => '---bitte auswählen---',
@@ -623,7 +623,8 @@ $self->{texts} = {
   'Dunning number'              => 'Mahnungsnummer',
   'Dunning overview'            => 'Mahnungsübersicht',
   'Dunnings'                    => 'Mahnungen',
-  'Duplicate'                   => 'Duplikat',
+  'Duplicate in CSV file'       => 'Duplikat in CSV-Datei',
+  'Duplicate in database'       => 'Duplikat in Datenbank',
   'During this user migration Lx-Office can create such a group for you and grant all users access to all of Lx-Office\'s functions.' => 'Im Rahmen dieser Benutzerdatenmigration kann Lx-Office eine solche Gruppe f&uuml;r Sie anlegen und allen Benutzern Zugriff auf alle Lx-Office-Funktionen gew&auml;hren.',
   'E-mail'                      => 'eMail',
   'E-mail Statement to'         => 'Fälligkeitsabrechnung als eMail an',
@@ -807,7 +808,7 @@ $self->{texts} = {
   'Form details (second row)'   => 'Formulardetails (zweite Positionszeile)',
   'Formula'                     => 'Formel',
   'Found #1 errors.'            => '#1 Fehler gefunden.',
-  'Found #1 objects to import.' => '#1 zu importierende Objekte gefunden.',
+  'Found #1 objects of which #2 can be imported.' => 'Es wurden #1 Objekte gefunden, von denen #2 importiert werden können.',
   'Free report period'          => 'Freier Zeitraum',
   'Free-form text'              => 'Textzeile',
   'Fristsetzung'                => 'Fristsetzung',
diff --git a/templates/webpages/csv_import/_data.html b/templates/webpages/csv_import/_data.html
deleted file mode 100644 (file)
index 79fb6cc..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-[% USE LxERP %]
-
-[%- IF SELF.errors %]
- [%- PROCESS 'csv_import/_errors.html' %]
-[%- END %]
-
-[%- IF SELF.import_status == 'imported' %]
- [%- PROCESS 'csv_import/_result.html' %]
-[%- END %]
-
-[%- PROCESS 'csv_import/_preview.html' %]
index 323fdb4..ee16699 100644 (file)
@@ -9,8 +9,6 @@
  [%- END %]
 </h3>
 
-<p>[%- LxERP.t8('Found #1 objects to import.', SELF.data.size || 0) %]</p>
-
 [% IF SELF.data.size %]
  <table>
   <tr class="listheading">
index bc0daae..b67bb7f 100644 (file)
@@ -2,4 +2,8 @@
 
 <h3>[%- LxERP.t8('Import summary') %]</h3>
 
-<p>[%- LxERP.t8('#1 objects were imported.', SELF.data.size || 0) %]</p>
+[%- IF SELF.import_status == 'imported' %]
+ <p>[%- LxERP.t8('#1 of #2 importable objects were imported.', SELF.num_imported, SELF.num_importable || 0) %]</p>
+[%- ELSE %]
+ <p>[%- LxERP.t8('Found #1 objects of which #2 can be imported.', SELF.data.size || 0, SELF.num_importable || 0) %]</p>
+[%- END %]
index bc23d54..fe17423 100644 (file)
   </table>
 
   [% L.submit_tag('action_test', LxERP.t8('Test and preview')) %]
-  [% IF SELF.import_status && SELF.data.size %]
+  [% IF SELF.import_status && SELF.num_importable %]
    [% L.submit_tag('action_import', LxERP.t8('Import')) %]
   [%- END %]
 
  </form>
 
  [%- IF SELF.import_status %]
-  [%- PROCESS 'csv_import/_data.html' %]
+  [%- IF SELF.errors %]
+   [%- PROCESS 'csv_import/_errors.html' %]
+  [%- END %]
+
+  [%- PROCESS 'csv_import/_result.html' %]
+  [%- PROCESS 'csv_import/_preview.html' %]
  [%- END %]
 
  <script type="text/javascript">