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