FlattenToForm - Verkäufer-Daten und gelöschte Benutzer berücksichtigen.
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Wed, 8 Aug 2018 11:02:15 +0000 (13:02 +0200)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Wed, 8 Aug 2018 15:25:02 +0000 (17:25 +0200)
Analog zur Behandlung der Benutzer-Daten, die nur in auth vorhanden sind,
auch die Verkäufer-Daten berücksichtigen.

Zudem Daten gelöschter Benutzer/Verkäufer, die der Beleg referenziert, zur
Verfügung stellen.

Das ganze in eine eigene Routine ausgelagert.

SL/DB/Helper/FlattenToForm.pm

index 920bdf2..1f54a8a 100644 (file)
@@ -52,10 +52,8 @@ sub flatten_to_form {
   _copy($self->salesman,                $form, 'salesman_',     '', 0, map { $_->name } SL::DB::Employee->meta->columns)                   if _has($self, 'salesman_id');
   _copy($self->acceptance_confirmed_by, $form, 'acceptance_confirmed_by_', '', 0, map { $_->name } SL::DB::Employee->meta->columns)        if _has($self, 'acceptance_confirmed_by_id');
 
-  if (_has($self, 'employee_id')) {
-    my $user = User->new(login => $self->employee->login);
-    $form->{"employee_$_"} = $user->{$_} for qw(tel email fax);
-  }
+  _handle_user_data($self, $form);
+
   # company is employee and login independent
   $form->{"${_}_company"}  = $::instance_conf->get_company for qw (employee salesman);
 
@@ -170,4 +168,23 @@ sub _determine_cvar_validity {
   );
 }
 
+sub  _handle_user_data {
+  my ($self, $form) = @_;
+
+  foreach my $type (qw(employee salesman)) {
+    next if !_has($self, "${type}_id");
+
+    my $user = User->new(login => $self->$type->login);
+    $form->{"${type}_$_"} = $user->{$_} for qw(tel email fax signature);
+
+    if ($self->$type->deleted) {
+      for my $key (grep { $_ =~ m{^deleted_} } SL::DB::Employee->meta->columns) {
+        $key =~ s{^deleted_}{};
+        $form->{"${type}_${key}"} = $form->{"${type}_deleted_${key}"}
+      }
+    }
+
+  }
+}
+
 1;