OrderController: reorder mit Sort::Naturally damit nach Preis ordentlich
[kivitendo-erp.git] / scripts / task_server.pl
index 1dbfb45..fcdef49 100755 (executable)
@@ -17,12 +17,11 @@ use Cwd;
 use Daemon::Generic;
 use Data::Dumper;
 use DateTime;
-use Encode qw();
 use English qw(-no_match_vars);
 use File::Spec;
 use List::MoreUtils qw(any);
 use List::Util qw(first);
-use POSIX qw(setuid setgid);
+use POSIX qw(setlocale setuid setgid);
 use SL::Auth;
 use SL::DBUpgrade2;
 use SL::DB::AuthClient;
@@ -158,6 +157,7 @@ sub notify_on_failure {
     EVAL_PERL   => 0,
     ABSOLUTE    => 1,
     CACHE_SIZE  => 0,
+    ENCODING    => 'utf8',
   });
 
   return debug("Could not create Template instance") unless $template;
@@ -174,7 +174,7 @@ sub notify_on_failure {
       subject      => $cfg->{email_subject},
       content_type => 'text/plain',
       charset      => 'utf-8',
-      message      => Encode::decode('utf-8', $body),
+      message      => $body,
     )->send;
 
     1;
@@ -186,6 +186,11 @@ sub notify_on_failure {
 sub gd_preconfig {
   my $self = shift;
 
+  # Initialize character type locale to be UTF-8 instead of C:
+  foreach my $locale (qw(de_DE.UTF-8 en_US.UTF-8)) {
+    last if setlocale('LC_CTYPE', $locale);
+  }
+
   SL::LxOfficeConf->read($self->{configfile});
 
   die "Missing section [task_server] in config file" unless $lx_office_conf{task_server};
@@ -246,6 +251,10 @@ sub run_once_for_all_clients {
 
         my $history = $job->run;
 
+        debug("   Executed job " . $job->package_name .
+              "; result: " . (!$history ? "no return value" : $history->has_failed ? "failed" : "succeeded") .
+              ($history && $history->has_failed ? "; error: " . $history->error_col : ""));
+
         notify_on_failure(history => $history) if $history && $history->has_failed;
       }