Warendialog umgestellt. Sollte jetzt ohne scrollen auf 1024x768 passen.
[kivitendo-erp.git] / SL / Form.pm
index 510e305..bded794 100644 (file)
@@ -471,7 +471,7 @@ sub isblank {
   my ($self, $name, $msg) = @_;
 
   my $curr = $self;
-  foreach my $part (split '.', $name) {
+  foreach my $part (split /\./, $name) {
     if (!$curr->{$part} || ($curr->{$part} =~ /^\s*$/)) {
       $self->error($msg);
     }
@@ -1246,25 +1246,40 @@ sub get_formname_translation {
   return $formname_translations{$formname}
 }
 
-sub generate_attachment_filename {
+sub get_number_prefix_for_type {
   my ($self) = @_;
 
-  my $attachment_filename = $main::locale->unquote_special_chars('HTML', $self->get_formname_translation());
   my $prefix =
       (first { $self->{type} eq $_ } qw(invoice credit_note)) ? 'inv'
     : ($self->{type} =~ /_quotation$/)                        ? 'quo'
     : ($self->{type} =~ /_delivery_order$/)                   ? 'do'
     :                                                           'ord';
 
+  return $prefix;
+}
+
+sub get_extension_for_format {
+  my ($self)    = @_;
+
+  my $extension = $self->{format} =~ /pdf/i          ? ".pdf"
+                : $self->{format} =~ /postscript/i   ? ".ps"
+                : $self->{format} =~ /opendocument/i ? ".odt"
+                : $self->{format} =~ /html/i         ? ".html"
+                :                                      "";
+
+  return $extension;
+}
+
+sub generate_attachment_filename {
+  my ($self) = @_;
+
+  my $attachment_filename = $main::locale->unquote_special_chars('HTML', $self->get_formname_translation());
+  my $prefix              = $self->get_number_prefix_for_type();
+
   if ($attachment_filename && $self->{"${prefix}number"}) {
-    $attachment_filename .= "_" . $self->{"${prefix}number"}
-                            . (  $self->{format} =~ /pdf/i          ? ".pdf"
-                               : $self->{format} =~ /postscript/i   ? ".ps"
-                               : $self->{format} =~ /opendocument/i ? ".odt"
-                               : $self->{format} =~ /html/i         ? ".html"
-                               :                                      "");
-    $attachment_filename =  $main::locale->quote_special_chars('filenames', $attachment_filename);
-    $attachment_filename =~ s|[\s/\\]+|_|g;
+    $attachment_filename .=  "_" . $self->{"${prefix}number"} . $self->get_extension_for_format();
+    $attachment_filename  =  $main::locale->quote_special_chars('filenames', $attachment_filename);
+    $attachment_filename  =~ s|[\s/\\]+|_|g;
   } else {
     $attachment_filename = "";
   }
@@ -1272,6 +1287,19 @@ sub generate_attachment_filename {
   return $attachment_filename;
 }
 
+sub generate_email_subject {
+  my ($self) = @_;
+
+  my $subject = $main::locale->unquote_special_chars('HTML', $self->get_formname_translation());
+  my $prefix  = $self->get_number_prefix_for_type();
+
+  if ($subject && $self->{"${prefix}number"}) {
+    $subject .= " " . $self->{"${prefix}number"}
+  }
+
+  return $subject;
+}
+
 sub cleanup {
   $main::lxdebug->enter_sub();
 
@@ -1550,8 +1578,6 @@ sub check_exchangerate {
 
   my ($exchangerate) = selectrow_query($self, $dbh, $query, $currency, $transdate);
 
-  $exchangerate = 1 if ($exchangerate eq "");
-
   $main::lxdebug->leave_sub();
 
   return $exchangerate;
@@ -3195,4 +3221,25 @@ sub all_years {
   $main::lxdebug->leave_sub();
 }
 
+sub backup_vars {
+  $main::lxdebug->enter_sub();
+  my $self = shift;
+  my @vars = @_;
+
+  map { $self->{_VAR_BACKUP}->{$_} = $self->{$_} if $self->{$_} } @vars;
+
+  $main::lxdebug->leave_sub();
+}
+
+sub restore_vars {
+  $main::lxdebug->enter_sub();
+
+  my $self = shift;
+  my @vars = @_;
+
+  map { $self->{$_} = $self->{_VAR_BACKUP}->{$_} if $self->{_VAR_BACKUP}->{$_} } @vars;
+
+  $main::lxdebug->leave_sub();
+}
+
 1;