]> wagnertech.de Git - mfinanz.git/commitdiff
Merge branch 'master' of github.com:kivitendo/kivitendo-erp
authorJan Büren <jan@kivitendo-premium.de>
Thu, 9 Jan 2014 11:47:36 +0000 (12:47 +0100)
committerJan Büren <jan@kivitendo-premium.de>
Thu, 9 Jan 2014 11:47:36 +0000 (12:47 +0100)
SL/Controller/Admin.pm
SL/Controller/CsvImport/Part.pm
SL/DB/Manager/Employee.pm
SL/DB/MetaSetup/Employee.pm
SL/Form.pm
locale/de/all
sql/Pg-upgrade2/employee_drop_columns.sql [new file with mode: 0644]
templates/webpages/csv_import/form.html

index 179142c738ac9e2acd690470f99783599c8e293a..0481926c91a18c598cedfc42a50fbdada259778f 100644 (file)
@@ -172,6 +172,10 @@ sub action_delete_user {
 
   my @clients = @{ $self->user->clients || [] };
 
+  # backup user metadata (email, name, etc)
+  my $user_config_values_ref = $self->user->config_values();
+  my $login =$self->user->login;
+
   if (!$self->user->delete) {
     flash('error', t8('The user could not be deleted.'));
     $self->edit_user_form(title => t8('Edit User'));
@@ -179,9 +183,15 @@ sub action_delete_user {
   }
 
   # Flag corresponding entries in 'employee' as deleted.
+  # and restore the most important user data in employee
+  # TODO try and catch the whole transaction {user->delete; update employee} {exception}
   foreach my $client (@clients) {
     my $dbh = $client->dbconnect(AutoCommit => 1) || next;
-    $dbh->do(qq|UPDATE employee SET deleted = TRUE WHERE login = ?|, undef, $self->user->login);
+    $dbh->do(qq|UPDATE employee SET deleted = TRUE, name = ?, deleted_email = ?,
+                deleted_tel = ?, deleted_fax = ?, deleted_signature = ? WHERE login = ?|,undef,
+              $user_config_values_ref->{name}, $user_config_values_ref->{email},
+              $user_config_values_ref->{tel}, $user_config_values_ref->{fax},
+              $user_config_values_ref->{signature}, $self->user->login);
     $dbh->disconnect;
   }
 
index 0cb132f34eb9bb7734a6014cf990f37ebd77b707..90d0b7115f74fa01d42dc3775291d7282bf9b53f 100644 (file)
@@ -485,7 +485,7 @@ sub setup_displayable_columns {
                                  { 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 => 'onhand',             description => $::locale->text('On Hand') . ' [2]'                                     },
                                  { name => 'partnumber',         description => $::locale->text('Part Number')                                          },
                                  { name => 'partsgroup_id',      description => $::locale->text('Partsgroup (database ID)')                             },
                                  { name => 'partsgroup',         description => $::locale->text('Partsgroup (name)')                                    },
index b4ebf14449ed6d881443e88641707b852ea07398..8acd7da04d4e2479242f08d819f876b216bce177 100644 (file)
@@ -26,7 +26,6 @@ sub update_entries_for_authorized_users {
 
     $employee->update_attributes(
       name      => $user_config->{name},
-      workphone => $user_config->{tel},
       deleted   => 0,
     );
   }
index b79d078fa3f37232d56617c27d5075c4a0ed2bf3..6cdc93021aff2ed1bf36052aefe8ff6b9d1cc9e3 100644 (file)
@@ -9,22 +9,19 @@ use base qw(SL::DB::Object);
 __PACKAGE__->meta->table('employee');
 
 __PACKAGE__->meta->columns(
-  addr1     => { type => 'text' },
-  addr2     => { type => 'text' },
-  addr3     => { type => 'text' },
-  addr4     => { type => 'text' },
-  deleted   => { type => 'boolean', default => 'false' },
-  enddate   => { type => 'date' },
-  homephone => { type => 'text' },
-  id        => { type => 'integer', not_null => 1, sequence => 'id' },
-  itime     => { type => 'timestamp', default => 'now()' },
-  login     => { type => 'text' },
-  mtime     => { type => 'timestamp' },
-  name      => { type => 'text' },
-  notes     => { type => 'text' },
-  sales     => { type => 'boolean', default => 'true' },
-  startdate => { type => 'date', default => 'now' },
-  workphone => { type => 'text' },
+  deleted           => { type => 'boolean', default => 'false' },
+  deleted_email     => { type => 'text' },
+  deleted_fax       => { type => 'text' },
+  deleted_signature => { type => 'text' },
+  deleted_tel       => { type => 'text' },
+  enddate           => { type => 'date' },
+  id                => { type => 'integer', not_null => 1, sequence => 'id' },
+  itime             => { type => 'timestamp', default => 'now()' },
+  login             => { type => 'text' },
+  mtime             => { type => 'timestamp' },
+  name              => { type => 'text' },
+  sales             => { type => 'boolean', default => 'true' },
+  startdate         => { type => 'date', default => 'now' },
 );
 
 __PACKAGE__->meta->primary_key_columns([ 'id' ]);
index fe685d23784537dcc1ec0ec957def68af8518d41..a11b7adb672b2ed45f7ae455fc6a5b30665c2a2c 100644 (file)
@@ -1926,17 +1926,24 @@ sub get_employee_data {
   my $myconfig = \%main::myconfig;
   my $dbh      = $params{dbh} || $self->get_standard_dbh($myconfig);
 
-  my ($login)  = selectrow_query($self, $dbh, qq|SELECT login FROM employee WHERE id = ?|, conv_i($params{id}));
+  my ($login, $deleted)  = selectrow_query($self, $dbh, qq|SELECT login,deleted FROM employee WHERE id = ?|, conv_i($params{id}));
 
   if ($login) {
-    my $user = User->new(login => $login);
-    $self->{$params{prefix} . "_${_}"}    = $user->{$_}   for qw(email fax name signature tel);
-    $self->{$params{prefix} . "_${_}"}    = $defaults->$_ for qw(address businessnumber co_ustid company duns taxnumber);
-
+    # login already fetched and still the same client (mandant) | same for both cases (delete|!delete)
     $self->{$params{prefix} . '_login'}   = $login;
-    $self->{$params{prefix} . '_name'}  ||= $login;
-  }
+    $self->{$params{prefix} . "_${_}"}    = $defaults->$_ for qw(address businessnumber co_ustid company duns taxnumber);
 
+    if (!$deleted) {
+      # get employee data from auth.user_config
+      my $user = User->new(login => $login);
+      $self->{$params{prefix} . "_${_}"} = $user->{$_} for qw(email fax name signature tel);
+    } else {
+      # get saved employee data from employee
+      my $employee = SL::DB::Manager::Employee->find_by(id => conv_i($params{id}));
+      $self->{$params{prefix} . "_${_}"} = $employee->{"deleted_$_"} for qw(email fax signature tel);
+      $self->{$params{prefix} . "_name"} = $employee->name;
+    }
+ }
   $main::lxdebug->leave_sub();
 }
 
index 846f6a226aa4163ef36ceba351424eb19699a2b2..98d6920ed5e9df41c8accf20e135ce9163059d90 100755 (executable)
@@ -1453,6 +1453,7 @@ $self->{texts} = {
   'On Hand'                     => 'Auf Lager',
   'On Order'                    => 'Ist bestellt',
   'One or more Perl modules missing' => 'Ein oder mehr Perl-Module fehlen',
+  'Onhand only sets the quantity in master data, not in inventory. This is only a legacy info field and will be overwritten as soon as a inventory transfer happens.' => 'Das Import-Feld Auf Lager setzt nur die Menge in den Stammdaten, nicht im Lagerbereich. Dies ist historisch gewachsen nur ein Informationsfeld was mit dem tatsächlichen Wert überschrieben wird, sobald eine wirkliche Lagerbewegung stattfindet (DB-Trigger).',
   'Only Warnings and Errors'    => 'Nur Warnungen und Fehler',
   'Only due follow-ups'         => 'Nur f&auml;llige Wiedervorlagen',
   'Only groups that have been configured for the client the user logs in to will be considered.' => 'Allerdings werden nur diejenigen Gruppen herangezogen, die für den Mandanten konfiguriert sind.',
diff --git a/sql/Pg-upgrade2/employee_drop_columns.sql b/sql/Pg-upgrade2/employee_drop_columns.sql
new file mode 100644 (file)
index 0000000..a87cf05
--- /dev/null
@@ -0,0 +1,16 @@
+-- @tag: employee_drop_columns
+-- @description: Obsolete Felder in employee entfernt und Datenfelder zum Speichern für die Historie der Mitarbeiter (nach Löschen eines Benutzer) hinzugefügt. Aktuell alle Felder die der Benutzer unter persönliche Einstellungen ändern kann
+-- @depends: release_3_0_0
+-- @ignore: 0
+-- @charset: utf-8
+ALTER TABLE employee DROP COLUMN addr1;
+ALTER TABLE employee DROP COLUMN addr2;
+ALTER TABLE employee DROP COLUMN addr3;
+ALTER TABLE employee DROP COLUMN addr4;
+ALTER TABLE employee DROP COLUMN homephone;
+ALTER TABLE employee DROP COLUMN workphone;
+ALTER TABLE employee DROP COLUMN notes;
+ALTER TABLE employee ADD COLUMN deleted_email text;
+ALTER TABLE employee ADD COLUMN deleted_signature text;
+ALTER TABLE employee ADD COLUMN deleted_tel text;
+ALTER TABLE employee ADD COLUMN deleted_fax text;
index 5b189ec77a013bbcd7e09d72436600e15e5054bf..4a9672b8fd1193678856953806e55c761c5309ee 100644 (file)
     [% LxERP.t8('The items are imported accoring do their number "X" regardless of the column order inside the file.') %]
     [% LxERP.t8('The column "make_X" can contain either a vendor\'s database ID, a vendor number or a vendor\'s name.') %]
    </p>
+    <p>
+    [2]:
+    [% LxERP.t8('Onhand only sets the quantity in master data, not in inventory. This is only a legacy info field and will be overwritten as soon as a inventory transfer happens.') %]
+   </p>
 
 [%- ELSIF SELF.type == 'orders' %]
    <p>