Pflichtenheft: Zugriff auf nicht vorhandenes »visible_item« verhindern
[kivitendo-erp.git] / SL / DB / Letter.pm
1 package SL::DB::Letter;
2
3 use strict;
4
5 use SL::DB::Helper::AttrHTML;
6 use SL::DB::Helper::LinkedRecords;
7 use SL::DB::MetaSetup::Letter;
8 use SL::DB::Manager::Letter;
9
10 __PACKAGE__->meta->initialize;
11
12 __PACKAGE__->attr_html('body');
13
14 sub new_from_draft {
15   my ($class, $draft) = @_;
16
17   my $self = $class->new;
18
19   if (!ref $draft) {
20     require SL::DB::LetterDraft;
21     $draft = SL::DB::LetterDraft->new(id => $draft)->load;
22   }
23
24   $self->assign_attributes(map { $_ => $draft->$_ } $draft->meta->columns);
25
26   $self->id(undef);
27
28   $self;
29 }
30
31 sub is_sales {
32   die 'not an accessor' if @_ > 1;
33   $_[0]{customer_id} * 1;
34 }
35
36 sub has_customer_vendor {
37   my ($self) = @_;
38   die 'not an accessor' if @_ > 1;
39
40   return $self->is_sales
41     ? ($self->customer_id && $self->customer)
42     : ($self->vendor_id   && $self->vendor);
43 }
44
45 sub customer_vendor {
46   die 'not an accessor' if @_ > 1;
47   $_[0]->is_sales ? $_[0]->customer : $_[0]->vendor;
48 }
49
50 sub customer_vendor_id {
51   die 'not an accessor' if @_ > 1;
52   $_[0]->customer_id || $_[0]->vendor_id;
53 }
54
55 1;