]> wagnertech.de Git - mfinanz.git/blobdiff - SL/Form.pm
Variablen zwischenspeichern und wiederherstellen, sofern sie existieren, auch wenn...
[mfinanz.git] / SL / Form.pm
index 71af15e1dcf2c748d58edf0ebe2ddef2c78eed0e..2d4d5e432ef5f55524123f82b95cc0be594c54f2 100644 (file)
@@ -1129,25 +1129,37 @@ sub parse_template {
   $self->{"cwd"} = getcwd();
   $self->{"tmpdir"} = $self->{cwd} . "/${userspath}";
 
   $self->{"cwd"} = getcwd();
   $self->{"tmpdir"} = $self->{cwd} . "/${userspath}";
 
+  my $ext_for_format;
+
   if ($self->{"format"} =~ /(opendocument|oasis)/i) {
   if ($self->{"format"} =~ /(opendocument|oasis)/i) {
-    $template = OpenDocumentTemplate->new($self->{"IN"}, $self, $myconfig, $userspath);
+    $template       = OpenDocumentTemplate->new($self->{"IN"}, $self, $myconfig, $userspath);
+    $ext_for_format = 'odt';
+
   } elsif ($self->{"format"} =~ /(postscript|pdf)/i) {
     $ENV{"TEXINPUTS"} = ".:" . getcwd() . "/" . $myconfig->{"templates"} . ":" . $ENV{"TEXINPUTS"};
   } elsif ($self->{"format"} =~ /(postscript|pdf)/i) {
     $ENV{"TEXINPUTS"} = ".:" . getcwd() . "/" . $myconfig->{"templates"} . ":" . $ENV{"TEXINPUTS"};
-    $template = LaTeXTemplate->new($self->{"IN"}, $self, $myconfig, $userspath);
-  } elsif (($self->{"format"} =~ /html/i) ||
-           (!$self->{"format"} && ($self->{"IN"} =~ /html$/i))) {
-    $template = HTMLTemplate->new($self->{"IN"}, $self, $myconfig, $userspath);
-  } elsif (($self->{"format"} =~ /xml/i) ||
-             (!$self->{"format"} && ($self->{"IN"} =~ /xml$/i))) {
-    $template = XMLTemplate->new($self->{"IN"}, $self, $myconfig, $userspath);
+    $template         = LaTeXTemplate->new($self->{"IN"}, $self, $myconfig, $userspath);
+    $ext_for_format   = 'pdf';
+
+  } elsif (($self->{"format"} =~ /html/i) || (!$self->{"format"} && ($self->{"IN"} =~ /html$/i))) {
+    $template       = HTMLTemplate->new($self->{"IN"}, $self, $myconfig, $userspath);
+    $ext_for_format = 'html';
+
+  } elsif (($self->{"format"} =~ /xml/i) || (!$self->{"format"} && ($self->{"IN"} =~ /xml$/i))) {
+    $template       = XMLTemplate->new($self->{"IN"}, $self, $myconfig, $userspath);
+    $ext_for_format = 'xml';
+
   } elsif ( $self->{"format"} =~ /elsterwinston/i ) {
     $template = XMLTemplate->new($self->{"IN"}, $self, $myconfig, $userspath);
   } elsif ( $self->{"format"} =~ /elsterwinston/i ) {
     $template = XMLTemplate->new($self->{"IN"}, $self, $myconfig, $userspath);
+
   } elsif ( $self->{"format"} =~ /elstertaxbird/i ) {
     $template = XMLTemplate->new($self->{"IN"}, $self, $myconfig, $userspath);
   } elsif ( $self->{"format"} =~ /elstertaxbird/i ) {
     $template = XMLTemplate->new($self->{"IN"}, $self, $myconfig, $userspath);
+
   } elsif ( defined $self->{'format'}) {
     $self->error("Outputformat not defined. This may be a future feature: $self->{'format'}");
   } elsif ( defined $self->{'format'}) {
     $self->error("Outputformat not defined. This may be a future feature: $self->{'format'}");
+
   } elsif ( $self->{'format'} eq '' ) {
     $self->error("No Outputformat given: $self->{'format'}");
   } elsif ( $self->{'format'} eq '' ) {
     $self->error("No Outputformat given: $self->{'format'}");
+
   } else { #Catch the rest
     $self->error("Outputformat not defined: $self->{'format'}");
   }
   } else { #Catch the rest
     $self->error("Outputformat not defined: $self->{'format'}");
   }
@@ -1232,10 +1244,10 @@ sub parse_template {
       } else {
 
         if (!$self->{"do_not_attach"}) {
       } else {
 
         if (!$self->{"do_not_attach"}) {
-          @{ $mail->{attachments} } =
-            ({ "filename" => $self->{"tmpfile"},
-               "name" => $self->{"attachment_filename"} ?
-                 $self->{"attachment_filename"} : $self->{"tmpfile"} });
+          my $attachment_name  =  $self->{attachment_filename} || $self->{tmpfile};
+          $attachment_name     =~ s/\.(.+?)$/.${ext_for_format}/ if ($ext_for_format);
+          $mail->{attachments} =  [{ "filename" => $self->{tmpfile},
+                                     "name"     => $attachment_name }];
         }
 
         $mail->{message}  =~ s/\r//g;
         }
 
         $mail->{message}  =~ s/\r//g;
@@ -1972,13 +1984,17 @@ sub get_employee_data {
 sub get_duedate {
   $main::lxdebug->enter_sub();
 
 sub get_duedate {
   $main::lxdebug->enter_sub();
 
-  my ($self, $myconfig) = @_;
+  my ($self, $myconfig, $reference_date) = @_;
 
 
-  my $dbh = $self->get_standard_dbh($myconfig);
-  my $query = qq|SELECT current_date + terms_netto FROM payment_terms WHERE id = ?|;
-  ($self->{duedate}) = selectrow_query($self, $dbh, $query, $self->{payment_id});
+  my $reference_date = $reference_date ? conv_dateq($reference_date) . '::DATE' : 'current_date';
+
+  my $dbh            = $self->get_standard_dbh($myconfig);
+  my $query          = qq|SELECT ${reference_date} + terms_netto FROM payment_terms WHERE id = ?|;
+  my ($duedate)      = selectrow_query($self, $dbh, $query, $self->{payment_id});
 
   $main::lxdebug->leave_sub();
 
   $main::lxdebug->leave_sub();
+
+  return $duedate;
 }
 
 sub _get_contacts {
 }
 
 sub _get_contacts {
@@ -3367,7 +3383,7 @@ sub backup_vars {
   my $self = shift;
   my @vars = @_;
 
   my $self = shift;
   my @vars = @_;
 
-  map { $self->{_VAR_BACKUP}->{$_} = $self->{$_} if $self->{$_} } @vars;
+  map { $self->{_VAR_BACKUP}->{$_} = $self->{$_} if exists $self->{$_} } @vars;
 
   $main::lxdebug->leave_sub();
 }
 
   $main::lxdebug->leave_sub();
 }
@@ -3378,7 +3394,7 @@ sub restore_vars {
   my $self = shift;
   my @vars = @_;
 
   my $self = shift;
   my @vars = @_;
 
-  map { $self->{$_} = $self->{_VAR_BACKUP}->{$_} if $self->{_VAR_BACKUP}->{$_} } @vars;
+  map { $self->{$_} = $self->{_VAR_BACKUP}->{$_} if exists $self->{_VAR_BACKUP}->{$_} } @vars;
 
   $main::lxdebug->leave_sub();
 }
 
   $main::lxdebug->leave_sub();
 }