]> wagnertech.de Git - kivitendo-erp.git/commitdiff
CSV-Import Kunden/Lieferanten: Schalter für Behandlung bereits vorhandener Einträge
authorMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 15 Apr 2013 12:03:34 +0000 (14:03 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 15 Apr 2013 13:26:02 +0000 (15:26 +0200)
Conflicts:
SL/Controller/CsvImport/CustomerVendor.pm

SL/Controller/CsvImport/Base.pm
SL/Controller/CsvImport/CustomerVendor.pm
locale/de/all
templates/webpages/csv_import/_form_customers_vendors.html

index fa3e4f43e0c848989296fd011f4775524dcf5d30..68d35d89dd72b292447795289c2043f68c0c7ba2 100644 (file)
@@ -423,4 +423,3 @@ sub fix_field_lengths {
 }
 
 1;
-
index fba1ac4488c8574409691b36d6e065dae77c17d8..0d6db32c57ee8a69609aaaf22243f3a52fb94e13 100644 (file)
@@ -49,8 +49,11 @@ sub check_objects {
 
   $self->controller->track_progress(phase => 'building data', progress => 0);
 
-  my $numbercolumn  = $self->controller->profile->get('table') . "number";
-  my %vcs_by_number = map { ( $_->$numbercolumn => 1 ) } @{ $self->existing_objects };
+  my $vc            = $self->controller->profile->get('table');
+  my $update_policy = $self->controller->profile->get('update_policy') || 'update_existing';
+  my $numbercolumn  = "${vc}number";
+  my %vcs_by_number = map { ( $_->$numbercolumn => $_ ) } @{ $self->existing_objects };
+  my $methods       = $self->controller->headers->{methods};
 
   my $i;
   my $num_data = scalar @{ $self->controller->data };
@@ -66,10 +69,23 @@ sub check_objects {
 
     next if @{ $entry->{errors} };
 
-    if ($vcs_by_number{ $object->$numbercolumn }) {
-      $entry->{object}->$numbercolumn('####');
-    } else {
+    my $existing_vc = $vcs_by_number{ $object->$numbercolumn };
+    if (!$existing_vc) {
       $vcs_by_number{ $object->$numbercolumn } = $object;
+
+    } elsif ($update_policy eq 'skip') {
+      push(@{$entry->{errors}}, $::locale->text('Skipping due to existing entry in database'));
+
+    } elsif ($update_policy eq 'update_existing') {
+      # Update existing customer/vendor records.
+      $entry->{object_to_save} = $existing_vc;
+
+      $existing_vc->$_( $entry->{object}->$_ ) for @{ $methods };
+
+      push @{ $entry->{information} }, $::locale->text('Updating existing entry in database');
+
+    } else {
+      $object->$numbercolumn('####');
     }
   } continue {
     $i++;
index dbfe48de6bbcdd20547a9edd5fe0bd122b489f56..e4596339d35abf42e76f66edd8e610b55876e1ed 100644 (file)
@@ -854,6 +854,7 @@ $self->{texts} = {
   'Execution type'              => 'Ausführungsart',
   'Existing Buchungsgruppen'    => 'Existierende Buchungsgruppen',
   'Existing Datasets'           => 'Existierende Datenbanken',
+  'Existing customers/vendors with same customer/vendor number' => 'Existierende Kunden/Lieferanten mit derselben Kunden-/Lieferantennummer',
   'Existing file on server'     => 'Auf dem Server existierende Datei',
   'Existing pending follow-ups for this item' => 'Noch nicht erledigte Wiedervorlagen f&uuml;r dieses Dokument',
   'Existing profiles'           => 'Existierende Profile',
@@ -992,6 +993,7 @@ $self->{texts} = {
   'If you want to change any of these parameters then press the &quot;Back&quot; button, edit the file &quot;config/kivitendo.conf&quot; and login into the admin module again.' => 'Wenn Sie einen der Parameter &auml;ndern wollen, so dr&uuml;cken Sie auf den &quot;Zur&uuml;ck&quot;-Button, bearbeiten Sie die Datei &quot;config/kivitendo.conf&quot;, und melden Sie sich erneut im Administrationsbereich an.',
   'If you want to delete such a dataset you have to edit the user(s) that are using the dataset in question and have them use another dataset.' => 'Wenn Sie eine solche Datenbank l&ouml;schen wollen, so m&uuml;ssen Sie zuerst die Benutzer bearbeiten, die die fragliche Datenbank benutzen, und sie so &auml;ndern, dass sie eine andere Datenbank benutzen.',
   'If you want to set up the authentication database yourself then log in to the administration panel. kivitendo will then create the database and tables for you.' => 'Wenn Sie die Authentifizierungs-Datenbank selber einrichten wollen, so melden Sie sich im Administrationsbereich an. kivitendo wird dann die Datenbank und die erforderlichen Tabellen für Sie anlegen.',
+  'Illegal characters have been removed from the following fields: #1' => '',
   'Image'                       => 'Grafik',
   'Import'                      => 'Import',
   'Import CSV'                  => 'CSV-Import',
@@ -1026,6 +1028,7 @@ $self->{texts} = {
   'Increase'                    => 'Erhöhen',
   'Individual Items'            => 'Einzelteile',
   'Information'                 => 'Information',
+  'Insert with new customer/vendor number' => 'Mit neuer Kunden-/Lieferantennummer anlegen',
   'Insert with new part number' => 'Mit neuer Artikelnummer einfügen',
   'Interest'                    => 'Zinsen',
   'Interest Rate'               => 'Zinssatz',
@@ -1784,7 +1787,7 @@ $self->{texts} = {
   'Single values in item mode, cumulated values in invoice mode' => 'Einzelwerte im Artikelmodus, kumulierte Werte im Rechnungsmodus',
   'Skip'                        => 'Überspringen',
   'Skip entry'                  => 'Eintrag überspringen',
-  'Skipping due to existing entry in database' => 'Übersprungen, wegen existierender Artikelnummer',
+  'Skipping due to existing entry in database' => 'Wegen existierendem Eintrag mit selber Nummer übersprungen',
   'Skonto'                      => 'Skonto',
   'Skonto Terms'                => 'Zahlungsziel Skonto',
   'Sold'                        => 'Verkauft',
@@ -2211,8 +2214,10 @@ $self->{texts} = {
   'Update complete'             => 'Update beendet.',
   'Update prices'               => 'Preise aktualisieren',
   'Update prices of existing entries' => 'Preise von vorhandenen Artikeln aktualisieren',
+  'Update properties of existing entries' => 'Eigenschaften von existierenden Einträgen aktualisieren',
   'Update?'                     => 'Aktualisieren?',
   'Updated'                     => 'Erneuert am',
+  'Updating existing entry in database' => 'Existierenden Eintrag in Datenbank aktualisieren',
   'Updating prices of existing entry in database' => 'Preis des Eintrags in der Datenbank wird aktualisiert',
   'Uploaded on #1, size #2 kB'  => 'Am #1 hochgeladen, Größe #2 kB',
   'Use As New'                  => 'Als neu verwenden',
index dbb828031f0303d310250b853713c5bb0890d003..960ef5c51b9cb1117da7bbaa145cbf3ef38bb146 100644 (file)
@@ -8,3 +8,11 @@
   [% L.select_tag('settings.table', opts, default = SELF.profile.get('table'), style = 'width: 300px') %]
  </td>
 </tr>
+
+<tr>
+ <th align="right">[%- LxERP.t8('Existing customers/vendors with same customer/vendor number') %]:</th>
+ <td colspan="10">
+  [% opts = [ [ 'update_existing', LxERP.t8('Update properties of existing entries') ], [ 'insert_new', LxERP.t8('Insert with new customer/vendor number') ], [ 'skip', LxERP.t8('Skip entry') ] ] %]
+  [% L.select_tag('settings.update_policy', opts, default = SELF.profile.get('update_policy'), style = 'width: 300px') %]
+ </td>
+</tr>