Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 159dd378

Von Thomas Heck vor etwa 12 Jahren hinzugefügt

  • ID 159dd37836728abbb2caca3cb25904428ed99859
  • Vorgänger 540c0b5e
  • Nachfolger 11860978

CSV-Import: Projekte

implementiert #1907

Unterschiede anzeigen:

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