Bei print_options() die Parameterübergabe umgestellt, sodass der Aufrufer das Verhalt...
[kivitendo-erp.git] / bin / mozilla / io.pl
index fa19d25..7f8f65a 100644 (file)
@@ -646,12 +646,12 @@ sub select_item {
 
     my @new_fields =
       qw(bin listprice inventory_accno income_accno expense_accno unit weight
-         assembly taxaccounts partsgroup formel logdescription not_discountable
-         part_payment_id partnodes id);
+         assembly taxaccounts partsgroup formel longdescription not_discountable
+         part_payment_id partnotes id);
     push(@new_fields, "lizenzen") if ($lizenzen);
 
-    map({ print($cgi->hidden("-name" => "new_${_}_$i",
-                             "-value" => $ref->{$_})); } @new_fields);
+    print join "\n", map { $cgi->hidden("-name" => "new_${_}_$i", "-value" => $ref->{$_}) } @new_fields;
+    print "\n";
   }
 
   print qq|
@@ -1256,166 +1256,36 @@ sub edit_e_mail {
     $form->{print_and_post} = 0;
     $form->{resubmit}       = 0;
   }
-  if ($myconfig{role} eq 'admin') {
-    $bcc = qq|
-    <tr>
-      <th align="right" nowrap="true">| . $locale->text('Bcc') . qq|</th>
-      <td><input name="bcc" size="30" value="| . Q($form->{bcc}) . qq|"></td>
-    </tr>
-|;
-  }
 
-  if ($form->{formname} =~ /(pick|packing|bin)_list/) {
-    $form->{email} = $form->{shiptoemail} if $form->{shiptoemail};
-  }
+  $form->{email} = $form->{shiptoemail} if $form->{shiptoemail} && $form->{formname} =~ /(pick|packing|bin)_list/;
 
   if ($form->{"cp_id"} && !$form->{"email"}) {
     CT->get_contact(\%myconfig, $form);
     $form->{"email"} = $form->{"cp_email"};
   }
 
-  $name = $form->{ $form->{vc} };
-  $name =~ s/--.*//g;
-  $title = $locale->text('E-mail') . " $name";
+  $form->{ $form->{vc} } =~ /--/;
+  $title = $locale->text('E-mail') . " $`";
 
   $form->{oldmedia} = $form->{media};
   $form->{media}    = "email";
 
-  my %formname_translations =
-    (
-     "bin_list" => $locale->text('Bin List'),
-     "credit_note" => $locale->text('Credit Note'),
-     "invoice" => $locale->text('Invoice'),
-     "packing_list" => $locale->text('Packing List'),
-     "pick_list" => $locale->text('Pick List'),
-     "proforma" => $locale->text('Proforma Invoice'),
-     "purchase_order" => $locale->text('Purchase Order'),
-     "request_quotation" => $locale->text('RFQ'),
-     "sales_order" => $locale->text('Confirmation'),
-     "sales_quotation" => $locale->text('Quotation'),
-     "storno_invoice" => $locale->text('Storno Invoice'),
-     "storno_packing_list" => $locale->text('Storno Packing List'),
-    );
-
-  my $attachment_filename = $formname_translations{$form->{"formname"}};
-  my $prefix;
-
-  if (grep({ $form->{"type"} eq $_ } qw(invoice credit_note))) {
-    $prefix = "inv";
-  } elsif ($form->{"type"} =~ /_quotation$/) {
-    $prefix = "quo";
-  } else {
-    $prefix = "ord";
-  }
-
-  if ($attachment_filename && $form->{"${prefix}number"}) {
-    $attachment_filename .= "_" . $form->{"${prefix}number"} .
-      ($form->{"format"} =~ /pdf/i ? ".pdf" :
-       $form->{"format"} =~ /postscript/i ? ".ps" :
-       $form->{"format"} =~ /opendocument/i ? ".odt" :
-       $form->{"format"} =~ /html/i ? ".html" : "");
-    $attachment_filename =~ s/ /_/g;
-    my %umlaute =
-      (
-       "ä" => "ae", "ö" => "oe", "ü" => "ue",
-       "Ä" => "Ae", "Ö" => "Oe", "Ü" => "Ue",
-       "ß" => "ss"
-      );
-    map({ $attachment_filename =~ s/$_/$umlaute{$_}/g; } keys(%umlaute));
-  } else {
-    $attachment_filename = "";
-  }
+  my $attachment_filename = $form->generate_attachment_filename();
 
