]> wagnertech.de Git - mfinanz.git/blobdiff - SL/GL.pm
restart apache2 in postinst
[mfinanz.git] / SL / GL.pm
index 46c2d49b193b5f2bbdafcb2b7726d6286d2fac3a..57aa145a1f58312cea27501702f21d8f1c7fddff 100644 (file)
--- a/SL/GL.pm
+++ b/SL/GL.pm
@@ -46,6 +46,8 @@ use SL::DATEV qw(:CONSTANTS);
 use SL::DBUtils;
 use SL::DB::Chart;
 use SL::DB::Draft;
+use SL::DB::ValidityToken;
+use SL::DB::GLTransaction;
 use SL::Util qw(trim);
 use SL::DB;
 
@@ -77,6 +79,16 @@ sub _post_transaction {
   my ($self, $myconfig, $form) = @_;
   $main::lxdebug->enter_sub();
 
+  my $validity_token;
+  if (!$form->{id}) {
+    $validity_token = SL::DB::Manager::ValidityToken->fetch_valid_token(
+      scope => SL::DB::ValidityToken::SCOPE_GL_TRANSACTION_POST(),
+      token => $form->{form_validity_token},
+    );
+
+    die $::locale->text('The form is not valid anymore.') if !$validity_token;
+  }
+
   my ($debit, $credit) = (0, 0);
   my $project_id;
 
@@ -213,6 +225,9 @@ sub _post_transaction {
     }
   }
 
+  $validity_token->delete if $validity_token;
+  delete $form->{form_validity_token};
+
   return 1;
 }
 
@@ -783,6 +798,19 @@ sub _storno {
     do_query($form, $dbh, $query, (values %$row));
   }
 
+  if ($form->{workflow_email_journal_id}) {
+    my $ar_transaction_storno = SL::DB::GLTransaction->new(id => $new_id)->load;
+    my $email_journal = SL::DB::EmailJournal->new(
+      id => delete $form->{workflow_email_journal_id}
+    )->load;
+    $email_journal->link_to_record_with_attachment(
+      $ar_transaction_storno,
+      delete $form->{workflow_email_attachment_id}
+    );
+    $form->{callback} = delete $form->{workflow_email_callback};
+  }
+
+  $form->{storno_id} = $id;
   return 1;
 }