epic-s6ts
[kivitendo-erp.git] / SL / Notes.pm
index c61dd3d..1d768f3 100644 (file)
@@ -4,6 +4,9 @@ package Notes;
 
 use SL::Common;
 use SL::DBUtils;
+use SL::DB;
+
+use strict;
 
 sub save {
   $main::lxdebug->enter_sub();
@@ -14,24 +17,25 @@ sub save {
   my $myconfig = \%main::myconfig;
   my $form     = $main::form;
 
-  my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
-  my ($query, @values);
-
-  if (!$params{id}) {
-    ($params{id}) = selectrow_query($form, $dbh, qq|SELECT nextval('note_id')|);
-    $query        = qq|INSERT INTO notes (created_by, trans_id, trans_module, subject, body, id)
-                       VALUES ((SELECT id FROM employee WHERE login = ?), ?, ?, ?, ?, ?)|;
-    push @values, $form->{login}, conv_i($params{trans_id}), $params{trans_module};
+  SL::DB->client->with_transaction(sub {
+    my $dbh      = $params{dbh} || SL::DB->client->dbh;
+    my ($query, @values);
 
-  } else {
-    $query        = qq|UPDATE notes SET subject = ?, body = ? WHERE id = ?|;
-  }
+    if (!$params{id}) {
+      ($params{id}) = selectrow_query($form, $dbh, qq|SELECT nextval('note_id')|);
+      $query        = qq|INSERT INTO notes (created_by, trans_id, trans_module, subject, body, id)
+                         VALUES ((SELECT id FROM employee WHERE login = ?), ?, ?, ?, ?, ?)|;
+      push @values, $::myconfig{login}, conv_i($params{trans_id}), $params{trans_module};
 
-  push @values, $params{subject}, $params{body}, conv_i($params{id});
+    } else {
+      $query        = qq|UPDATE notes SET subject = ?, body = ? WHERE id = ?|;
+    }
 
-  do_query($form, $dbh, $query, @values);
+    push @values, $params{subject}, $params{body}, conv_i($params{id});
 
-  $dbh->commit() unless ($params{dbh});
+    do_query($form, $dbh, $query, @values);
+    1;
+  }) or do { die SL::DB->client->error };
 
   $main::lxdebug->leave_sub();
 
@@ -51,7 +55,7 @@ sub retrieve {
 
   my $dbh      = $form->get_standard_dbh($myconfig);
 
-  my $ref      = selectfirst_hashref_query($form, $dbh, qq|SELECT * FROM notes WHERE id = ?|, conv_i($param{id}));
+  my $ref      = selectfirst_hashref_query($form, $dbh, qq|SELECT * FROM notes WHERE id = ?|, conv_i($params{id}));
 
   $main::lxdebug->leave_sub();
 
@@ -69,18 +73,17 @@ sub delete {
   my $myconfig = \%main::myconfig;
   my $form     = $main::form;
 
-  my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
-  my $id       = conv_i($params{id});
-
-  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);
-  do_query($form, $dbh, qq|DELETE FROM follow_ups      WHERE note_id = ?|, $id);
-  do_query($form, $dbh, qq|DELETE FROM notes           WHERE id = ?|, $id);
+  SL::DB->client->with_transaction(sub {
+    my $dbh      = $params{dbh} || SL::DB->client->dbh;
+    my $id       = conv_i($params{id});
 
-  $dbh->commit() unless ($params{dbh});
+    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);
+    do_query($form, $dbh, qq|DELETE FROM follow_ups      WHERE note_id = ?|, $id);
+    do_query($form, $dbh, qq|DELETE FROM notes           WHERE id = ?|, $id);
+    1;
+  }) or do { die SL::DB->client->error };
 
   $main::lxdebug->leave_sub();
-
-  return $ref;
 }
 
 1;