-  if ($form->{"email"}) {
-    $form->{"fokus"} = "Form.subject";
-  } else {
-    $form->{"fokus"} = "Form.email";
-  }
+  $form->{"fokus"} = $form->{"email"} ? "Form.subject" : "Form.email";
   $form->header;
 
-  print qq|
-<body onload="fokus()">
-
-<form name="Form" method="post" action="$form->{script}">
-
-<table width="100%">
-  <tr class="listtop">
-    <th class="listtop">$title</th>
-  </tr>
-  <tr height="5"></tr>
-  <tr>
-    <td>
-      <table>
-        <tr>
-          <th align="right" nowrap>| . $locale->text('To') . qq|</th>
-          <td><input name="email" size="30" value="| .
-          Q($form->{"email"}) . qq|"></td>
-        </tr>
-        <tr>
-          <th align="right" nowrap>| . $locale->text('Cc') . qq|</th>
-          <td><input name="cc" size="30" value="| .
-          Q($form->{"cc"}) . qq|"></td>
-        </tr>
-        $bcc
-        <tr>
-          <th align="right" nowrap>| . $locale->text('Subject') . qq|</th>
-          <td><input name="subject" size="30" value="| .
-          Q($form->{"subject"}) . qq|"></td>
-        </tr>
-        <tr>
-          <th align="right" nowrap>| . $locale->text('Attachment name') .
-          qq|</th>
-          <td><input name="attachment_filename" size="30" value="| .
-          Q($attachment_filename) . qq|"></td>
-      </table>
-    </td>
-  </tr>
-  <tr>
-    <td>
-      <table>
-        <tr>
-          <th align="left" nowrap>| . $locale->text('Message') . qq|</th>
-        </tr>
-        <tr>
-          <td><textarea name="message" rows="15" cols="60" wrap="soft">| .
-          H($form->{"message"}) . qq|</textarea></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-  <tr>
-    <td>
-|;
-
-  print_options();
-
-  map { delete $form->{$_} }
-    qw(action email cc bcc subject message formname sendmode format header override);
-
-  # save all other variables
-  foreach $key (keys %$form) {
-    $form->{$key} =~ s/\"/&quot;/g;
-    print qq|<input type="hidden" name="$key" value="| . Q($form->{$key}) . qq|">\n|;
-  }
-
-  print qq|
-    </td>
-  </tr>
-  <tr>
-    <td><hr size="3" noshade></td>
-  </tr>
-</table>
+  my (@dont_hide_key_list, %dont_hide_key, @hidden_keys);
+  @dont_hide_key_list = qw(action email cc bcc subject message formname sendmode format header override);
+  @dont_hide_key{@dont_hide_key_list} = (1) x @dont_hide_key_list;
+  @hidden_keys = grep { !$dont_hide_key{$_} } grep { !ref $form->{$_} } keys %$form;
 
-<input type="hidden" name="nextsub" value="send_email">
-
-<br>
-<input name="action" class="submit" type="submit" value="|
-    . $locale->text('Continue') . qq|">
-</form>
-
-</body>
-</html>
-|;
+  print $form->parse_html_template('generic/edit_email', 
+                                  { title           => $title,
+                                    a_filename      => $attachment_filename,
+                                    _print_options_ => print_options({ 'inline' => 1 }),
+                                    HIDDEN          => [ map +{ name => $_, value => $form->{$_} }, @hidden_keys ],
+                                    SHOW_BCC        => $myconfig{role} eq 'admin' });
 
   $lxdebug->leave_sub();
 }
