Zwei neue Features:
[kivitendo-erp.git] / SL / Notes.pm
1 # Notes
2
3 package Notes;
4
5 use SL::Common;
6 use SL::DBUtils;
7
8 sub save {
9   $main::lxdebug->enter_sub();
10
11   my $self     = shift;
12   my %params   = @_;
13
14   my $myconfig = \%main::myconfig;
15   my $form     = $main::form;
16
17   my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
18   my ($query, @values);
19
20   if (!$params{id}) {
21     ($params{id}) = selectrow_query($form, $dbh, qq|SELECT nextval('note_id')|);
22     $query        = qq|INSERT INTO notes (created_by, trans_id, trans_module, subject, body, id)
23                        VALUES ((SELECT id FROM employee WHERE login = ?), ?, ?, ?, ?, ?)|;
24     push @values, $form->{login}, conv_i($params{trans_id}), $params{trans_module};
25
26   } else {
27     $query        = qq|UPDATE notes SET subject = ?, body = ? WHERE id = ?|;
28   }
29
30   push @values, $params{subject}, $params{body}, conv_i($params{id});
31
32   do_query($form, $dbh, $query, @values);
33
34   $dbh->commit() unless ($params{dbh});
35
36   $main::lxdebug->leave_sub();
37
38   return $params{id};
39 }
40
41 sub retrieve {
42   $main::lxdebug->enter_sub();
43
44   my $self     = shift;
45   my %params   = @_;
46
47   Common::check_params(\%params, qw(id));
48
49   my $myconfig = \%main::myconfig;
50   my $form     = $main::form;
51
52   my $dbh      = $form->get_standard_dbh($myconfig);
53
54   my $ref      = selectfirst_hashref_query($form, $dbh, qq|SELECT * FROM notes WHERE id = ?|, conv_i($param{id}));
55
56   $main::lxdebug->leave_sub();
57
58   return $ref;
59 }
60
61 sub delete {
62   $main::lxdebug->enter_sub();
63
64   my $self     = shift;
65   my %params   = @_;
66
67   Common::check_params(\%params, qw(id));
68
69   my $myconfig = \%main::myconfig;
70   my $form     = $main::form;
71
72   my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
73   my $id       = conv_i($params{id});
74
75   do_query($form, $dbh, qq|DELETE FROM follow_up_links WHERE follow_up_id IN (SELECT DISTINCT id FROM follow_ups WHERE note_id = ?)|, $id);
76   do_query($form, $dbh, qq|DELETE FROM follow_ups      WHERE note_id = ?|, $id);
77   do_query($form, $dbh, qq|DELETE FROM notes           WHERE id = ?|, $id);
78
79   $dbh->commit() unless ($params{dbh});
80
81   $main::lxdebug->leave_sub();
82
83   return $ref;
84 }
85
86 1;