From 5d7c5a5b1375c5b6cf29fb48ea5a3de97ba24154 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Mon, 15 Apr 2013 14:03:34 +0200 Subject: [PATCH] =?utf8?q?CSV-Import=20Kunden/Lieferanten:=20Schalter=20f?= =?utf8?q?=C3=BCr=20Behandlung=20bereits=20vorhandener=20Eintr=C3=A4ge?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Conflicts: SL/Controller/CsvImport/CustomerVendor.pm --- SL/Controller/CsvImport/Base.pm | 1 - SL/Controller/CsvImport/CustomerVendor.pm | 26 +++++++++++++++---- locale/de/all | 7 ++++- .../csv_import/_form_customers_vendors.html | 8 ++++++ 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/SL/Controller/CsvImport/Base.pm b/SL/Controller/CsvImport/Base.pm index fa3e4f43e..68d35d89d 100644 --- a/SL/Controller/CsvImport/Base.pm +++ b/SL/Controller/CsvImport/Base.pm @@ -423,4 +423,3 @@ sub fix_field_lengths { } 1; - diff --git a/SL/Controller/CsvImport/CustomerVendor.pm b/SL/Controller/CsvImport/CustomerVendor.pm index fba1ac448..0d6db32c5 100644 --- a/SL/Controller/CsvImport/CustomerVendor.pm +++ b/SL/Controller/CsvImport/CustomerVendor.pm @@ -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++; diff --git a/locale/de/all b/locale/de/all index dbfe48de6..e4596339d 100644 --- a/locale/de/all +++ b/locale/de/all @@ -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ü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 "Back" button, edit the file "config/kivitendo.conf" and login into the admin module again.' => 'Wenn Sie einen der Parameter ändern wollen, so drücken Sie auf den "Zurück"-Button, bearbeiten Sie die Datei "config/kivitendo.conf", 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öschen wollen, so müssen Sie zuerst die Benutzer bearbeiten, die die fragliche Datenbank benutzen, und sie so ä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', diff --git a/templates/webpages/csv_import/_form_customers_vendors.html b/templates/webpages/csv_import/_form_customers_vendors.html index dbb828031..960ef5c51 100644 --- a/templates/webpages/csv_import/_form_customers_vendors.html +++ b/templates/webpages/csv_import/_form_customers_vendors.html @@ -8,3 +8,11 @@ [% L.select_tag('settings.table', opts, default = SELF.profile.get('table'), style = 'width: 300px') %] + + + [%- LxERP.t8('Existing customers/vendors with same customer/vendor number') %]: + + [% 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') %] + + -- 2.20.1