@@ -1445,7 +1315,11 @@ sub send_email {
 #
 # the inline options is untested, but intended to be used later in metatemplating
 sub print_options {
-  $lxdebug->enter_sub() and my ($inline) = @_;
+  $lxdebug->enter_sub();
+
+  my ($options) = @_;
+
+  $options ||= { };
 
   # names 3 parameters and returns a hashref, for use in templates
   sub opthash { +{ value => shift, selected => shift, oname => shift } }
@@ -1500,7 +1374,7 @@ sub print_options {
       opthash("screen", $form->{OP}{screen}, $locale->text('Screen')),
     (scalar @{ $form->{printers} } && $latex_templates) ?
       opthash("printer", $form->{OP}{printer}, $locale->text('Printer')) : undef,
-    ($latex_templates) ? 
+    ($latex_templates && !$options{no_queue}) ?
       opthash("queue", $form->{OP}{queue}, $locale->text('Queue')) : undef
         if ($form->{media} ne 'email');
 
@@ -1525,16 +1399,21 @@ sub print_options {
 
   @SELECTS = map { sname => lc $_, DATA => \@$_, show => scalar @$_ }, qw(FORMNAME LANGUAGE_ID FORMAT SENDMODE MEDIA PRINTER_ID);
 
+  my %dont_display_groupitems = (
+    'dunning' => 1,
+    );
+
   %template_vars = (
     display_copies       => scalar @{ $form->{printers} } && $latex_templates && $form->{media} ne 'email',
     display_remove_draft => (!$form->{id} && $form->{draft_id}),
+    display_groupitems   => !$dont_display_groupitems{$form->{type}},
     groupitems_checked   => $form->{groupitems} ? "checked" : '',
     remove_draft_checked => $form->{remove_draft} ? "checked" : ''
   );
 
   my $print_options = $form->parse_html_template("generic/print_options", { SELECTS  => \@SELECTS, %template_vars } );
 
-  if ($inline) {
+  if ($options{inline}) {
     $lxdebug->leave_sub() and return $print_options;
   } else {
     print $print_options; $lxdebug->leave_sub();
@@ -1803,6 +1682,8 @@ sub print_form {
 
   $form->{templates} = "$myconfig{templates}";
 
+  delete $form->{printer_command};
+
   $form->{language} = $form->get_template_language(\%myconfig);
   $form->{printer_code} = $form->get_printer_code(\%myconfig);
 
@@ -1832,13 +1713,16 @@ sub print_form {
   reformat_numbers($output_numberformat, 2,
                    qw(invtotal ordtotal quototal subtotal linetotal
                       listprice sellprice netprice discount
-                      tax taxbase),
+                      tax taxbase total paid),
                    grep({ /^linetotal_\d+$/ ||
                             /^listprice_\d+$/ ||
                             /^sellprice_\d+$/ ||
                             /^netprice_\d+$/ ||
                             /^taxbase_\d+$/ ||
                             /^discount_\d+$/ ||
+                            /^paid_\d+$/ ||
+                            /^subtotal_\d+$/ ||
+                            /^total_\d+$/ ||
                             /^tax_\d+$/
                         } keys(%{$form})));
 
@@ -1867,6 +1751,8 @@ sub print_form {
     $form->{"IN"} =~ s/html$/odt/;
   }
 
+  delete $form->{OUT};
+
   if ($form->{media} eq 'printer') {
     $form->{OUT} = "| $form->{printer_command} &>/dev/null";
     $form->{printed} .= " $form->{formname}";
@@ -1878,15 +1764,13 @@ sub print_form {
     $form->{subject} = qq|$form->{label} $form->{"${inv}number"}|
       unless $form->{subject};
 
-    $form->{OUT} = "$sendmail";
-
     $form->{emailed} .= " $form->{formname}";
     $form->{emailed} =~ s/^ //;
   }
   $emailed = $form->{emailed};
 
   if ($form->{media} eq 'queue') {
-    %queued = split / /, $form->{queued};
+    %queued = map { s|.*/|| } split / /, $form->{queued};
 
     if ($filename = $queued{ $form->{formname} }) {
       $form->{queued} =~ s/$form->{formname} $filename//;