+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;
+}
+
+sub may_employee_view_project_invoices {
+ my ($self, $employee) = @_;
+
+ return undef if !$self->id;
+
+ my $employee_id = ref($employee) ? $employee->id : $employee * 1;
+ my $query = <<EOSQL;
+ SELECT project_id
+ FROM employee_project_invoices
+ WHERE (employee_id = ?)
+ AND (project_id = ?)
+ LIMIT 1
+EOSQL
+
+ return !!$self->db->dbh->selectrow_arrayref($query, undef, $employee_id, $self->id)->[0];
+}
+