]> wagnertech.de Git - kivitendo-erp.git/blobdiff - SL/Notes.pm
Zwei neue Features:
[kivitendo-erp.git] / SL / Notes.pm
diff --git a/SL/Notes.pm b/SL/Notes.pm
new file mode 100644 (file)
index 0000000..c61dd3d
--- /dev/null
@@ -0,0 +1,86 @@
+# Notes
+
+package Notes;
+
+use SL::Common;
+use SL::DBUtils;
+
+sub save {
+  $main::lxdebug->enter_sub();
+
+  my $self     = shift;
+  my %params   = @_;
+
+  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};
+
+  } else {
+    $query        = qq|UPDATE notes SET subject = ?, body = ? WHERE id = ?|;
+  }
+
+  push @values, $params{subject}, $params{body}, conv_i($params{id});
+
+  do_query($form, $dbh, $query, @values);
+
+  $dbh->commit() unless ($params{dbh});
+
+  $main::lxdebug->leave_sub();
+
+  return $params{id};
+}
+
+sub retrieve {
+  $main::lxdebug->enter_sub();
+
+  my $self     = shift;
+  my %params   = @_;
+
+  Common::check_params(\%params, qw(id));
+
+  my $myconfig = \%main::myconfig;
+  my $form     = $main::form;
+
+  my $dbh      = $form->get_standard_dbh($myconfig);
+
+  my $ref      = selectfirst_hashref_query($form, $dbh, qq|SELECT * FROM notes WHERE id = ?|, conv_i($param{id}));
+
+  $main::lxdebug->leave_sub();
+
+  return $ref;
+}
+
+sub delete {
+  $main::lxdebug->enter_sub();
+
+  my $self     = shift;
+  my %params   = @_;
+
+  Common::check_params(\%params, qw(id));
+
+  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);
+
+  $dbh->commit() unless ($params{dbh});
+
+  $main::lxdebug->leave_sub();
+
+  return $ref;
+}
+
+1;