CreatePeriodicInvoices: Transaktionssicher
authorJan Büren <jan@kivitendo.de>
Mon, 19 Nov 2018 10:26:38 +0000 (11:26 +0100)
committerJan Büren <jan@kivitendo.de>
Mon, 19 Nov 2018 12:40:15 +0000 (13:40 +0100)
Aufträge verarbeiten, Rechnungen erzeugen, Drucken und E-Mail-Versand
in einer Transaktion

SL/BackgroundJob/CreatePeriodicInvoices.pm

index b7b3e33..6cfdf94 100644 (file)
@@ -28,6 +28,8 @@ sub run {
   $self->{db_obj} = shift;
 
   $self->{job_errors} = [];
+  if (!$self->{db_obj}->db->with_transaction(sub {
+    1;                          # make Emacs happy
 
   my $configs = SL::DB::Manager::PeriodicInvoicesConfig->get_all(query => [ active => 1 ]);
 
@@ -81,6 +83,12 @@ sub run {
                              \@disabled_orders  ,
   );
 
+    1;
+  })) {
+    $::lxdebug->message(LXDebug->WARN(), "_create_invoice failed: " . join("\n", (split(/\n/, $self->{db_obj}->db->error))[0..2]));
+    return undef;
+  }
+
   if (@{ $self->{job_errors} }) {
     my $msg = join "\n", @{ $self->{job_errors} };
     _log_msg("Errors: $msg");