Revision 159dd378
Von Thomas Heck vor etwa 12 Jahren hinzugefügt
SL/Controller/CsvImport.pm | ||
---|---|---|
11 | 11 |
use SL::Controller::CsvImport::CustomerVendor; |
12 | 12 |
use SL::Controller::CsvImport::Part; |
13 | 13 |
use SL::Controller::CsvImport::Shipto; |
14 |
use SL::Controller::CsvImport::Project; |
|
14 | 15 |
|
15 | 16 |
use List::MoreUtils qw(none); |
16 | 17 |
|
... | ... | |
99 | 100 |
sub check_type { |
100 | 101 |
my ($self) = @_; |
101 | 102 |
|
102 |
die "Invalid CSV import type" if none { $_ eq $::form->{profile}->{type} } qw(parts customers_vendors addresses contacts); |
|
103 |
die "Invalid CSV import type" if none { $_ eq $::form->{profile}->{type} } qw(parts customers_vendors addresses contacts projects);
|
|
103 | 104 |
$self->type($::form->{profile}->{type}); |
104 | 105 |
} |
105 | 106 |
|
... | ... | |
141 | 142 |
: $self->type eq 'addresses' ? $::locale->text('CSV import: shipping addresses') |
142 | 143 |
: $self->type eq 'contacts' ? $::locale->text('CSV import: contacts') |
143 | 144 |
: $self->type eq 'parts' ? $::locale->text('CSV import: parts and services') |
145 |
: $self->type eq 'projects' ? $::locale->text('CSV import: projects') |
|
144 | 146 |
: die; |
145 | 147 |
|
146 | 148 |
if ($self->{type} eq 'parts') { |
... | ... | |
258 | 260 |
: $self->{type} eq 'contacts' ? SL::Controller::CsvImport::Contact->new( controller => $self, file => $file) |
259 | 261 |
: $self->{type} eq 'addresses' ? SL::Controller::CsvImport::Shipto->new( controller => $self, file => $file) |
260 | 262 |
: $self->{type} eq 'parts' ? SL::Controller::CsvImport::Part->new( controller => $self, file => $file) |
263 |
: $self->{type} eq 'projects' ? SL::Controller::CsvImport::Project->new( controller => $self, file => $file) |
|
261 | 264 |
: die "Program logic error"; |
262 | 265 |
} |
263 | 266 |
|
SL/Controller/CsvImport/Project.pm | ||
---|---|---|
1 |
package SL::Controller::CsvImport::Project; |
|
2 |
|
|
3 |
use strict; |
|
4 |
|
|
5 |
use SL::Helper::Csv; |
|
6 |
use SL::DB::CustomVariable; |
|
7 |
use SL::DB::CustomVariableConfig; |
|
8 |
|
|
9 |
use parent qw(SL::Controller::CsvImport::Base); |
|
10 |
|
|
11 |
use Rose::Object::MakeMethods::Generic |
|
12 |
( |
|
13 |
scalar => [ qw(table) ], |
|
14 |
); |
|
15 |
|
|
16 |
sub init_class { |
|
17 |
my ($self) = @_; |
|
18 |
$self->class('SL::DB::Project'); |
|
19 |
} |
|
20 |
|
|
21 |
sub init_all_cvar_configs { |
|
22 |
my ($self) = @_; |
|
23 |
|
|
24 |
return SL::DB::Manager::CustomVariableConfig->get_all(where => [ module => 'Projects' ]); |
|
25 |
} |
|
26 |
|
|
27 |
sub check_objects { |
|
28 |
my ($self) = @_; |
|
29 |
|
|
30 |
foreach my $entry (@{ $self->controller->data }) { |
|
31 |
$self->handle_cvars($entry); |
|
32 |
} |
|
33 |
|
|
34 |
$self->add_cvar_raw_data_columns; |
|
35 |
} |
|
36 |
|
|
37 |
sub check_duplicates { |
|
38 |
my $self = shift; |
|
39 |
|
|
40 |
my %duplicates_by_number; |
|
41 |
|
|
42 |
if ( $self->controller->profile->get('duplicates') eq 'check_db' ) { |
|
43 |
foreach my $object (@{$self->existing_objects}) { |
|
44 |
$duplicates_by_number{$object->{projectnumber}} = 'db'; |
|
45 |
} |
|
46 |
} |
|
47 |
|
|
48 |
foreach my $entry (@{ $self->controller->data }) { |
|
49 |
|
|
50 |
my $object = $entry->{object}; |
|
51 |
|
|
52 |
if ( $duplicates_by_number{$object->projectnumber()} ) |
|
53 |
{ |
|
54 |
push( @{$entry->{errors}}, |
|
55 |
$duplicates_by_number{$object->projectnumber()} eq 'db' ? $::locale->text('Duplicate in database') : $::locale->text('Duplicate in CSV file') |
|
56 |
); |
|
57 |
} else { |
|
58 |
$duplicates_by_number{$object->projectnumber()} = 'csv'; |
|
59 |
} |
|
60 |
|
|
61 |
} |
|
62 |
} |
|
63 |
|
|
64 |
sub setup_displayable_columns { |
|
65 |
my ($self) = @_; |
|
66 |
|
|
67 |
$self->SUPER::setup_displayable_columns; |
|
68 |
$self->add_cvar_columns_to_displayable_columns; |
|
69 |
|
|
70 |
$self->add_displayable_columns({ name => 'projectnumber', description => $::locale->text('number') }, |
|
71 |
{ name => 'description', description => $::locale->text('Description') }, |
|
72 |
{ name => 'active', description => $::locale->text('Active') }, |
|
73 |
); |
|
74 |
} |
|
75 |
|
|
76 |
1; |
SL/DB/Project.pm | ||
---|---|---|
4 | 4 |
|
5 | 5 |
use SL::DB::MetaSetup::Project; |
6 | 6 |
|
7 |
use SL::DB::Helper::CustomVariables( |
|
8 |
module => 'Project', |
|
9 |
cvars_alias => 1, |
|
10 |
); |
|
11 |
|
|
7 | 12 |
__PACKAGE__->meta->make_manager_class; |
13 |
__PACKAGE__->meta->initialize; |
|
8 | 14 |
|
9 | 15 |
1; |
10 | 16 |
|
locale/de/all | ||
---|---|---|
333 | 333 |
'CSV import: contacts' => 'CSV-Import: Ansprechpersonen', |
334 | 334 |
'CSV import: customers and vendors' => 'CSV-Import: Kunden und Lieferanten', |
335 | 335 |
'CSV import: parts and services' => 'CSV-Import: Waren und Dienstleistungen', |
336 |
'CSV import: projects' => 'CSV-Import: Projekte', |
|
336 | 337 |
'CSV import: shipping addresses' => 'CSV-Import: Lieferadressen', |
337 | 338 |
'Calculate' => 'Berechnen', |
338 | 339 |
'Calendar' => 'Kalender', |
... | ... | |
941 | 942 |
'If you select a base unit then you also have to enter a factor.' => 'Wenn Sie eine Basiseinheit auswählen, dann müssen Sie auch einen Faktor eingeben.', |
942 | 943 |
'If you want to change any of these parameters then press the "Back" button, edit the file "config/lx_office.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/lx_office.conf", und melden Sie sich erneut im Administrationsbereich an.', |
943 | 944 |
'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.', |
944 |
'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 Authentifizierungsdatenbank selber einrichten wollen, so melden Sie sich an der Administrationsoberfläche an. kivitendo wird dann die Datenbank und die Tabellen für Sie anlegen.', |
|
945 |
'If you yourself want to upgrade the installation then please read the file "doc/UPGRADE" and follow the steps outlined in this file.' => 'Wenn Sie selber die Aktualisierung bzw. Einrichtung übernehmen wollen, so lesen Sie bitte die Datei "doc/UPGRADE" und folgen Sie den dort beschriebenen Schritten.', |
|
946 | 945 |
'Image' => 'Grafik', |
947 | 946 |
'Import' => 'Import', |
948 | 947 |
'Import CSV' => 'CSV-Import', |
... | ... | |
969 | 968 |
'Incoming Payments' => 'Zahlungseingänge', |
970 | 969 |
'Incoming invoice number' => 'Eingangsrechnungsnummer', |
971 | 970 |
'Incorrect Password!' => 'Ungültiges Passwort!', |
971 |
'Incorrect password!' => '', |
|
972 | 972 |
'Incorrect username or password!' => 'Ungültiger Benutzername oder falsches Passwort!', |
973 | 973 |
'Increase' => 'Erhöhen', |
974 | 974 |
'Individual Items' => 'Einzelteile', |
... | ... | |
1798 | 1798 |
'The application "#1" was not found on the system.' => 'Die Anwendung "#1" wurde auf dem System nicht gefunden.', |
1799 | 1799 |
'The assembly has been created.' => 'Das Erzeugnis wurde hergestellt.', |
1800 | 1800 |
'The assistant could not find anything wrong with #1. Maybe the problem has been solved in the meantime.' => 'Der Korrekturassistent konnte kein Problem bei #1 feststellen. Eventuell wurde das Problem in der Zwischenzeit bereits behoben.', |
1801 |
'The authentication configuration file "config/lx_office.conf" does not exist. This kivitendo installation has probably not been updated correctly yet. Please contact your administrator.' => '', |
|
1802 |
'The authentication database is not reachable at the moment. Either it hasn\'t been set up yet or the database server might be down. Please contact your administrator.' => 'Die Authentifizierungsdatenbank kann momentan nicht erreicht werden. Entweder wurde sie noch nicht eingerichtet, oder der Datenbankserver antwortet nicht. Bitte wenden Sie sich an Ihren Administrator.', |
|
1803 | 1801 |
'The available options depend on the varibale type:' => 'Die verfügbaren Optionen hängen vom Variablentypen ab:', |
1804 | 1802 |
'The backup you upload here has to be a file created with "pg_dump -o -Ft".' => 'Die von Ihnen hochzuladende Sicherungsdatei muss mit dem Programm und den Parametern "pg_dump -o -Ft" erstellt worden sein.', |
1805 | 1803 |
'The bank information must not be empty.' => 'Die Bankinformationen müssen vollständig ausgefüllt werden.', |
... | ... | |
2148 | 2146 |
'You cannot continue until all unknown units have been mapped to known ones.' => 'Sie können nicht fortfahren, bis alle unbekannten Einheiten in neue Einheiten umgewandelt wurden.', |
2149 | 2147 |
'You cannot create an invoice for delivery orders for different customers.' => 'Sie können keine Rechnung zu Lieferscheinen für verschiedene Kunden erstellen.', |
2150 | 2148 |
'You cannot create an invoice for delivery orders from different vendors.' => 'Sie können keine Rechnung aus Lieferscheinen von verschiedenen Lieferanten erstellen.', |
2151 |
'You did not enter a name!' => 'Sie haben keinen Namen eingegeben!', |
|
2152 | 2149 |
'You do not have the permissions to access this function.' => 'Sie verfügen nicht über die notwendigen Rechte, um auf diese Funktion zuzugreifen.', |
2153 | 2150 |
'You have entered or selected the following shipping address for this customer:' => 'Sie haben die folgende Lieferadresse eingegeben oder ausgewählt:', |
2154 | 2151 |
'You have not added bank accounts yet.' => 'Sie haben noch keine Bankkonten angelegt.', |
menu.ini | ||
---|---|---|
758 | 758 |
action=CsvImport/new |
759 | 759 |
profile.type=parts |
760 | 760 |
|
761 |
[System--Import CSV--Projects] |
|
762 |
module=controller.pl |
|
763 |
action=CsvImport/new |
|
764 |
profile.type=projects |
|
761 | 765 |
|
762 | 766 |
[System--Templates] |
763 | 767 |
ACCESS=admin |
Auch abrufbar als: Unified diff
CSV-Import: Projekte
implementiert #1907