Brieffunktion: Verwendung von HTML im Body
[kivitendo-erp.git] / SL / FU.pm
index bd76191..55f58f0 100644 (file)
--- a/SL/FU.pm
+++ b/SL/FU.pm
@@ -8,6 +8,8 @@ use SL::Common;
 use SL::DBUtils;
 use SL::Notes;
 
+use strict;
+
 sub save {
   $main::lxdebug->enter_sub();
 
@@ -26,7 +28,7 @@ sub save {
     $query = qq|INSERT INTO follow_ups (created_by, done, note_id, follow_up_date, created_for_user, id)
                 VALUES ((SELECT id FROM employee WHERE login = ?), ?, ?, ?, ?, ?)|;
 
-    push @values, $form->{login};
+    push @values, $::myconfig{login};
 
   } else {
     $query = qq|UPDATE follow_ups SET done = ?, note_id = ?, follow_up_date = ?, created_for_user = ? WHERE id = ?|;
@@ -36,7 +38,8 @@ sub save {
                                  'trans_id'     => $params{id},
                                  'trans_module' => 'fu',
                                  'subject'      => $params{subject},
-                                 'body'         => $params{body});
+                                 'body'         => $params{body},
+                                 'dbh'          => $dbh,);
 
   $params{done} = 1 if (!defined $params{done});
 
@@ -44,7 +47,7 @@ sub save {
 
   do_query($form, $dbh, qq|DELETE FROM follow_up_links WHERE follow_up_id = ?|, conv_i($params{id}));
 
-  my $query = qq|INSERT INTO follow_up_links (follow_up_id, trans_id, trans_type, trans_info) VALUES (?, ?, ?, ?)|;
+  $query = qq|INSERT INTO follow_up_links (follow_up_id, trans_id, trans_type, trans_info) VALUES (?, ?, ?, ?)|;
   my $sth   = prepare_query($form, $dbh, $query);
 
   foreach my $link (@{ $params{LINKS} }) {
@@ -116,7 +119,7 @@ sub retrieve {
   my $dbh      = $form->get_standard_dbh($myconfig);
   my ($query, @values);
 
-  my ($employee_id) = selectrow_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $form->{login});
+  my ($employee_id) = selectrow_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $::myconfig{login});
   $query            = qq|SELECT fu.*, n.subject, n.body, n.created_by
                          FROM follow_ups fu
                          LEFT JOIN notes n ON (fu.note_id = n.id)
@@ -180,8 +183,9 @@ sub follow_ups {
   my $dbh      = $form->get_standard_dbh($myconfig);
   my ($query, $where, $where_user);
 
-  my ($employee_id) = selectrow_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $form->{login});
-  my @values        = ($employee_id, $employee_id);
+  my ($employee_id) = selectrow_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $::myconfig{login});
+  my @values        = ();
+  my @values_user   = ();
 
   if ($params{trans_id}) {
     $where .= qq| AND EXISTS (SELECT * FROM follow_up_links ful
@@ -238,7 +242,21 @@ sub follow_ups {
 
   if ($params{all_users}) {
     $where_user = qq|OR (fu.created_by IN (SELECT DISTINCT what FROM follow_up_access WHERE who = ?))|;
-    push @values, $employee_id;
+    push @values_user, $employee_id;
+  }
+
+  my $order_by = '';
+
+  if ($form->{sort} ne 'title') {
+    my %sort_columns = (
+      'follow_up_date' => [ qw(fu.follow_up_date fu.id) ],
+      'created_on'     => [ qw(created_on fu.id) ],
+      'subject'        => [ qw(lower(n.subject)) ],
+      );
+
+    my $sortdir = !defined $form->{sortdir} ? 'ASC' : $form->{sortdir} ? 'ASC' : 'DESC';
+    my $sortkey = $sort_columns{$form->{sort}} ? $form->{sort} : 'follow_up_date';
+    $order_by   = 'ORDER BY ' . join(', ', map { "$_ $sortdir" } @{ $sort_columns{$sortkey} });
   }
 
   $query  = qq|SELECT fu.*, n.subject, n.body, n.created_by,
@@ -253,9 +271,9 @@ sub follow_ups {
                WHERE ((fu.created_by = ?) OR (fu.created_for_user = ?)
                       $where_user)
                  $where
-               ORDER BY fu.follow_up_date DESC, fu.id ASC|;
+               $order_by|;
 
-  my $follow_ups = selectall_hashref_query($form, $dbh, $query, @values);
+  my $follow_ups = selectall_hashref_query($form, $dbh, $query, $employee_id, $employee_id, @values_user, @values);
 
   if (!scalar @{ $follow_ups }) {
     $main::lxdebug->leave_sub();
@@ -266,6 +284,14 @@ sub follow_ups {
     $fu->{LINKS} = $self->retrieve_links(%{ $fu });
   }
 
+  if ($form->{sort} eq 'title') {
+    my $dir_factor = !defined $form->{sortdir} ? 1 : $form->{sortdir} ? 1 : -1;
+    $follow_ups    = [ map  { $_->[1] }
+                       sort { ($a->[0] cmp $b->[0]) * $dir_factor }
+                       map  { my $fu = $follow_ups->[$_]; [ @{ $fu->{LINKS} } ? lc($fu->{LINKS}->[0]->{title}) : '', $fu ] }
+                       (0 .. scalar(@{ $follow_ups }) - 1) ];
+  }
+
   $main::lxdebug->leave_sub();
 
   return $follow_ups;
@@ -288,13 +314,13 @@ sub link_details {
 
   if ($params{trans_type} eq 'customer') {
     $link = {
-      'url'   => 'ct.pl?action=edit&db=customer&id=' . $form->quote($params{trans_id}) . '&edit_note_id=' . $form->quote($params{note_id}),
+      'url'   => 'controller.pl?action=CustomerVendor/edit&db=customer&id=' . $form->quote($params{trans_id}) . '&note_id=' . $form->quote($params{note_id}),
       'title' => $locale->text('Customer') . " '$params{trans_info}'",
     };
 
   } elsif ($params{trans_type} eq 'vendor') {
     $link = {
-      'url'   => 'ct.pl?action=edit&type=sales_quotation&id=' . $params{trans_id} . '&edit_note_id=' . $form->quote($params{note_id}),
+      'url'   => 'controller.pl?action=CustomerVendor/edit&db=vendor&id=' . $params{trans_id} . '&note_id=' . $form->quote($params{note_id}),
       'title' => $locale->text('Vendor') . " '$params{trans_info}'",
     };
 
@@ -304,6 +330,20 @@ sub link_details {
       'title' => $locale->text('Sales quotation') . " $params{trans_info}",
     };
 
+  } elsif ($params{trans_type} eq 'sales_delivery_order') {
+
+    $link = {
+      'url'   => 'do.pl?action=edit&type=sales_delivery_order&id=' . $params{trans_id} . '&edit_note_id=' . $form->quote($params{note_id}),
+      'title' => $locale->text('Sales delivery order') .' '. $params{trans_info},
+    };
+
+  } elsif ($params{trans_type} eq 'purchase_delivery_order') {
+
+    $link = {
+      'url'   => 'do.pl?action=edit&type=purchase_delivery_order&id=' . $params{trans_id} . '&edit_note_id=' . $form->quote($params{note_id}),
+      'title' => $locale->text('Purchase delivery order') .' '. $params{trans_info},
+    };
+
   } elsif ($params{trans_type} eq 'sales_order') {
     $link = {
       'url'   => 'oe.pl?action=edit&type=sales_order&id=' . $params{trans_id},
@@ -348,13 +388,13 @@ sub link_details {
 
   } elsif ($params{trans_type} eq 'ar_transaction') {
     $link = {
-      'url'   => 'ar.pl?action=editid=' . $params{trans_id},
+      'url'   => 'ar.pl?action=edit&id=' . $params{trans_id},
       'title' => $locale->text('AR Transaction') . " $params{trans_info}",
     };
 
   } elsif ($params{trans_type} eq 'ap_transaction') {
     $link = {
-      'url'   => 'ap.pl?action=editid=' . $params{trans_id},
+      'url'   => 'ap.pl?action=edit&id=' . $params{trans_id},
       'title' => $locale->text('AP Transaction') . " $params{trans_info}",
     };
 
@@ -384,13 +424,13 @@ sub save_access_rights {
 
   my $dbh      = $form->get_standard_dbh($myconfig);
 
-  my ($id)     = selectrow_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $form->{login});
+  my ($id)     = selectrow_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $::myconfig{login});
+
+  do_query($form, $dbh, qq|DELETE FROM follow_up_access WHERE what = ?|, $id);
 
   my $query    = qq|INSERT INTO follow_up_access (who, what) VALUES (?, ?)|;
   my $sth      = prepare_query($form, $dbh, $query);
 
-  do_query($form, $dbh, qq|DELETE FROM follow_up_access WHERE what = ?|, $id);
-
   while (my ($who, $access_allowed) = each %{ $params{access} }) {
     next unless ($access_allowed);
 
@@ -415,7 +455,7 @@ sub retrieve_access_rights {
 
   my $dbh      = $form->get_standard_dbh($myconfig);
 
-  my $sth      = prepare_execute_query($form, $dbh, qq|SELECT who FROM follow_up_access WHERE what = (SELECT id FROM employee WHERE login = ?)|, $form->{login});
+  my $sth      = prepare_execute_query($form, $dbh, qq|SELECT who FROM follow_up_access WHERE what = (SELECT id FROM employee WHERE login = ?)|, $::myconfig{login});
   my $access   = {};
 
   while (my $ref = $sth->fetchrow_hashref()) {