]> wagnertech.de Git - kivitendo-erp.git/blobdiff - SL/DB/Project.pm
Mandantenkonfiguration: experimentelle Features einzeln an-/abschaltbar machen
[kivitendo-erp.git] / SL / DB / Project.pm
index 73390d85e7ceca2a7ecba81dbe6508941649f891..df5fe09ec2e24d17cce4f335ac8f48db135e8500 100644 (file)
@@ -48,6 +48,42 @@ sub is_projectnumber_unique {
   return !SL::DB::Manager::Project->get_first(where => \@filter);
 }
 
   return !SL::DB::Manager::Project->get_first(where => \@filter);
 }
 
+sub displayable_name {
+  my ($self) = @_;
+
+  return join ' ', grep $_, $self->projectnumber, $self->description;
+}
+
+sub full_description {
+  my ($self, %params) = @_;
+
+  $params{style} ||= 'both';
+  my $description;
+
+  if ($params{style} =~ m/number/) {
+    $description = $self->projectnumber;
+
+  } elsif ($params{style} =~ m/description/) {
+    $description = $self->description;
+
+  } elsif (($params{style} =~ m/full/) && $self->customer) {
+    $description = $self->projectnumber;
+    if ($self->description && do { my $desc = quotemeta $self->description; $self->projectnumber !~ m/$desc/ }) {
+      $description .= ' ' . $self->description;
+    }
+
+    $description = $self->customer->name . " (${description})";
+
+  } else {
+    $description = $self->projectnumber;
+    if ($self->description && do { my $desc = quotemeta $self->description; $self->projectnumber !~ m/$desc/ }) {
+      $description .= ' (' . $self->description . ')';
+    }
+  }
+
+  return $description;
+}
+
 1;
 
 __END__
 1;
 
 __END__
@@ -83,6 +119,46 @@ Returns trueish if the project number is not used for any other
 project in the database. Also returns trueish if no project number has
 been set yet.
 
 project in the database. Also returns trueish if no project number has
 been set yet.
 
+=item C<displayable_name>
+
+Returns a human-readable description of the project, consisting of projectnumber
+and description.
+
+=item C<full_description %params>
+
+Returns a full description for the project which can consist of the
+project number, its description or both. This is determined by the
+parameter C<style> which defaults to C<both>:
+
+=over 2
+
+=item C<both>
+
+Returns the project's number followed by its description in
+parenthesis (e.g. "12345 (Secret Combinations)"). If the project's
+description is already part of the project's number then it will not
+be appended.
+
+=item C<projectnumber> (or simply C<number>)
+
+Returns only the project's number.
+
+=item C<projectdescription> (or simply C<description>)
+
+Returns only the project's description.
+
+=item C<full>
+
+Returns the customer name followed by the project number and project
+description in parenthesis (e.g. "Evil Corp (12345 World
+domination)"). If the project's description is already part of the
+project's number then it will not be appended.
+
+If this project isn't linked to a customer then the style C<both> is
+used instead.
+
+=back
+
 =back
 
 =head1 AUTHOR
 =back
 
 =head1 AUTHOR