From 7caf72fffe2dfe58d11da0acd0e2892e6737330a Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Wed, 2 Mar 2011 17:55:40 +0100 Subject: [PATCH] =?utf8?q?Hilfetexte=20anzeigen;=20sehr=20viele=20=C3=9Cbe?= =?utf8?q?rsetzungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- SL/Controller/CsvImport.pm | 11 ++++- SL/Controller/CsvImport/Base.pm | 35 ++++++++++++++- SL/Controller/CsvImport/CustomerVendor.pm | 7 +++ SL/Controller/CsvImport/Part.pm | 55 ++++++++++++++++++++++- locale/de/all | 33 +++++++++++++- templates/webpages/csv_import/form.html | 28 ++++++++++++ 6 files changed, 164 insertions(+), 5 deletions(-) diff --git a/SL/Controller/CsvImport.pm b/SL/Controller/CsvImport.pm index 757110a55..c2f2a6ce0 100644 --- a/SL/Controller/CsvImport.pm +++ b/SL/Controller/CsvImport.pm @@ -18,7 +18,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 raw_data_headers data num_imported num_importable) ], + import_status errors headers raw_data_headers data num_imported num_importable worker displayable_columns) ], ); __PACKAGE__->run_before('check_auth'); @@ -124,6 +124,8 @@ sub render_inputs { $self->all_buchungsgruppen(SL::DB::Manager::Buchungsgruppe->get_all_sorted); + $self->setup_help; + $self->render('csv_import/form', title => $title); } @@ -233,4 +235,11 @@ sub create_worker { : die "Program logic error"; } +sub setup_help { + my ($self) = @_; + + $self->create_worker->setup_displayable_columns; +} + + 1; diff --git a/SL/Controller/CsvImport/Base.pm b/SL/Controller/CsvImport/Base.pm index 7d966c17b..a52201b98 100644 --- a/SL/Controller/CsvImport/Base.pm +++ b/SL/Controller/CsvImport/Base.pm @@ -13,7 +13,7 @@ use parent qw(Rose::Object); use Rose::Object::MakeMethods::Generic ( scalar => [ qw(controller file csv) ], - 'scalar --get_set_init' => [ qw(profile existing_objects class manager_class cvar_columns all_cvar_configs all_languages payment_terms_by) ], + 'scalar --get_set_init' => [ qw(profile displayable_columns existing_objects class manager_class cvar_columns all_cvar_configs all_languages payment_terms_by) ], ); sub run { @@ -145,6 +145,39 @@ sub init_profile { $self->profile(\%profile); } +sub add_displayable_columns { + my ($self, @columns) = @_; + + my @cols = @{ $self->controller->displayable_columns || [] }; + my %ex_col_map = map { $_->{name} => $_ } @cols; + + foreach my $column (@columns) { + if ($ex_col_map{ $column->{name} }) { + @{ $ex_col_map{ $column->{name} } }{ keys %{ $column } } = @{ $column }{ keys %{ $column } }; + } else { + push @cols, $column; + } + } + + $self->controller->displayable_columns([ sort { $a->{name} cmp $b->{name} } @cols ]); +} + +sub setup_displayable_columns { + my ($self) = @_; + + $self->add_displayable_columns(map { { name => $_ } } keys %{ $self->profile }); +} + +sub add_cvar_columns_to_displayable_columns { + my ($self) = @_; + + return unless $self->can('all_cvar_configs'); + + $self->add_displayable_columns(map { { name => 'cvar_' . $_->name, + description => $::locale->text('#1 (custom variable)', $_->description) } } + @{ $self->all_cvar_configs }); +} + sub init_existing_objects { my ($self) = @_; diff --git a/SL/Controller/CsvImport/CustomerVendor.pm b/SL/Controller/CsvImport/CustomerVendor.pm index 2fec13189..df36d1d9d 100644 --- a/SL/Controller/CsvImport/CustomerVendor.pm +++ b/SL/Controller/CsvImport/CustomerVendor.pm @@ -201,6 +201,13 @@ sub init_profile { return $profile; } +sub setup_displayable_columns { + my ($self) = @_; + + $self->SUPER::setup_displayable_columns; + $self->add_cvar_columns_to_displayable_columns; +} + # TODO: # salesman_id -- Kunden mit Typ 'Verkäufer', falls $::vertreter an ist, ansonsten Employees diff --git a/SL/Controller/CsvImport/Part.pm b/SL/Controller/CsvImport/Part.pm index af3b10755..69b1d452a 100644 --- a/SL/Controller/CsvImport/Part.pm +++ b/SL/Controller/CsvImport/Part.pm @@ -369,7 +369,7 @@ sub init_profile { my ($self) = @_; my $profile = $self->SUPER::init_profile; - delete @{$profile}{qw(type priceupdate)}; + delete @{$profile}{qw(alternate assembly bom expense_accno_id income_accno_id inventory_accno_id makemodel priceupdate stockable type)}; return $profile; } @@ -386,4 +386,57 @@ sub save_objects { $self->SUPER::save_objects(data => $without_number); } +sub setup_displayable_columns { + my ($self) = @_; + + $self->SUPER::setup_displayable_columns; + $self->add_cvar_columns_to_displayable_columns; + + $self->add_displayable_columns({ name => 'bin', description => $::locale->text('Bin') }, + { name => 'binding_max_qty', description => $::locale->text('Binding Max Qty') }, + { name => 'buchungsgruppen_id', description => $::locale->text('Buchungsgruppe (database ID)') }, + { name => 'buchungsgruppe', description => $::locale->text('Buchungsgruppe (name)') }, + { name => 'description', description => $::locale->text('Description') }, + { name => 'drawing', description => $::locale->text('Drawing') }, + { name => 'ean', description => $::locale->text('EAN') }, + { name => 'formel', description => $::locale->text('Formula') }, + { name => 'gv', description => $::locale->text('Business Volume') }, + { name => 'has_sernumber', description => $::locale->text('Has serial number') }, + { name => 'image', description => $::locale->text('Image') }, + { name => 'lastcost', description => $::locale->text('Last Cost') }, + { name => 'listprice', description => $::locale->text('List Price') }, + { name => 'microfiche', description => $::locale->text('Microfiche') }, + { name => 'min_sellprice', description => $::locale->text('Minimum Sell Price') }, + { name => 'not_discountable', description => $::locale->text('Not Discountable') }, + { name => 'notes', description => $::locale->text('Notes') }, + { name => 'obsolete', description => $::locale->text('Obsolete') }, + { name => 'onhand', description => $::locale->text('On Hand') }, + { name => 'packing_type_id', description => $::locale->text('Packing type (database ID)') }, + { name => 'packing_type', description => $::locale->text('Packing type (name)') }, + { name => 'partnumber', description => $::locale->text('Part Number') }, + { name => 'partsgroup_id', description => $::locale->text('Partsgroup (database ID)') }, + { name => 'partsgroup', description => $::locale->text('Partsgroup (name)') }, + { name => 'payment_id', description => $::locale->text('Payment terms (database ID)') }, + { name => 'payment', description => $::locale->text('Payment terms (name)') }, + { name => 'price_factor_id', description => $::locale->text('Price factor (database ID)') }, + { name => 'price_factor', description => $::locale->text('Price factor (name)') }, + { name => 'rop', description => $::locale->text('ROP') }, + { name => 'sellprice', description => $::locale->text('Sellprice') }, + { name => 'shop', description => $::locale->text('Shopartikel') }, + { name => 'unit', description => $::locale->text('Unit') }, + { name => 've', description => $::locale->text('Verrechnungseinheit') }, + { name => 'weight', description => $::locale->text('Weight') }, + ); + + foreach my $language (@{ $self->all_languages }) { + $self->add_displayable_columns({ name => 'description_' . $language->article_code, + description => $::locale->text('Description (translation for #1)', $language->description) }, + { name => 'notes_' . $language->article_code, + description => $::locale->text('Notes (translation for #1)', $language->description) }); + } +} + +# TODO: +# Preisgruppen + 1; diff --git a/locale/de/all b/locale/de/all index fe5b595e5..920755932 100644 --- a/locale/de/all +++ b/locale/de/all @@ -13,6 +13,7 @@ $self->{texts} = { ' Date missing!' => ' Datum fehlt!', ' Part Number missing!' => ' Artikelnummer fehlt!', ' missing!' => ' fehlt!', + '#1 (custom variable)' => '#1 (benutzerdefinierte Variable)', '#1 of #2 importable objects were imported.' => '#1 von #2 importierbaren Objekten wurden importiert.', '#1 prices were updated.' => '#1 Preise wurden aktualisiert.', '*/' => '*/', @@ -274,6 +275,7 @@ $self->{texts} = { 'Bin From' => 'Quelllagerplatz', 'Bin List' => 'Lagerliste', 'Bin To' => 'Ziellagerplatz', + 'Binding Max Qty' => '', 'Binding to the LDAP server as "#1" failed. Please check config/lx_office.conf.' => 'Die Anmeldung am LDAP-Server als "#1" schlug fehl. Bitte überprüfen Sie die Angaben in config/lx_office.conf.', 'Bins saved.' => 'Lagerplätze gespeichert.', 'Bins that have been used in the past cannot be deleted anymore. For these bins there\'s no checkbox in the "Delete" column.' => 'Lagerplätze, die bereits benutzt wurden, können nicht mehr gelöscht werden. Deswegen fehlt bei ihnen die Checkbox in der Spalte "Löschen".', @@ -291,6 +293,8 @@ $self->{texts} = { 'Bought' => 'Gekauft', 'Buchungsdatum' => 'Buchungsdatum', 'Buchungsgruppe' => 'Buchungsgruppe', + 'Buchungsgruppe (database ID)' => 'Buchungsgruppe (Datenbank-ID)', + 'Buchungsgruppe (name)' => 'Buchungsgruppe (Name)', 'Buchungsgruppen' => 'Buchungsgruppen', 'Buchungskonto' => 'Buchungskonto', 'Buchungsnummer' => 'Buchungsnummer', @@ -387,6 +391,7 @@ $self->{texts} = { 'Close Window' => 'Fenster Schließen', 'Closed' => 'Geschlossen', 'Collective Orders only work for orders from one customer!' => 'Sammelaufträge funktionieren nur für Aufträge von einem Kunden!', + 'Column name' => 'Spaltenname', 'Comma' => 'Komma', 'Comment' => 'Kommentar', 'Company' => 'Firma', @@ -564,6 +569,7 @@ $self->{texts} = { 'Deposit' => 'Gutschrift', 'Description' => 'Beschreibung', 'Description (Click on Description for details)' => 'Beschreibung (Klick öffnet einzelne Kontendetails)', + 'Description (translation for #1)' => 'Beschreibung (Übersetzung für #1)', 'Description missing!' => 'Beschreibung fehlt.', 'Description must not be empty!' => 'Beschreibung darf nicht leer sein', 'Destination BIC' => 'Ziel-BIC', @@ -728,9 +734,18 @@ $self->{texts} = { 'Error message from the database driver:' => 'Fehlermeldung des Datenbanktreibers:', 'Error when saving: #1' => 'Fehler beim Speichern: #2', 'Error!' => 'Fehler!', + 'Error: Buchungsgruppe missing or invalid' => 'Fehler: Buchungsgruppe fehlt oder ungültig', 'Error: Customer/vendor not found' => 'Fehler: Kunde/Lieferant nicht gefunden', 'Error: Gender (cp_gender) missing or invalid' => 'Fehler: Geschlecht (cp_gender) fehlt oder ungültig', + 'Error: Invalid business' => 'Fehler: Kunden-/Lieferantentyp ungültig', + 'Error: Invalid language' => 'Fehler: Sprache ungültig', + 'Error: Invalid packing type' => 'Fehler: Packtyp ungültig', + 'Error: Invalid part type' => 'Fehler: Artikeltyp ungültig', + 'Error: Invalid parts group' => 'Fehler: Warengruppe ungültig', + 'Error: Invalid payment terms' => 'Fehler: Zahlungsbedingungen ungültig', + 'Error: Invalid price factor' => 'Fehler: Preisfaktor ungültig', 'Error: Name missing' => 'Fehler: Name fehlt', + 'Error: Unit missing or invalid' => 'Fehler: Einheit fehlt oder ungültig', 'Errors' => 'Fehler', 'Ertrag' => 'Ertrag', 'Ertrag prozentual' => 'Ertrag prozentual', @@ -849,8 +864,10 @@ $self->{texts} = { 'Headings' => 'Überschriften', 'Help' => 'Hilfe', 'Help Template Variables' => 'Hilfe zu Dokumenten-Variablen', + 'Help on column names' => 'Hilfe zu Spaltennamen', 'Here\'s an example command line:' => 'Hier ist eine Kommandozeile, die als Beispiel dient:', 'Hide by default' => 'Standardmäßig verstecken', + 'Hide help text' => 'Hilfetext vergeben', 'History' => 'Historie', 'History Search' => 'Historien Suche', 'History Search Engine' => 'Historien Suchmaschine', @@ -964,7 +981,6 @@ $self->{texts} = { 'Konten' => 'Konten', 'Kontonummernerweiterung (KNE)' => 'Kontonummernerweiterung (KNE)', 'L' => 'L', - 'LANGUAGES' => '', 'LIABILITIES' => 'PASSIVA', 'LP' => 'LP', 'LaTeX Templates' => 'LaTeX-Vorlagen', @@ -1068,6 +1084,7 @@ $self->{texts} = { 'May' => 'Mai', 'May ' => 'Mai', 'May set the BCC field when sending emails' => 'Beim Verschicken von Emails das Feld \'BCC\' setzen', + 'Meaning' => 'Bedeutung', 'Medium Number' => 'Datenträgernummer', 'Memo' => 'Memo', 'Menu' => 'Menü', @@ -1075,6 +1092,7 @@ $self->{texts} = { 'Method' => 'Verfahren', 'Microfiche' => 'Mikrofilm', 'Minimum Amount' => 'Mindestbetrag', + 'Minimum Sell Price' => '', 'Miscellaneous' => 'Verschiedenes', 'Missing \'description\' field.' => 'Fehlendes Feld \'description\'.', 'Missing \'tag\' field.' => 'Fehlendes Feld \'tag\'.', @@ -1165,6 +1183,7 @@ $self->{texts} = { 'Note: For Firefox 4 and later the menu XUL menu requires the addon Remote XUL Manager and the Lx-Office server to be white listed.' => 'Bitte beachten: Ab Firefox 4 benötigt das XUL Menü das Addon Remote XUL Manager, in dem der Lx-Office Server eingetragen sein muss.', 'Note: Taxkeys must have a "valid from" date, and will not behave correctly without.' => 'Hinweis: Steuerschlüssel sind fehlerhaft ohne "Gültig ab" Datum', 'Notes' => 'Bemerkungen', + 'Notes (translation for #1)' => 'Bemerkungen (Übersetzung für #1)', 'Notes (will appear on hard copy)' => 'Bemerkungen', 'Nothing has been selected for removal.' => 'Es wurde nichts für eine Entnahme ausgewählt.', 'Nothing has been selected for transfer.' => 'Es wurde nichts zum Umlagern ausgewählt.', @@ -1235,6 +1254,8 @@ $self->{texts} = { 'POSTED AS NEW' => 'Als neu gebucht', 'PRINTED' => 'Gedruckt', 'Packing Lists' => 'Lieferschein', + 'Packing type (database ID)' => 'Pack-Typ (Datenbank-ID)', + 'Packing type (name)' => 'Pack-Typ (Name)', 'Page #1/#2' => 'Seite #1/#2', 'Paid' => 'bezahlt', 'Part' => 'Ware', @@ -1250,6 +1271,8 @@ $self->{texts} = { 'Parts must have an entry type.' => 'Waren müssen eine Buchungsgruppe haben.', 'Parts with existing part numbers' => 'Artikel mit existierender Artikelnummer', 'Parts, services and assemblies' => 'Waren, Dienstleistungen und Erzeugnisse', + 'Partsgroup (database ID)' => 'Warengruppe (Datenbank-ID)', + 'Partsgroup (name)' => 'Warengruppe (Name)', 'Password' => 'Passwort', 'Payables' => 'Verbindlichkeiten', 'Payment' => 'Zahlungsausgang', @@ -1262,7 +1285,9 @@ $self->{texts} = { 'Payment list as PDF' => 'Zahlungsliste als PDF', 'Payment posted!' => 'Zahlung gebucht!', 'Payment terms' => 'Zahlungsbedingungen', - 'Payments' => 'Zahlungsausgänge', + 'Payment terms (database ID)' => 'Zahlungsbedingungen (Datenbank-ID)', + 'Payment terms (name)' => 'Zahlungsbedingungen (Name)', + 'Payments' => 'Zahlungsausgünge', 'Per. Inv.' => 'Wied. Rech.', 'Period' => 'Zeitraum', 'Period:' => 'Zeitraum:', @@ -1327,6 +1352,8 @@ $self->{texts} = { 'Price' => 'Preis', 'Price Factor' => 'Preisfaktor', 'Price Factors' => 'Preisfaktoren', + 'Price factor (database ID)' => 'Preisfaktor (Datenbank-ID)', + 'Price factor (name)' => 'Preisfaktor (Name)', 'Price factor deleted!' => 'Preisfaktor gelöscht.', 'Price factor saved!' => 'Preisfaktor gespeichert.', 'Pricegroup' => 'Preisgruppe', @@ -1529,6 +1556,7 @@ $self->{texts} = { 'Selection' => 'Auswahlbox', 'Selection fields: The option field must contain the available options for the selection. Options are separated by \'##\', for example \'Early##Normal##Late\'.' => 'Auswahlboxen: Das Optionenfeld muss die für die Auswahl verfügbaren Einträge enthalten. Die Einträge werden mit \'##\' voneinander getrennt. Beispiel: \'Früh##Normal##Spät\'.', 'Sell Price' => 'Verkaufspreis', + 'Sellprice' => '', 'Sellprice adjustment' => 'Verkaufspreis: Preisanpassung', 'Sellprice significant places' => 'Verkaufspreis: Nachkommastellen', 'Semicolon' => 'Semikolon', @@ -1563,6 +1591,7 @@ $self->{texts} = { 'Show custom variable search inputs' => 'Suchoptionen für Benutzerdefinierte Variablen verstecken', 'Show details' => 'Detailsanzeige', 'Show follow ups...' => 'Zeige Wiedervorlagen...', + 'Show help text' => 'Hilfetext anzeigen', 'Show old dunnings' => 'Alte Mahnungen anzeigen', 'Show overdue sales quotations and requests for quotations...' => 'Überfällige Angebote und Preisanfragen anzeigen...', 'Show your TODO list after loggin in' => 'Aufgabenliste nach dem Anmelden anzeigen', diff --git a/templates/webpages/csv_import/form.html b/templates/webpages/csv_import/form.html index 5c265094b..1fed86429 100644 --- a/templates/webpages/csv_import/form.html +++ b/templates/webpages/csv_import/form.html @@ -45,6 +45,34 @@
+

[%- LxERP.t8('Help on column names') %]

+ +
+ [% LxERP.t8("Show help text") %] +
+ + + +
+

[%- LxERP.t8('Settings') %]

-- 2.20.1