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