]> wagnertech.de Git - kivitendo-erp.git/commitdiff
Verkaufsrechnungstemplates
authorSven Schöling <s.schoeling@linet-services.de>
Fri, 6 Nov 2009 11:57:29 +0000 (12:57 +0100)
committerSven Schöling <s.schoeling@linet-services.de>
Fri, 6 Nov 2009 11:57:29 +0000 (12:57 +0100)
Merge branch 'is_template'

Conflicts:

bin/mozilla/is.pl

19 files changed:
SL/Template/Plugin/LxERP.pm
bin/mozilla/is.pl
locale/de/all
locale/de/ap
locale/de/ar
locale/de/gl
locale/de/ir
locale/de/is
templates/webpages/generic/multibox.html
templates/webpages/is/_payments_de.html [new file with mode: 0644]
templates/webpages/is/_payments_master.html [new file with mode: 0644]
templates/webpages/is/form_footer_de.html [new file with mode: 0644]
templates/webpages/is/form_footer_master.html [new file with mode: 0644]
templates/webpages/is/form_header_de.html [new file with mode: 0644]
templates/webpages/is/form_header_master.html [new file with mode: 0644]
templates/webpages/oe/form_footer_de.html
templates/webpages/oe/form_footer_master.html
templates/webpages/webdav/_list_de.html [new file with mode: 0644]
templates/webpages/webdav/_list_master.html [new file with mode: 0644]

index 66f32689b12dbcca8f95e8b05d52d6334063a17a..c26988beb3405c23580eee98a1a92d30a6e488f3 100644 (file)
@@ -23,6 +23,13 @@ sub format_amount {
   return '';
 }
 
+sub round_amount {
+  my ($self, $var, $places, $skip_zero) = @_;
+
+  return $main::form->round_amount($var * 1, $places) unless $skip_zero && $var == 0;
+  return '';
+}
+
 sub format_amount_units {
   my ($self, $amount, $amount_unit, $part_unit) = @_;
 
index 6beb17c80aa640a4d7c31f152bd9f53ef2536c58..d6c5d8b1b4baa6d4f6aa6163f1f5401fb6637bab 100644 (file)
@@ -45,7 +45,6 @@ require "bin/mozilla/drafts.pl";
 use strict;
 
 my $edit;
-my $payment;
 my $print_post;
 
 1;
@@ -89,6 +88,7 @@ sub edit {
   $main::lxdebug->enter_sub();
 
   my $form     = $main::form;
+  my $locale   = $main::locale;
 
   $main::auth->assert('invoice_edit');
 
@@ -96,7 +96,14 @@ sub edit {
   $form->{javascript} = qq|<script type="text/javascript" src="js/show_history.js"></script>|;
   #/show hhistory button
 
-  $edit = 1;
+  if ($form->{type} eq "credit_note") {
+    $form->{title} = $locale->text('Edit Credit Note');
+    $form->{title} = $locale->text('Edit Storno Credit Note') if $form->{storno};
+  } else {
+    $form->{title} = $locale->text('Edit Sales Invoice');
+    $form->{title} = $locale->text('Edit Storno Invoice')     if $form->{storno};
+  }
+
   my ($language_id, $printer_id);
   if ($form->{print_and_post}) {
     $form->{action}   = "print";
@@ -139,65 +146,30 @@ sub invoice_links {
     }
   }
 
-  my $payment_id;
-  if ($form->{payment_id}) {
-    $payment_id = $form->{payment_id};
-  }
-  my $language_id;
-  if ($form->{language_id}) {
-    $language_id = $form->{language_id};
-  }
-  my $taxzone_id;
-  if ($form->{taxzone_id}) {
-    $taxzone_id = $form->{taxzone_id};
-  }
-  my $id;
-  if ($form->{id}) {
-    $id = $form->{id};
-  }
-  my $shipto_id;
-  if ($form->{shipto_id}) {
-    $shipto_id = $form->{shipto_id};
-  }
+  $form->backup_vars(qw(payment_id language_id taxzone_id salesman_id taxincluded cp_id intnotes id shipto_id));
 
-  my $cp_id = $form->{cp_id};
   IS->get_customer(\%myconfig, \%$form);
 
   #quote all_customer Bug 133
   foreach my $ref (@{ $form->{all_customer} }) {
     $ref->{name} = $form->quote($ref->{name});
   }
-  if ($id) {
-    $form->{id} = $id;
-  }
+
+  $form->restore_vars(qw(id));
+
   IS->retrieve_invoice(\%myconfig, \%$form);
-  $form->{cp_id} = $cp_id;
+  $form->restore_vars(qw(payment_id language_id taxzone_id intnotes cp_id shipto_id));
+  $form->restore_vars(qw(taxincluded)) if $form->{id};
+  $form->restore_vars(qw(salesman_id)) if $main::editing;
 
-  if ($payment_id) {
-    $form->{payment_id} = $payment_id;
-  }
-  if ($language_id) {
-    $form->{language_id} = $language_id;
-  }
-  if ($taxzone_id) {
-    $form->{taxzone_id} = $taxzone_id;
-  }
-  if ($shipto_id) {
-    $form->{shipto_id} = $shipto_id;
+  # build vendor/customer drop down comatibility... don't ask
+  if (@{ $form->{"all_customer"} }) {
+    $form->{"selectcustomer"} = 1;
+    $form->{customer}         = qq|$form->{customer}--$form->{"customer_id"}|;
   }
 
   $form->{oldcustomer} = "$form->{customer}--$form->{customer_id}";
-
-  # departments
-  if ($form->{all_departments}) {
-    $form->{selectdepartment} = "<option>\n";
-    $form->{department}       = "$form->{department}--$form->{department_id}";
-
-    map {
-      $form->{selectdepartment} .=
-        "<option>$_->{description}--$_->{id}</option>\n"
-    } (@{ $form->{all_departments} || [] });
-  }
+  $form->{selectcustomer} = 1;
 
   $form->{employee} = "$form->{employee}--$form->{employee_id}";
 
@@ -207,41 +179,35 @@ sub invoice_links {
 
   foreach my $key (keys %{ $form->{AR_links} }) {
     foreach my $ref (@{ $form->{AR_links}{$key} }) {
-      $form->{"select$key"} .=
-"<option>$ref->{accno}--$ref->{description}</option>\n";
+      $form->{"select$key"} .= "<option>$ref->{accno}--$ref->{description}</option>\n";
     }
 
     if ($key eq "AR_paid") {
       next unless $form->{acc_trans}{$key};
       for my $i (1 .. scalar @{ $form->{acc_trans}{$key} }) {
-        $form->{"AR_paid_$i"} =
-          "$form->{acc_trans}{$key}->[$i-1]->{accno}--$form->{acc_trans}{$key}->[$i-1]->{description}";
+        $form->{"AR_paid_$i"}      = "$form->{acc_trans}{$key}->[$i-1]->{accno}--$form->{acc_trans}{$key}->[$i-1]->{description}";
 
         # reverse paid
-        $form->{"paid_$i"} = $form->{acc_trans}{$key}->[$i - 1]->{amount} * -1;
-        $form->{"datepaid_$i"} =
-          $form->{acc_trans}{$key}->[$i - 1]->{transdate};
-        $form->{"forex_$i"} = $form->{"exchangerate_$i"} =
-          $form->{acc_trans}{$key}->[$i - 1]->{exchangerate};
-        $form->{"source_$i"} = $form->{acc_trans}{$key}->[$i - 1]->{source};
-        $form->{"memo_$i"}   = $form->{acc_trans}{$key}->[$i - 1]->{memo};
+        $form->{"paid_$i"}         = $form->{acc_trans}{$key}->[$i - 1]->{amount} * -1;
+        $form->{"datepaid_$i"}     = $form->{acc_trans}{$key}->[$i - 1]->{transdate};
+        $form->{"exchangerate_$i"} = $form->{acc_trans}{$key}->[$i - 1]->{exchangerate};
+        $form->{"forex_$i"}        = $form->{"exchangerate_$i"};
+        $form->{"source_$i"}       = $form->{acc_trans}{$key}->[$i - 1]->{source};
+        $form->{"memo_$i"}         = $form->{acc_trans}{$key}->[$i - 1]->{memo};
 
         $form->{paidaccounts} = $i;
       }
     } else {
-      $form->{$key} =
-        "$form->{acc_trans}{$key}->[0]->{accno}--$form->{acc_trans}{$key}->[0]->{description}";
+      $form->{$key} = "$form->{acc_trans}{$key}->[0]->{accno}--$form->{acc_trans}{$key}->[0]->{description}";
     }
-
   }
 
   $form->{paidaccounts} = 1 unless (exists $form->{paidaccounts});
 
   $form->{AR} = $form->{AR_1} unless $form->{id};
 
-  $form->{locked} =
-    ($form->datetonum($form->{invdate}, \%myconfig) <=
-     $form->datetonum($form->{closedto}, \%myconfig));
+  $form->{locked} = ($form->datetonum($form->{invdate},  \%myconfig)
+                  <= $form->datetonum($form->{closedto}, \%myconfig));
 
   $main::lxdebug->leave_sub();
 }
@@ -303,34 +269,18 @@ sub form_header {
 
   $main::auth->assert('invoice_edit');
 
+  our %TMPL_VAR = ();
+  my @custom_hiddens;
+
   $form->{employee_id} = $form->{old_employee_id} if $form->{old_employee_id};
   $form->{salesman_id} = $form->{old_salesman_id} if $form->{old_salesman_id};
 
-  if ($edit) {
-    if ($form->{type} eq "credit_note") {
-      $form->{title} = $locale->text('Edit Credit Note');
-      $form->{title} = $locale->text('Edit Storno Credit Note') if $form->{storno};
-    } else {
-      $form->{title} = $locale->text('Edit Sales Invoice');
-      $form->{title} = $locale->text('Edit Storno Invoice')     if $form->{storno};
-    }
-  }
   $form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
   $form->{radier}          = ($form->current_date(\%myconfig) eq $form->{gldate}) ? 1 : 0;
 
-  $payment = qq|<option value=""></option>|;
-  foreach my $item (@{ $form->{payment_terms} }) {
-    if ($form->{payment_id} eq $item->{id}) {
-      $payment .= qq|<option value="$item->{id}" selected>$item->{description}</option>|;
-    } else {
-      $payment .= qq|<option value="$item->{id}">$item->{description}</option>|;
-    }
-  }
-
   my $set_duedate_url = "$form->{script}?action=set_duedate";
 
-  my $pjx = new CGI::Ajax( 'set_duedate' => $set_duedate_url );
-  push(@ { $form->{AJAX} }, $pjx);
+  push @ { $form->{AJAX} }, new CGI::Ajax( 'set_duedate' => $set_duedate_url );
 
   my @old_project_ids = ($form->{"globalproject_id"});
   map { push @old_project_ids, $form->{"project_id_$_"} if $form->{"project_id_$_"}; } 1..$form->{"rowcount"};
@@ -340,473 +290,71 @@ sub form_header {
                    "projects"      => { "key"    => "ALL_PROJECTS",
                                         "all"    => 0,
                                         "old_id" => \@old_project_ids },
-                   "employees"     => "ALL_SALESMEN",
+                   "employees"     => "ALL_EMPLOYEES",
+                   "salesmen"      => "ALL_SALESMEN",
                    "taxzones"      => "ALL_TAXZONES",
                    "currencies"    => "ALL_CURRENCIES",
                    "customers"     => "ALL_CUSTOMERS",
                    "price_factors" => "ALL_PRICE_FACTORS");
 
-  my %labels;
-  my @values = (undef);
-  foreach my $item (@{ $form->{"ALL_CONTACTS"} }) {
-    push(@values, $item->{"cp_id"});
-    $labels{$item->{"cp_id"}} = join(',', $item->{"cp_name"}, $item->{"cp_givenname"}) .  ($item->{"cp_abteilung"} ? " ($item->{cp_abteilung})" : "");
-  }
-  my $contact;
-  if (scalar @values > 1) {
-    $contact = qq|
-    <tr>
-      <th align="right">| . $locale->text('Contact Person') . qq|</th>
-      <td>| .  NTI($cgi->popup_menu('-name' => 'cp_id', '-values' => \@values, '-style' => 'width: 250px',
-                                    '-labels' => \%labels, '-default' => $form->{"cp_id"})) . qq|
-      </td>
-    </tr>|;
-  }
-
-  %labels = ();
-  @values = ();
-  foreach my $item (@{ $form->{"ALL_SALESMEN"} }) {
-    push(@values, $item->{"id"});
-    $labels{$item->{id}} = $item->{name} ne "" ? $item->{name} : $item->{login};
-  }
-
-  my $employees = qq|
-    <tr>
-      <th align="right">| . $locale->text('Employee') . qq|</th>
-      <td>| . NTI($cgi->popup_menu('-name' => 'employee_id', '-default' => $form->{"employee_id"},
-                                   '-values' => \@values, '-labels' => \%labels)) . qq|
-      </td>
-    </tr>|;
-
-
-  %labels = ();
-  @values = ();
-  foreach my $item (@{ $form->{"ALL_CUSTOMERS"} }) {
-    push(@values, $item->{name}.qq|--|.$item->{"id"});
-    $labels{$item->{name}.qq|--|.$item->{"id"}} = $item->{"name"};
-  }
-
-  $form->{selectcustomer} = ($myconfig{vclimit} > scalar(@values));
-
-  my $customers = qq|
-      <th align="right">| . $locale->text('Customer') . qq|</th>
-      <td>| .
-        (($myconfig{vclimit} <=  scalar(@values))
-              ? qq|<input type="text" value="| . H($form->{customer}) . qq|" name="customer">|
-              : (NTI($cgi->popup_menu('-name' => 'customer', '-default' => $form->{oldcustomer},
-                             '-onChange' => 'document.getElementById(\'update_button\').click();',
-                             '-values' => \@values, '-labels' => \%labels, '-style' => 'width: 250px')))) . qq|
-        <input type="button" value="| . $locale->text('Details (one letter abbreviation)') . qq|" onclick="show_vc_details('customer')">
-      </td>|;
-
-  %labels = ();
-  @values = ("");
-  foreach my $item (@{ $form->{"ALL_SHIPTO"} }) {
-    push(@values, $item->{"shipto_id"});
-    $labels{$item->{"shipto_id"}} = join "; ", grep { $_ } map { $item->{"shipto${_}" } } qw(name department_1 street city);
-  }
-
-  my $shipto;
-  if (scalar @values > 1) {
-    $shipto = qq|
-    <tr>
-      <th align="right">| . $locale->text('Shipping Address') . qq|</th>
-      <td>| . NTI($cgi->popup_menu('-name' => 'shipto_id', '-values' => \@values, '-style' => 'width: 250px',
-                                   '-labels' => \%labels, '-default' => $form->{"shipto_id"})). qq|
-      </td>|;
-  }
+  $TMPL_VAR{sales_employee_labels} = sub { $_[0]->{name} || $_[0]->{login} };
+  $TMPL_VAR{shipto_labels}         = sub { join "; ", grep { $_ } map { $_[0]->{"shipto${_}" } } qw(name department_1 street city) };
+  $TMPL_VAR{contact_labels}        = sub { join(', ', $_[0]->{"cp_name"}, $_[0]->{"cp_givenname"}) . ($_[0]->{cp_abteilung} ? " ($_[0]->{cp_abteilung})" : "") };
+  $TMPL_VAR{department_labels}     = sub { "$_[0]->{description}--$_[0]->{id}" };
+
+  # customer
+  $TMPL_VAR{vc_keys} = sub { "$_[0]->{name}--$_[0]->{id}" };
+  $TMPL_VAR{vclimit} = $myconfig{vclimit};
+  $TMPL_VAR{vc_select} = "customer_or_vendor_selection_window('customer', '', 0, 0)";
+  push @custom_hiddens, "customer_id";
+  push @custom_hiddens, "oldcustomer";
+  push @custom_hiddens, "selectcustomer";
+
+  # currencies and exchangerate
+  my @values = map { $_       } @{ $form->{ALL_CURRENCIES} };
+  my %labels = map { $_ => $_ } @{ $form->{ALL_CURRENCIES} };
+  $form->{currency}            = $form->{defaultcurrency} unless $form->{currency};
+  $TMPL_VAR{show_exchangerate} = $form->{currency} ne $form->{defaultcurrency};
+  $TMPL_VAR{currencies}        = NTI($cgi->popup_menu('-name' => 'currency', '-default' => $form->{"currency"},
+                                                      '-values' => \@values, '-labels' => \%labels)) if scalar @values;
+  push @custom_hiddens, "forex";
+  push @custom_hiddens, "exchangerate" if $form->{forex};
+
+  $TMPL_VAR{creditwarning} = ($form->{creditlimit} != 0) && ($form->{creditremaining} < 0) && !$form->{update};
+  $TMPL_VAR{is_credit_remaining_negativ} = $form->{creditremaining} =~ /-/;
 
-  %labels = ();
-  @values = ();
-  foreach my $item (@{ $form->{"ALL_CURRENCIES"} }) {
-    push(@values, $item);
-    $labels{$item} = $item;
-  }
-
-  $form->{currency}        = $form->{defaultcurrency} unless $form->{currency};
-  my $currencies;
-  if (scalar @values) {
-    $currencies = qq|
-    <tr>
-      <th align="right">| . $locale->text('Currency') . qq|</th>
-      <td>| . NTI($cgi->popup_menu('-name' => 'currency', '-default' => $form->{"currency"},
-                                   '-values' => \@values, '-labels' => \%labels)) . qq|
-      </td>
-    </tr>|;
-  }
-
-  %labels = ();
-  @values = ("");
-  foreach my $item (@{ $form->{"ALL_PROJECTS"} }) {
-    push(@values, $item->{"id"});
-    $labels{$item->{"id"}} = $item->{"projectnumber"};
-  }
-  my $globalprojectnumber = NTI($cgi->popup_menu('-name' => 'globalproject_id', '-values' => \@values,
-                                                 '-labels' => \%labels,
-                                                 '-default' => $form->{"globalproject_id"}));
-
-  %labels = ();
-  @values = ();
-  foreach my $item (@{ $form->{ALL_SALESMEN} }) {
-    push(@values, $item->{id});
-    $labels{$item->{id}} = $item->{name} ne "" ? $item->{name} : $item->{login};
-  }
-
-  my $salesman =
-    qq|<tr> <th align="right">| . $locale->text('Salesman') . qq|</th>
-         <td>| . NTI($cgi->popup_menu('-name' => 'salesman_id', '-values' => \@values, '-labels' => \%labels,
-                                      '-default' => $form->{salesman_id} ? $form->{salesman_id} : $form->{employee_id})) . qq|
-         </td>
-       </tr>|;
-
-  %labels = ();
-  @values = ();
-  foreach my $item (@{ $form->{"ALL_TAXZONES"} }) {
-    push(@values, $item->{"id"});
-    $labels{$item->{"id"}} = $item->{"description"};
-  }
-
-  my $taxzone;
-  if (!$form->{"id"}) {
-    $taxzone = qq|
-    <tr>
-      <th align="right">| . $locale->text('Steuersatz') . qq|</th>
-      <td>| . NTI($cgi->popup_menu('-name' => 'taxzone_id', '-default' => $form->{"taxzone_id"},
-                                   '-values' => \@values, '-labels' => \%labels, '-style' => 'width: 250px',)) . qq|
-      </td>
-    </tr>|;
+  $form->{fokus} = "invoice.customer";
 
-  } else {
-    $taxzone = qq|
-    <tr>
-      <th align="right">| . $locale->text('Steuersatz') . qq|</th>
-      <td>
-        <input type="hidden" name="taxzone_id" value="| . H($form->{"taxzone_id"}) . qq|">
-        | . H($labels{$form->{"taxzone_id"}}) . qq|
-      </td>
-    </tr>|;
-  }
+  my $follow_up_vc         =  $form->{customer};
+  $follow_up_vc            =~ s/--\d*\s*$//;
+  $TMPL_VAR{customer_name} = $follow_up_vc;
 
-  # set option selected
-  foreach my $item (qw(AR customer currency department employee)) {
+# set option selected
+  foreach my $item (qw(AR)) {
     $form->{"select$item"} =~ s/ selected//;
     $form->{"select$item"} =~ s/option>\Q$form->{$item}\E/option selected>$form->{$item}/;
   }
 
-  my $creditwarning = (($form->{creditlimit} != 0) && ($form->{creditremaining} < 0) && !$form->{update}) ? 1 : 0;
+  $TMPL_VAR{is_type_credit_note} = $form->{type}   eq "credit_note";
+  $TMPL_VAR{is_format_html}      = $form->{format} eq 'html';
+  $TMPL_VAR{dateformat}          = $myconfig{dateformat};
+  $TMPL_VAR{numberformat}        = $myconfig{numberformat};
 
-  $form->{exchangerate}    = $form->format_amount(\%myconfig, $form->{exchangerate});
-  $form->{creditlimit}     = $form->format_amount(\%myconfig, $form->{creditlimit}, 0, "0");
-  $form->{creditremaining} = $form->format_amount(\%myconfig, $form->{creditremaining}, 0, "0");
+  # hiddens
+  $TMPL_VAR{HIDDENS} = [qw(
+    id action type media format queued printed emailed title vc discount
+    title creditlimit creditremaining tradediscount business closedto locked shipped storno storno_id
+    max_dunning_level dunning_amount
+    shiptoname shiptostreet shiptozipcode shiptocity shiptocountry  shiptocontact shiptophone shiptofax
+    shiptoemail shiptodepartment_1 shiptodepartment_2 message email subject cc bcc taxaccounts cursor_fokus
+    convert_from_do_ids convert_from_oe_ids
+  ), @custom_hiddens,
+  map { $_.'_rate', $_.'_description', $_.'_taxnumber' } split / /, $form->{taxaccounts}];
 
-  my $exchangerate = "";
-  if ($form->{currency} ne $form->{defaultcurrency}) {
-    if ($form->{forex}) {
-      $exchangerate .= qq|<th align="right">| . $locale->text('Exchangerate') . qq|</th>
-                          <td>$form->{exchangerate}<input type="hidden" name="exchangerate" value="$form->{exchangerate}"></td>|;
-    } else {
-      $exchangerate .= qq|<th align="right">| . $locale->text('Exchangerate') . qq|</th>
-                          <td><input name="exchangerate" size="10" value="$form->{exchangerate}"></td>|;
-    }
-  }
-  $exchangerate .= qq|\n<input type="hidden" name="forex" value="$form->{forex}">\n|;
-
-  my $department = qq|
-              <tr>
-               <th align="right" nowrap>| . $locale->text('Department') . qq|</th>
-               <td colspan="3"><select name="department" style="width: 250px">$form->{selectdepartment}</select>
-                  <input type="hidden" name="selectdepartment" value="$form->{selectdepartment}">
-               </td>
-             </tr>
-| if $form->{selectdepartment};
-
-  my $n = ($form->{creditremaining} =~ /-/) ? "0" : "1";
-
-  my $business;
-  if ($form->{business}) {
-    $business = qq|
-             <tr>
-          <th align="right">| . $locale->text('Customer type') . qq|</th>
-          <td>$form->{business}; | . $locale->text('Trade Discount') . qq| |
-      . $form->format_amount(\%myconfig, $form->{tradediscount} * 100)
-      . qq| %</td>
-        </tr>
-|;
-  }
-
-  my $dunning;
-  if ($form->{max_dunning_level}) {
-    $dunning = qq|
-      <tr>
-        <th align="right">| . $locale->text('Max. Dunning Level') . qq|:</th>
-        <td>
-          <b>$form->{max_dunning_level}</b>;
-          | . $locale->text('Dunning Amount') . qq|: <b>|
-        . $form->format_amount(\%myconfig, $form->{dunning_amount},2)
-        . qq|</b>
-        </td>
-      </tr>
-|;
-  }
-
-  $form->{fokus} = "invoice.customer";
-
-  # use JavaScript Calendar or not
   $form->{jsscript} = 1;
-  my $jsscript = "";
-  my ($button1, $button2, $button3);
-  if ($form->{type} eq "credit_note") {
-    $button1 = qq|
-      <td nowrap><input name="invdate" id="invdate" size="11" title="$myconfig{dateformat}" value="$form->{invdate}" onBlur=\"check_right_date_format(this)\">
-       <input type="button" name="invdate_button" id="trigger1" value="|
-      . $locale->text('button') . qq|"></td>|;
-
-    #write Trigger
-    $jsscript =
-      Form->write_trigger(\%myconfig,     "1",
-                          "invdate",      "BL",
-                          "trigger1");
-  } else {
-    $button1 = qq|
-      <td nowrap><input name="invdate" id="invdate" size="11" title="$myconfig{dateformat}" value="$form->{invdate}" onBlur=\"check_right_date_format(this)\">
-       <input type="button" name="invdate_button" id="trigger1" value="|
-      . $locale->text('button') . qq|"></td>
-      |;
-    $button2 = qq|
-      <td width="13"><input name="duedate" id="duedate" size="11" title="$myconfig{dateformat}" value="$form->{duedate}" onBlur=\"check_right_date_format(this)\">
-       <input type="button" name="duedate_button" id="trigger2" value="|
-      . $locale->text('button') . qq|"></td>
-    |;
-    $button3 = qq|
-      <td width="13"><input name="deliverydate" id="deliverydate" size="11" title="$myconfig{dateformat}" value="$form->{deliverydate}" onBlur=\"check_right_date_format(this)\">
-       <input type="button" name="deliverydate_button" id="trigger3" value="|
-      . $locale->text('button') . qq|"></td>
-    |;
-
-    #write Trigger
-    $jsscript =
-      Form->write_trigger(\%myconfig,     "3",
-                          "invdate",      "BL", "trigger1",
-                          "duedate",      "BL", "trigger2",
-                          "deliverydate", "BL", "trigger3");
-  }
+  $form->header();
 
-  my $credittext = $locale->text('Credit Limit exceeded!!!');
-
-  my $follow_up_vc         =  $form->{customer};
-  $follow_up_vc            =~ s/--\d*\s*$//;
-  my $follow_up_trans_info =  "$form->{invnumber} ($follow_up_vc)";
-
-  my $onload = ($form->{resubmit} && ($form->{format} eq "html")) ? qq|window.open('about:blank','Beleg'); document.invoice.target = 'Beleg';document.invoice.submit()|
-          : ($form->{resubmit})                                ? qq|document.invoice.submit()|
-          : ($creditwarning)                                   ? qq|alert('$credittext')|
-          :                                                      "focus()";
-  $onload .= qq|;setupDateFormat('|. $myconfig{dateformat} .qq|', '|. $locale->text("Falsches Datumsformat!") .qq|')|;
-  $onload .= qq|;setupPoints('|. $myconfig{numberformat} .qq|', '|. $locale->text("wrongformat") .qq|')|;
-
-  $form->{javascript} .= qq|<script type="text/javascript" src="js/show_form_details.js"></script>|;
-  $form->{javascript} .= qq|<script type="text/javascript" src="js/show_vc_details.js"></script>|;
-
-  $jsscript .=
-    $form->write_trigger(\%myconfig, 2,
-                         "orddate", "BL", "trigger_orddate",
-                         "quodate", "BL", "trigger_quodate");
-  # show history button js
-  $form->{javascript} .= qq|<script type="text/javascript" src="js/show_history.js"></script>|;
-  #/show history button js
-  $form->header;
-
-  print qq|
-<body onLoad="$onload">
-<script type="text/javascript" src="js/common.js"></script>
-<script type="text/javascript" src="js/delivery_customer_selection.js"></script>
-<script type="text/javascript" src="js/vendor_selection.js"></script>
-<script type="text/javascript" src="js/calculate_qty.js"></script>
-<script type="text/javascript" src="js/follow_up.js"></script>
-
-<form method="post" name="invoice" action="$form->{script}">
-| ;
-
-  $form->hide_form(qw(id action type media format queued printed emailed title vc discount
-                      creditlimit creditremaining tradediscount business closedto locked shipped storno storno_id
-                      max_dunning_level dunning_amount
-                      shiptoname shiptostreet shiptozipcode shiptocity shiptocountry  shiptocontact shiptophone shiptofax
-                      shiptoemail shiptodepartment_1 shiptodepartment_2 message email subject cc bcc taxaccounts cursor_fokus
-                      convert_from_do_ids convert_from_oe_ids),
-                      map { $_.'_rate', $_.'_description', $_.'_taxnumber' } split / /, $form->{taxaccounts} );
-
-  print qq|<p>$form->{saved_message}</p>| if $form->{saved_message};
-
-  print qq|
-
-<input type="hidden" name="follow_up_trans_id_1" value="| . H($form->{id}) . qq|">
-<input type="hidden" name="follow_up_trans_type_1" value="sales_invoice">
-<input type="hidden" name="follow_up_trans_info_1" value="| . H($follow_up_trans_info) . qq|">
-<input type="hidden" name="follow_up_rowcount" value="1">
-
-<input type="hidden" name="lizenzen" value="$main::lizenzen">
-
-<div class="listtop" width="100%">$form->{title}</div>
-
-<table width="100%">
-  <tr>
-    <td valign="top">
-      <table>
-        <tr>
-          $customers
-          <input type="hidden" name="customer_klass" value="| . H($form->{customer_klass}) . qq|">
-          <input type="hidden" name="customer_id" value="| . H($form->{customer_id}) . qq|">
-          <input type="hidden" name="oldcustomer" value="| . H($form->{oldcustomer}) . qq|">
-          <input type="hidden" name="selectcustomer" value="| . H($form->{selectcustomer}) . qq|">
-        </tr>
-        $contact
-        $shipto
-        <tr>
-          <td align="right">| . $locale->text('Credit Limit') . qq|</td>
-          <td>$form->{creditlimit}; | . $locale->text('Remaining') . qq| <span class="plus$n">$form->{creditremaining}</span></td>
-        </tr>
-        $dunning
-        $business
-             <tr>
-               <th align="right" nowrap>| . $locale->text('Record in') . qq|</th>
-               <td colspan="3"><select name="AR" style="width:250px;">$form->{selectAR}</select></td>
-               <input type="hidden" name="selectAR" value="$form->{selectAR}">
-             </tr>
-              $taxzone
-             $department
-             <tr>
-    $currencies
-               <input type="hidden" name="fxgain_accno" value="$form->{fxgain_accno}">
-               <input type="hidden" name="fxloss_accno" value="$form->{fxloss_accno}">
-               $exchangerate
-             </tr>
-             <tr>
-               <th align="right" nowrap>| . $locale->text('Shipping Point') . qq|</th>
-               <td colspan="3"> | .
-               $cgi->textfield("-name" => "shippingpoint", "-size" => 35, "-value" => $form->{shippingpoint}) .
-         qq|   </td>
-             </tr>
-             <tr>
-               <th align="right" nowrap>| . $locale->text('Ship via') . qq|</th>
-               <td colspan="3"> | .
-               $cgi->textfield("-name" => "shipvia", "-size" => 35, "-value" => $form->{shipvia}) .
-         qq|   </td>
-             </tr>
-              <tr>
-                <th align="right">| . $locale->text('Transaction description') . qq|</th>
-                <td colspan="3">| . $cgi->textfield("-name" => "transaction_description", "-size" => 35, "-value" => $form->{transaction_description}) . qq|</td>
-              </tr>|;
-#               <tr>
-#                 <td colspan=4>
-#                   <table>
-#                     <tr>
-#                       <td colspan=2>
-#                         <button type="button" onclick="delivery_customer_selection_window('delivery_customer_string','delivery_customer_id')">| . $locale->text('Choose Customer') . qq|</button>
-#                       </td>
-#                       <td colspan=2><input type=hidden name=delivery_customer_id value="$form->{delivery_customer_id}">
-#                       <input size=45 id=delivery_customer_string name=delivery_customer_string value="$form->{delivery_customer_string}"></td>
-#                     </tr>
-#                     <tr>
-#                       <td colspan=2>
-#                         <button type="button" onclick="vendor_selection_window('delivery_vendor_string','delivery_vendor_id')">| . $locale->text('Choose Vendor') . qq|</button>
-#                       </td>
-#                       <td colspan=2><input type=hidden name=delivery_vendor_id value="$form->{delivery_vendor_id}">
-#                       <input size=45 id=delivery_vendor_string name=delivery_vendor_string value="$form->{delivery_vendor_string}"></td>
-#                     </tr>
-#                   </table>
-#                 </td>
-#               </tr>
-print qq|          </table>
-         </td>
-         <td align="right" valign="top">
-           <table>
-             $employees
-        $salesman
-|;
-
-#ergänzung in der maske um das feld Lieferscheinnummer (Delivery Order Number), meiner meinung nach sinnvoll ueber dem feld lieferscheindatum 12.02.2009 jb
-if ($form->{type} eq "credit_note") {
-print qq|     <tr>
-               <th align="right" nowrap>| . $locale->text('Credit Note Number') . qq|</th>
-               <td> |.
-               $cgi->textfield("-name" => "invnumber", "-size" => 11, "-value" => $form->{invnumber}) .
-      qq|      </td>
-             </tr>
-             <tr>
-               <th align="right">| . $locale->text('Credit Note Date') . qq|</th>
-                $button1
-             </tr>|;
-} else {
-print qq|     <tr>
-               <th align="right" nowrap>| . $locale->text('Invoice Number') . qq|</th>
-               <td> |.
-               $cgi->textfield("-name" => "invnumber", "-size" => 11, "-value" => $form->{invnumber}) .
-      qq|      </td>
-             </tr>
-             <tr>
-               <th align="right">| . $locale->text('Invoice Date') . qq|</th>
-                $button1
-             </tr>
-             <tr>
-               <th align="right">| . $locale->text('Due Date') . qq|</th>
-                $button2
-             </tr>
-             <tr>
-               <th align="right" nowrap>| . $locale->text('Delivery Order Number') . qq|</th>
-               <td> |.
-               $cgi->textfield("-name" => "donumber", "-size" => 11, "-value" => $form->{donumber}) .
-      qq|      </td>
-             </tr>
-             <tr>
-               <th align="right">| . $locale->text('Delivery Date') . qq|</th>
-                $button3
-             </tr>|;
-}
-print qq|     <tr>
-               <th align="right" nowrap>| . $locale->text('Order Number') . qq|</th>
-               <td> |.
-               $cgi->textfield("-name" => "ordnumber", "-size" => 11, "-value" => $form->{ordnumber}) .
-      qq|      </td>
-             </tr>
-        <tr>
-          <th align="right" nowrap>| . $locale->text('Order Date') . qq|</th>
-          <td><input name="orddate" id="orddate" size="11" title="$myconfig{dateformat}" value="| . Q($form->{orddate}) . qq|" onBlur=\"check_right_date_format(this)\">
-           <input type="button" name="b_orddate" id="trigger_orddate" value="?"></td>
-        </tr>
-             <tr>
-               <th align="right" nowrap>| . $locale->text('Quotation Number') . qq|</th>
-               <td> |.
-               $cgi->textfield("-name" => "quonumber", "-size" => 11, "-value" => $form->{quonumber}) .
-      qq|      </td>
-             </tr>
-        <tr>
-          <th align="right" nowrap>| . $locale->text('Quotation Date') . qq|</th>
-          <td><input name="quodate" id="quodate" size="11" title="$myconfig{dateformat}" value="| . Q($form->{quodate}) . qq|" onBlur=\"check_right_date_format(this)\">
-           <input type="button" name="b_quodate" id="trigger_quodate" value="?"></td>
-        </tr>
-             <tr>
-               <th align="right" nowrap>| . $locale->text('Customer Order Number') . qq|</th>
-               <td> |.
-               $cgi->textfield("-name" => "cusordnumber", "-size" => 11, "-value" => $form->{cusordnumber}) .
-      qq|      </td>
-             </tr>
-             <tr>
-          <th align="right" nowrap>| . $locale->text('Project Number') . qq|</th>
-          <td>$globalprojectnumber</td>
-             </tr>
-           </table>
-          </td>
-       </tr>
-      </table>
-    </td>
-  </tr>
-  <tr>
-    <td>
-    </td>
-  </tr>
-  $jsscript
-|;
-  print qq|<input type="hidden" name="webdav" value="$main::webdav">|;
+  print $form->parse_html_template("is/form_header", \%TMPL_VAR);
 
   $main::lxdebug->leave_sub();
 }
@@ -817,438 +365,62 @@ sub form_footer {
   my $form     = $main::form;
   my %myconfig = %main::myconfig;
   my $locale   = $main::locale;
-  my $cgi      = $main::cgi;
 
   $main::auth->assert('invoice_edit');
 
-  $form->{invtotal} = $form->{invsubtotal};
+  $form->{invtotal}    = $form->{invsubtotal};
+  $form->{oldinvtotal} = $form->{invtotal};
+
+  # note rows
+  $form->{rows} = max 2,
+    $form->numtextrows($form->{notes},    26, 8),
+    $form->numtextrows($form->{intnotes}, 35, 8);
 
-  my ($rows, $introws);
-  if (($rows = $form->numtextrows($form->{notes}, 26, 8)) < 2) {
-    $rows = 2;
-  }
-  if (($introws = $form->numtextrows($form->{intnotes}, 35, 8)) < 2) {
-    $introws = 2;
-  }
-  $rows = ($rows > $introws) ? $rows : $introws;
-  my $notes =
-    qq|<textarea name="notes" rows="$rows" cols="26" wrap="soft">$form->{notes}</textarea>|;
-  my $intnotes =
-    qq|<textarea name="intnotes" rows="$rows" cols="35" wrap="soft">$form->{intnotes}</textarea>|;
-
-  $form->{taxincluded} = ($form->{taxincluded} ? "checked" : "");
-
-  my $taxincluded = "";
-  if ($form->{taxaccounts}) {
-    $taxincluded = qq|
-               <input name="taxincluded" class="checkbox" type="checkbox" $form->{taxincluded}> <b>|
-      . $locale->text('Tax Included') . qq|</b><br><br>|;
-  }
 
+  # tax, total and subtotal calculations
   my ($tax, $subtotal);
-  if (!$form->{taxincluded}) {
-
-    foreach my $item (split / /, $form->{taxaccounts}) {
-      if ($form->{"${item}_base"}) {
-        $form->{"${item}_total"} =
-          $form->round_amount(
-                             $form->{"${item}_base"} * $form->{"${item}_rate"},
-                             2);
+  $form->{taxaccounts_array} = [ split / /, $form->{taxaccounts} ];
+
+  foreach my $item (@{ $form->{taxaccounts_array} }) {
+    if ($form->{"${item}_base"}) {
+      if ($form->{taxincluded}) {
+        $form->{"${item}_total"} = $form->round_amount( ($form->{"${item}_base"} * $form->{"${item}_rate"}
+                                                                                 / (1 + $form->{"${item}_rate"})), 2);
+        $form->{"${item}_netto"} = $form->round_amount( ($form->{"${item}_base"} - $form->{"${item}_total"}), 2);
+      } else {
+        $form->{"${item}_total"} = $form->round_amount( $form->{"${item}_base"} * $form->{"${item}_rate"}, 2);
         $form->{invtotal} += $form->{"${item}_total"};
-        $form->{"${item}_total"} =
-          $form->format_amount(\%myconfig, $form->{"${item}_total"}, 2);
-
-        $tax .= qq|
-             <tr>
-                <th align="right">$form->{"${item}_description"}&nbsp;|
-                                    . $form->{"${item}_rate"} * 100 .qq|%</th>
-               <td align="right">$form->{"${item}_total"}</td>
-             </tr>
-|;
-      }
-    }
-
-    $form->{invsubtotal} =
-      $form->format_amount(\%myconfig, $form->{invsubtotal}, 2, 0);
-
-    $subtotal = qq|
-             <tr>
-               <th align="right">| . $locale->text('Subtotal') . qq|</th>
-               <td align="right">$form->{invsubtotal}</td>
-             </tr>
-|;
-
-  }
-
-  if ($form->{taxincluded}) {
-    foreach my $item (split / /, $form->{taxaccounts}) {
-      if ($form->{"${item}_base"}) {
-        $form->{"${item}_total"} =
-          $form->round_amount(
-                           ($form->{"${item}_base"} * $form->{"${item}_rate"} /
-                              (1 + $form->{"${item}_rate"})
-                           ),
-                           2);
-        $form->{"${item}_netto"} =
-          $form->round_amount(
-                          ($form->{"${item}_base"} - $form->{"${item}_total"}),
-                          2);
-        $form->{"${item}_total"} =
-          $form->format_amount(\%myconfig, $form->{"${item}_total"}, 2);
-        $form->{"${item}_netto"} =
-          $form->format_amount(\%myconfig, $form->{"${item}_netto"}, 2);
-
-        $tax .= qq|
-             <tr>
-               <th align="right">Enthaltene $form->{"${item}_description"}&nbsp;|
-                                   . $form->{"${item}_rate"} * 100 .qq|%</th>
-               <td align="right">$form->{"${item}_total"}</td>
-             </tr>
-             <tr>
-               <th align="right">Nettobetrag</th>
-               <td align="right">$form->{"${item}_netto"}</td>
-             </tr>
-|;
       }
     }
-
   }
 
-  $form->{oldinvtotal} = $form->{invtotal};
-  $form->{invtotal}    =
-    $form->format_amount(\%myconfig, $form->{invtotal}, 2, 0);
-
-  my $follow_ups_block;
+  # follow ups
   if ($form->{id}) {
-    my $follow_ups = FU->follow_ups('trans_id' => $form->{id});
-
-    if (@{ $follow_ups} ) {
-      my $num_due       = sum map { $_->{due} * 1 } @{ $follow_ups };
-      $follow_ups_block = qq|
-      <tr>
-        <td colspan="2">| . $locale->text("There are #1 unfinished follow-ups of which #2 are due.", scalar @{ $follow_ups }, $num_due) . qq|</td>
-      </tr>
-|;
-    }
-  }
-
-  print qq|
-  <tr>
-    <td>
-      <table width="100%">
-       <tr valign="bottom">
-         <td>
-           <table>
-             <tr>
-               <th align="left">| . $locale->text('Notes') . qq|</th>
-               <th align="left">| . $locale->text('Internal Notes') . qq|</th>
-                <th align="right">| . $locale->text('Payment Terms') . qq|</th>
-             </tr>
-             <tr valign="top">
-               <td>$notes</td>
-               <td>$intnotes</td>
-                <td><select name="payment_id" onChange="if (this.value) set_duedate(['payment_id__' + this.value, 'invdate__' + invdate.value],['duedate'])">$payment
-                </select></td>
-             </tr>
-        $follow_ups_block
-           </table>
-         </td>
-          <td>
-            <table>
-            <tr>
-              <th  align=left>| . $locale->text('Ertrag') . qq|</th>
-              <td>| .  $form->format_amount(\%myconfig, $form->{marge_total}, 2, 0) . qq|</td>
-            </tr>
-            <tr>
-              <th  align=left>| . $locale->text('Ertrag prozentual') . qq|</th>
-              <td>| .  $form->format_amount(\%myconfig, $form->{marge_percent}, 2, 0) . qq| %</td>
-            </tr>
-            <input type=hidden name="marge_total" value="$form->{"marge_total"}">
-            <input type=hidden name="marge_percent" value="$form->{"marge_percent"}">
-            </table>
-          </td>
-         <td align="right">
-           $taxincluded
-           <table>
-             $subtotal
-             $tax
-             <tr>
-               <th align="right">| . $locale->text('Total') . qq|</th>
-               <td align="right">$form->{invtotal}</td>
-             </tr>
-           </table>
-         </td>
-       </tr>
-      </table>
-    </td>
-  </tr>
-|;
-  my $webdav_list;
-  if ($main::webdav) {
-    $webdav_list = qq|
-  <tr>
-    <td><hr size="3" noshade></td>
-  </tr>
-  <tr>
-    <th class="listtop" align="left">Dokumente im Webdav-Repository</th>
-  </tr>
-    <table width="100%">
-      <td align="left" width="30%"><b>Dateiname</b></td>
-      <td align="left" width="70%"><b>Webdavlink</b></td>
-|;
-    foreach my $file (@{ $form->{WEBDAV} }) {
-      $webdav_list .= qq|
-      <tr>
-        <td align="left">$file->{name}</td>
-        <td align="left"><a href="$file->{link}">$file->{type}</a></td>
-      </tr>
-|;
-    }
-    $webdav_list .= qq|
-    </table>
-  </tr>
-|;
-
-    print $webdav_list;
-  }
-if ($form->{type} eq "credit_note") {
-  print qq|
-  <tr>
-    <td>
-      <table width="100%">
-       <tr class="listheading">
-         <th colspan="6" class="listheading">|
-    . $locale->text('Payments') . qq|</th>
-       </tr>
-|;
-} else {
-  print qq|
-  <tr>
-    <td>
-      <table width="100%">
-       <tr class="listheading">
-         <th colspan="6" class="listheading">|
-    . $locale->text('Incoming Payments') . qq|</th>
-       </tr>
-|;
-}
-
-  my @column_index;
-  if ($form->{currency} eq $form->{defaultcurrency}) {
-    @column_index = qw(datepaid source memo paid AR_paid);
-  } else {
-    @column_index = qw(datepaid source memo paid exchangerate AR_paid);
+    $form->{follow_ups}            = FU->follow_ups('trans_id' => $form->{id}) || [];
+    $form->{follow_ups_unfinished} = sum map { $_->{due} * 1 } @{ $form->{follow_ups} };
   }
 
-  my %column_data;
-  $column_data{datepaid}     = "<th>" . $locale->text('Date') . "</th>";
-  $column_data{paid}         = "<th>" . $locale->text('Amount') . "</th>";
-  $column_data{exchangerate} = "<th>" . $locale->text('Exch') . "</th>";
-  $column_data{AR_paid}      = "<th>" . $locale->text('Account') . "</th>";
-  $column_data{source}       = "<th>" . $locale->text('Source') . "</th>";
-  $column_data{memo}         = "<th>" . $locale->text('Memo') . "</th>";
-
-  print "
-       <tr>
-";
-  map { print "$column_data{$_}\n" } @column_index;
-  print "
-        </tr>
-";
-
-  my @triggers  = ();
+  # payments
   my $totalpaid = 0;
-
   $form->{paidaccounts}++ if ($form->{"paid_$form->{paidaccounts}"});
-  for my $i (1 .. $form->{paidaccounts}) {
-
-    print "
-        <tr>\n";
+  $form->{paid_indices} = [ 1 .. $form->{paidaccounts} ];
 
+  for my $i (1 .. $form->{paidaccounts}) {
     $form->{"selectAR_paid_$i"} = $form->{selectAR_paid};
-    $form->{"selectAR_paid_$i"} =~
-      s/option>\Q$form->{"AR_paid_$i"}\E/option selected>$form->{"AR_paid_$i"}/;
-
-    # format amounts
+    $form->{"selectAR_paid_$i"} =~ s/option>\Q$form->{"AR_paid_$i"}\E/option selected>$form->{"AR_paid_$i"}/;
     $totalpaid += $form->{"paid_$i"};
-    if ($form->{"paid_$i"}) {
-      $form->{"paid_$i"} =
-        $form->format_amount(\%myconfig, $form->{"paid_$i"}, 2);
-    }
-    $form->{"exchangerate_$i"} =
-      $form->format_amount(\%myconfig, $form->{"exchangerate_$i"});
-
-    if ($form->{"exchangerate_$i"} == 0) {
-      $form->{"exchangerate_$i"} = "";
-    }
-    my $exchangerate = qq|&nbsp;|;
-    if ($form->{currency} ne $form->{defaultcurrency}) {
-      if ($form->{"forex_$i"}) {
-        $exchangerate = qq|<input type="hidden" name="exchangerate_$i" value="$form->{"exchangerate_$i"}">$form->{"exchangerate_$i"}|;
-      } else {
-        $exchangerate = qq|<input name="exchangerate_$i" size="10" value="$form->{"exchangerate_$i"}">|;
-      }
-    }
-
-    $exchangerate .= qq|<input type="hidden" name="forex_$i" value="$form->{"forex_$i"}">|;
-
-    $column_data{"paid_$i"} =
-      qq|<td align="center"><input name="paid_$i" size="11" value="$form->{"paid_$i"}" onBlur=\"check_right_number_format(this)\"></td>|;
-    $column_data{"exchangerate_$i"} = qq|<td align="center">$exchangerate</td>|;
-    $column_data{"AR_paid_$i"}      =
-      qq|<td align="center"><select name="AR_paid_$i">$form->{"selectAR_paid_$i"}</select></td>|;
-    $column_data{"datepaid_$i"} =
-      qq|<td align="center"><input id="datepaid_$i" name="datepaid_$i"  size="11" title="$myconfig{dateformat}" value="$form->{"datepaid_$i"}" onBlur=\"check_right_date_format(this)\">
-         <input type="button" name="datepaid_$i" id="trigger_datepaid_$i" value="?"></td>|;
-    $column_data{"source_$i"} =
-      qq|<td align=center><input name="source_$i" size="11" value="$form->{"source_$i"}"></td>|;
-    $column_data{"memo_$i"} =
-      qq|<td align="center"><input name="memo_$i" size="11" value="$form->{"memo_$i"}"></td>|;
-
-    map { print qq|$column_data{"${_}_$i"}\n| } @column_index;
-    print "
-        </tr>\n";
-    push(@triggers, "datepaid_$i", "BL", "trigger_datepaid_$i");
   }
 
-  my $paid_missing = $form->{oldinvtotal} - $totalpaid;
-
-  print qq|
-    <tr>
-      <td></td>
-      <td></td>
-      <td align="center">| . $locale->text('Total') . qq|</td>
-      <td align="center">| . H($form->format_amount(\%myconfig, $totalpaid, 2)) . qq|</td>
-    </tr>
-    <tr>
-      <td></td>
-      <td></td>
-      <td align="center">| . $locale->text('Missing amount') . qq|</td>
-      <td align="center">| . H($form->format_amount(\%myconfig, $paid_missing, 2)) . qq|</td>
-    </tr>
-|;
-
-  map({ print($cgi->hidden("-name" => $_, "-value" => $form->{$_})); } qw(paidaccounts selectAR_paid oldinvtotal));
-  print qq|<input type="hidden" name="oldtotalpaid" value="$totalpaid">
-    </table>
-    </td>
-  </tr>
-  <tr>
-    <td><hr size="3" noshade></td>
-  </tr>
-  <tr>
-    <td>
-|;
-
-  print_options();
-
-  print qq|
-    </td>
-  </tr>
-</table>
-|;
-
-  my $invdate  = $form->datetonum($form->{invdate},  \%myconfig);
-  my $closedto = $form->datetonum($form->{closedto}, \%myconfig);
-
-  if ($form->{id}) {
-    my $show_storno = !$form->{storno} && !IS->has_storno(\%myconfig, $form, "ar") && (($totalpaid == 0) || ($totalpaid eq ""));
-
-    print qq|
-    <input class="submit" type="submit" accesskey="u" name="action" id="update_button" value="|
-      . $locale->text('Update') . qq|">
-    <input class="submit" type="submit" name="action" value="|
-      . $locale->text('Ship to') . qq|">
-    <input class="submit" type="submit" name="action" value="|
-      . $locale->text('Print') . qq|">
-    <input class="submit" type="submit" name="action" value="|
-      . $locale->text('E-mail') . qq|"> |;
-    print qq|<input class="submit" type="submit" name="action" value="|
-      . $locale->text('Storno') . qq|"> | if ($show_storno);
-    print qq|<input class="submit" type="submit" name="action" value="|
-      . $locale->text('Post Payment') . qq|">
-|;
-    print qq|<input class="submit" type="submit" name="action" value="|
-      . $locale->text('Use As Template') . qq|">
-|;
-    if ($form->{id} && !($form->{type} eq "credit_note")) {
-      print qq|
-    <input class="submit" type="submit" name="action" value="|
-      . $locale->text('Credit Note') . qq|">
-|;
-    }
-    if ($form->{radier}) {
-    print qq|
-    <input class="submit" type="submit" name="action" value="|
-      . $locale->text('Delete') . qq|">
-|;
-    }
-
-
-    if ($invdate > $closedto) {
-      print qq|
-      <input class="submit" type="submit" name="action" value="|
-        . $locale->text('Order') . qq|">
-|;
-    }
-
-    print qq|
-      <input type="button" class="submit" onclick="follow_up_window()" value="|
-      . $locale->text('Follow-Up')
-      . qq|">|;
-
-  } else {
-    if ($invdate > $closedto) {
-      print qq|<input class="submit" type="submit" name="action" id="update_button" value="|
-        . $locale->text('Update') . qq|">
-      <input class="submit" type="submit" name="action" value="|
-        . $locale->text('Ship to') . qq|">
-      <input class="submit" type="submit" name="action" value="|
-        . $locale->text('Preview') . qq|">
-      <input class="submit" type="submit" name="action" value="|
-        . $locale->text('E-mail') . qq|">
-      <input class="submit" type="submit" name="action" value="|
-        . $locale->text('Print and Post') . qq|">
-      <input class="submit" type="submit" name="action" value="|
-        . $locale->text('Post') . qq|"> | .
-        NTI($cgi->submit('-name' => 'action', '-value' => $locale->text('Save draft'),
-                         '-class' => 'submit'));
-    }
-  }
-
-  # button for saving history
-  if($form->{id} ne "") {
-    print qq|
-         <input type="button" class="submit" onclick="set_history_window(|
-         . Q($form->{id})
-         . qq|);" name="history" id="history" value="|
-         . $locale->text('history')
-         . qq|"> |;
-  }
-  # /button for saving history
-
-  # mark_as_paid button
-  if($form->{id} ne "") {
-    print qq|<input type="submit" class="submit" name="action" value="|
-          . $locale->text('mark as paid') . qq|">|;
-  }
-  # /mark_as_paid button
-  print $form->write_trigger(\%myconfig, scalar(@triggers) / 3, @triggers) .
-    qq|
-
-<input type="hidden" name="rowcount" value="$form->{rowcount}">
-| .
-$cgi->hidden("-name" => "callback", "-value" => $form->{callback})
-. $cgi->hidden('-name' => 'draft_id', '-default' => [$form->{draft_id}])
-. $cgi->hidden('-name' => 'draft_description', '-default' => [$form->{draft_description}])
-. $cgi->hidden('-name' => 'customer_discount', '-value' => [$form->{customer_discount}])
-. qq|
-</form>
-
-</body>
-
- </html>
-|;
+  print $form->parse_html_template('is/form_footer', {
+    is_type_credit_note => ($form->{type} eq "credit_note"),
+    totalpaid           => $totalpaid,
+    paid_missing        => $form->{invtotal} - $totalpaid,
+    print_options       => print_options(inline => 1),
+    show_storno         => $form->{id} && !$form->{storno} && !IS->has_storno(\%myconfig, $form, "ar") && !$totalpaid,
+    show_delete         => ($form->current_date(\%myconfig) eq $form->{gldate}),
+  });
+##print $form->parse_html_template('is/_payments'); # parser
+##print $form->parse_html_template('webdav/_list'); # parser
 
   $main::lxdebug->leave_sub();
 }
index 557892970d2607585f9693423d940e7830957c16..e5733ff0881a87e853ad24de55e331384679c959 100644 (file)
@@ -1355,6 +1355,7 @@ $self->{texts} = {
   'Sat. Phone'                  => 'Sat. Tel.',
   'Satz %'                      => 'Satz %',
   'Save'                        => 'Speichern',
+  'Save Draft'                  => 'Entwurf speichern',
   'Save account first to insert taxkeys' => 'Einstellungen sind nach
   dem Speichern des Kontos verfügbar...',
   'Save and AP Transaction'     => 'Speichern und Kreditorenbuchung erfassen',
@@ -1640,7 +1641,7 @@ $self->{texts} = {
   'The wrong taxkeys for AP and AR transactions have been fixed.' => 'Die Probleme mit falschen Steuerschlüssel bei Kreditoren- und Debitorenbuchungen wurden behoben.',
   'The wrong taxkeys for inventory transactions for sales and purchase invoices have been fixed.' => 'Die falschen Steuerschlüssel für Warenbestandsbuchungen bei Einkaufs- und Verkaufsrechnungen wurden behoben.',
   'The wrong taxkeys have been fixed.' => 'Die Steuerschlüssel wurden nach Ihrer Auswahl korrigiert.',
-  'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 f&auml;llig ist/sind.',
+  'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
   'There are four tax zones.'   => 'Es gibt vier Steuerzonen.',
   'There are no items in stock.' => 'Dieser Artikel ist nicht eingelagert.',
   'There are no items on your TODO list at the moment.' => 'Ihre Aufgabenliste enth&auml;lt momentan keine Eintr&auml;ge.',
index 7de98d5fec1b7d62ebaccd50d9adc745a68c9931..51fd1a07f44b6bef94da7a3d2b0fc80d35f3d8ea 100644 (file)
@@ -239,7 +239,7 @@ $self->{texts} = {
   'The connection to the template database failed:' => 'Die Verbindung zur Vorlagendatenbank schlug fehl:',
   'The creation of the authentication database failed:' => 'Das Anlegen der Authentifizierungsdatenbank schlug fehl:',
   'The list has been printed.'  => 'Die Liste wurde ausgedruckt.',
-  'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 f&auml;llig ist/sind.',
+  'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
   'To (email)'                  => 'An',
   'Total'                       => 'Summe',
   'Transaction %d cancelled.'   => 'Buchung %d erfolgreich storniert.',
index 268db0a03d697ff6e8b7c63bb5615653a64ccc51..e2ebb24206fb7c67f151091b55d4d197db200a4a 100644 (file)
@@ -244,7 +244,7 @@ $self->{texts} = {
   'The connection to the template database failed:' => 'Die Verbindung zur Vorlagendatenbank schlug fehl:',
   'The creation of the authentication database failed:' => 'Das Anlegen der Authentifizierungsdatenbank schlug fehl:',
   'The list has been printed.'  => 'Die Liste wurde ausgedruckt.',
-  'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 f&auml;llig ist/sind.',
+  'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
   'To (email)'                  => 'An',
   'Total'                       => 'Summe',
   'Transaction %d cancelled.'   => 'Buchung %d erfolgreich storniert.',
index eb06e9bc4fde56229da3511cddef2b03c67f38b4..5801178f5c3df042e86aa16d6e1f3090f6f6a562 100644 (file)
@@ -227,7 +227,7 @@ $self->{texts} = {
   'The connection to the template database failed:' => 'Die Verbindung zur Vorlagendatenbank schlug fehl:',
   'The creation of the authentication database failed:' => 'Das Anlegen der Authentifizierungsdatenbank schlug fehl:',
   'The list has been printed.'  => 'Die Liste wurde ausgedruckt.',
-  'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 f&auml;llig ist/sind.',
+  'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
   'To (email)'                  => 'An',
   'To (time)'                   => 'Bis',
   'Transaction %d cancelled.'   => 'Buchung %d erfolgreich storniert.',
index 07797d62737ddf19645d4db03bc3fa4c13b605bb..10ed04daed53c9435394c850ddaec1ba0541189b 100644 (file)
@@ -281,7 +281,7 @@ $self->{texts} = {
   'The connection to the authentication database failed:' => 'Die Verbindung zur Authentifizierungsdatenbank schlug fehl:',
   'The connection to the template database failed:' => 'Die Verbindung zur Vorlagendatenbank schlug fehl:',
   'The creation of the authentication database failed:' => 'Das Anlegen der Authentifizierungsdatenbank schlug fehl:',
-  'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 f&auml;llig ist/sind.',
+  'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
   'To (email)'                  => 'An',
   'Total'                       => 'Summe',
   'Transactions, AR transactions, AP transactions' => 'Dialogbuchen, Debitorenrechnungen, Kreditorenrechnungen',
index ff1936e00130769c9e846590ec61dd3e2e047d8e..f38b4db2d4af68630b3ad215ceacb9d0aa578b32 100644 (file)
@@ -9,7 +9,6 @@ $self->{texts} = {
   'AP Transaction'              => 'Kreditorenbuchung',
   'AR'                          => 'Verkauf',
   'AR Transaction'              => 'Debitorenbuchung',
-  'Account'                     => 'Konto',
   'Add Credit Note'             => 'Gutschrift erfassen',
   'Add Purchase Order'          => 'Lieferantenauftrag erfassen',
   'Add Quotation'               => 'Angebot erfassen',
@@ -20,7 +19,6 @@ $self->{texts} = {
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
   'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
-  'Amount'                      => 'Betrag',
   'Apr'                         => 'Apr',
   'April'                       => 'April',
   'Are you sure you want to delete Invoice Number' => 'Soll die Rechnung mit folgender Nummer wirklich gelöscht werden:',
@@ -57,14 +55,11 @@ $self->{texts} = {
   'Cannot storno storno invoice!' => 'Kann eine Stornorechnung nicht stornieren',
   'Cc'                          => 'Cc',
   'Change Lx-Office installation settings (all menu entries beneath \'System\')' => 'Ver&auml;ndern der Lx-Office-Installationseinstellungen (Men&uuml;punkte unterhalb von \'System\')',
-  'Choose Customer'             => 'Endkunde wählen:',
-  'Choose Vendor'               => 'Händler wählen',
   'City'                        => 'Stadt',
   'Company Name'                => 'Firmenname',
   'Confirm!'                    => 'Bestätigen Sie!',
   'Confirmation'                => 'Auftragsbestätigung',
   'Contact'                     => 'Kontakt',
-  'Contact Person'              => 'Ansprechpartner',
   'Continue'                    => 'Weiter',
   'Country'                     => 'Land',
   'Create and edit RFQs'        => 'Lieferantenanfragen erfassen und bearbeiten',
@@ -79,20 +74,13 @@ $self->{texts} = {
   'Create and edit sales orders' => 'Auftragsbest&auml;tigungen erfassen und bearbeiten',
   'Create and edit sales quotations' => 'Angebote erfassen und bearbeiten',
   'Create and edit vendor invoices' => 'Eingangsrechnungen erfassen und bearbeiten',
-  'Credit Limit'                => 'Kreditlimit',
-  'Credit Limit exceeded!!!'    => 'Kreditlimit überschritten!',
   'Credit Note'                 => 'Gutschrift',
-  'Credit Note Date'            => 'Gutschriftdatum',
-  'Credit Note Number'          => 'Gutschriftnummer',
-  'Currency'                    => 'Währung',
   'Customer'                    => 'Kunde',
   'Customer Number'             => 'Kundennummer',
-  'Customer Order Number'       => 'Bestellnummer des Kunden',
   'Customer details'            => 'Kundendetails',
   'Customer missing!'           => 'Kundenname fehlt!',
   'Customer not on file or locked!' => 'Dieser Kunde existiert nicht oder ist gesperrt.',
   'Customer not on file!'       => 'Kunde ist nicht in der Datenbank!',
-  'Customer type'               => 'Kundentyp',
   'DATEV Export'                => 'DATEV-Export',
   'DELETED'                     => 'Gelöscht',
   'DR'                          => 'S',
@@ -101,22 +89,17 @@ $self->{texts} = {
   'Date'                        => 'Datum',
   'Dec'                         => 'Dez',
   'December'                    => 'Dezember',
-  'Delete'                      => 'Löschen',
   'Delete drafts'               => 'Entwürfe löschen',
   'Delivered'                   => 'Geliefert',
   'Delivery Date'               => 'Lieferdatum',
   'Delivery Order'              => 'Lieferschein',
-  'Delivery Order Number'       => 'Lieferscheinnummer',
   'Department'                  => 'Abteilung',
   'Dependency loop detected:'   => 'Schleife in den Abh&auml;ngigkeiten entdeckt:',
   'Description'                 => 'Beschreibung',
-  'Details (one letter abbreviation)' => 'D',
   'Directory'                   => 'Verzeichnis',
   'Discount'                    => 'Rabatt',
   'Draft saved.'                => 'Entwurf gespeichert.',
-  'Due Date'                    => 'Fälligkeitsdatum',
   'Dunning'                     => 'Mahnung',
-  'Dunning Amount'              => 'gemahnter Betrag',
   'E-mail'                      => 'eMail',
   'E-mail address missing!'     => 'E-Mail-Adresse fehlt!',
   'EK'                          => 'EK',
@@ -125,33 +108,23 @@ $self->{texts} = {
   'Edit Sales Invoice'          => 'Rechnung bearbeiten',
   'Edit Storno Credit Note'     => 'Storno Gutschrift bearbeiten',
   'Edit Storno Invoice'         => 'Stornorechnung bearbeiten',
-  'Employee'                    => 'Bearbeiter',
   'Enter longdescription'       => 'Langtext eingeben',
   'Error in database control file \'%s\': %s' => 'Fehler in Datenbankupgradekontrolldatei \'%s\': %s',
   'Ertrag'                      => 'Ertrag',
-  'Ertrag prozentual'           => 'Ertrag prozentual',
-  'Exch'                        => 'Wechselkurs.',
-  'Exchangerate'                => 'Wechselkurs',
   'Exchangerate for payment missing!' => 'Es fehlt der Wechselkurs für die Bezahlung!',
   'Exchangerate missing!'       => 'Es fehlt der Wechselkurs!',
   'Extended'                    => 'Gesamt',
-  'Falsches Datumsformat!'      => 'Falsches Datumsformat!',
   'Fax'                         => 'Fax',
   'Feb'                         => 'Feb',
   'February'                    => 'Februar',
   'File'                        => 'Datei',
-  'Follow-Up'                   => 'Wiedervorlage',
   'GL Transaction'              => 'Dialogbuchung',
   'General ledger and cash'     => 'Finanzbuchhaltung und Zahlungsverkehr',
   'Group'                       => 'Warengruppe',
   'History'                     => 'Historie',
   'In-line'                     => 'im Text',
-  'Incoming Payments'           => 'Zahlungseingänge',
-  'Internal Notes'              => 'interne Bemerkungen',
   'Invoice'                     => 'Rechnung',
-  'Invoice Date'                => 'Rechnungsdatum',
   'Invoice Date missing!'       => 'Rechnungsdatum fehlt!',
-  'Invoice Number'              => 'Rechnungsnummer',
   'Invoice Number missing!'     => 'Rechnungsnummer fehlt!',
   'Invoice deleted!'            => 'Rechnung gelöscht!',
   'Invoice has already been storno\'d!' => 'Diese Rechnung wurde bereits storniert.',
@@ -171,15 +144,12 @@ $self->{texts} = {
   'Mark as paid?'               => 'Als bezahlt markieren?',
   'Marked as paid'              => 'Als bezahlt markiert',
   'Master Data'                 => 'Stammdaten',
-  'Max. Dunning Level'          => 'höchste Mahnstufe',
   'May'                         => 'Mai',
   'May '                        => 'Mai',
   'May set the BCC field when sending emails' => 'Beim Verschicken von Emails das Feld \'BCC\' setzen',
-  'Memo'                        => 'Memo',
   'Message'                     => 'Nachricht',
   'Missing \'description\' field.' => 'Fehlendes Feld \'description\'.',
   'Missing \'tag\' field.'      => 'Fehlendes Feld \'tag\'.',
-  'Missing amount'              => 'Fehlbetrag',
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'Missing parameter (at least one of #1) in call to sub #2.' => 'Fehlernder Parameter (mindestens einer aus \'#1\') in Funktionsaufruf \'#2\'.',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
@@ -193,7 +163,6 @@ $self->{texts} = {
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
   'No.'                         => 'Position',
-  'Notes'                       => 'Bemerkungen',
   'Nov'                         => 'Nov',
   'November'                    => 'November',
   'Number'                      => 'Nummer',
@@ -202,10 +171,7 @@ $self->{texts} = {
   'October'                     => 'Oktober',
   'On Hand'                     => 'Auf Lager',
   'OpenDocument/OASIS'          => 'OpenDocument/OASIS',
-  'Order'                       => 'Auftrag',
-  'Order Date'                  => 'Auftragsdatum',
   'Order Date missing!'         => 'Auftragsdatum fehlt!',
-  'Order Number'                => 'Auftragsnummer',
   'Order Number missing!'       => 'Auftragsnummer fehlt!',
   'Others'                      => 'Andere',
   'PAYMENT POSTED'              => 'Rechung gebucht',
@@ -220,41 +186,30 @@ $self->{texts} = {
   'Part Description'            => 'Artikelbeschreibung',
   'Part Number'                 => 'Artikelnummer',
   'Part description'            => 'Artikelbeschreibung',
-  'Payment Terms'               => 'Zahlungskonditionen',
   'Payment date missing!'       => 'Tag der Zahlung fehlt!',
   'Payment posted!'             => 'Zahlung gebucht!',
-  'Payments'                    => 'Zahlungsausgänge',
   'Phone'                       => 'Telefon',
   'Pick List'                   => 'Sammelliste',
   'Please enter values'         => 'Bitte Werte eingeben',
-  'Post'                        => 'Buchen',
-  'Post Payment'                => 'Zahlung buchen',
   'Postscript'                  => 'Postscript',
   'Preview'                     => 'Druckvorschau',
   'Price'                       => 'Preis',
   'Price Factor'                => 'Preisfaktor',
   'Pricegroup'                  => 'Preisgruppe',
-  'Print'                       => 'Drucken',
-  'Print and Post'              => 'Drucken und Buchen',
   'Printer'                     => 'Drucker',
   'Proforma Invoice'            => 'Proformarechnung',
   'Project'                     => 'Projekt',
-  'Project Number'              => 'Projektnummer',
   'Project not on file!'        => 'Dieses Projekt ist nicht in der Datenbank!',
   'Purchase Order'              => 'Lieferantenauftrag',
   'Qty'                         => 'Menge',
   'Queue'                       => 'Warteschlange',
   'Quotation'                   => 'Angebot',
-  'Quotation Date'              => 'Angebotsdatum',
   'Quotation Date missing!'     => 'Angebotsdatum fehlt!',
-  'Quotation Number'            => 'Angebotsnummer',
   'Quotation Number missing!'   => 'Angebotsnummer fehlt!',
   'RFQ'                         => 'Anfrage',
   'ROP'                         => 'Mindestlagerbestand',
   'Receipt, payment, reconciliation' => 'Zahlungseingang, Zahlungsausgang, Kontenabgleich',
-  'Record in'                   => 'Buchen auf',
   'Release From Stock'          => 'Lagerausgang',
-  'Remaining'                   => 'Rest',
   'Reports'                     => 'Berichte',
   'Reqdate'                     => 'Lieferdatum',
   'Request for Quotation'       => 'Anfrage',
@@ -266,8 +221,6 @@ $self->{texts} = {
   'Sales Invoice'               => 'Rechnung',
   'Sales Order'                 => 'Kundenauftrag',
   'Sales quotation'             => 'Angebot',
-  'Salesman'                    => 'Verkäufer/in',
-  'Save draft'                  => 'Entwurf speichern',
   'Screen'                      => 'Bildschirm',
   'Select a Customer'           => 'Endkunde auswählen',
   'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
@@ -283,20 +236,14 @@ $self->{texts} = {
   'Ship'                        => 'Lagerausgang',
   'Ship rcvd'                   => 'Lagereingang',
   'Ship to'                     => 'Lieferadresse',
-  'Ship via'                    => 'Transportmittel',
   'Shipping Address'            => 'Lieferadresse',
-  'Shipping Point'              => 'Versandort',
   'Show details'                => 'Details anzeigen',
   'Skip'                        => 'Überspringen',
-  'Source'                      => 'Beleg',
-  'Steuersatz'                  => 'Steuersatz',
-  'Storno'                      => 'Storno',
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
   'Street'                      => 'Straße',
   'Subject'                     => 'Betreff',
   'Subtotal'                    => 'Zwischensumme',
-  'Tax Included'                => 'Steuer im Preis inbegriffen',
   'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'Das Feld \'tag\' darf nur aus alphanumerischen Zeichen und den Zeichen - _ ( ) bestehen.',
   'The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.' => 'Der LDAP-Server "#1:#2" ist nicht erreichbar. Bitte &uuml;berpr&uuml;fen Sie die Angaben in config/authentication.pl.',
   'The config file "config/authentication.pl" contained invalid Perl code:' => 'Die Konfigurationsdatei "config/authentication.pl" enthielt ung&uuml;tigen Perl-Code:',
@@ -305,18 +252,12 @@ $self->{texts} = {
   'The connection to the authentication database failed:' => 'Die Verbindung zur Authentifizierungsdatenbank schlug fehl:',
   'The connection to the template database failed:' => 'Die Verbindung zur Vorlagendatenbank schlug fehl:',
   'The creation of the authentication database failed:' => 'Das Anlegen der Authentifizierungsdatenbank schlug fehl:',
-  'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 f&auml;llig ist/sind.',
   'To (email)'                  => 'An',
-  'Total'                       => 'Summe',
-  'Trade Discount'              => 'Rabatt',
-  'Transaction description'     => 'Vorgangsbezeichnung',
   'Transactions, AR transactions, AP transactions' => 'Dialogbuchen, Debitorenrechnungen, Kreditorenrechnungen',
   'Transfer To Stock'           => 'Lagereingang',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
   'Unit'                        => 'Einheit',
   'Unknown dependency \'%s\'.'  => 'Unbekannte Abh&auml;ngigkeit \'%s\'.',
-  'Update'                      => 'Erneuern',
-  'Use As Template'             => 'Als Vorlage verwenden',
   'Value'                       => 'Wert',
   'Variable'                    => 'Variable',
   'Vendor'                      => 'Lieferant',
@@ -333,16 +274,13 @@ $self->{texts} = {
   'Zipcode'                     => 'PLZ',
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
-  'button'                      => '?',
   'config/authentication.pl: Key "DB_config" is missing.' => 'config/authentication.pl: Das Schl&uuml;sselwort "DB_config" fehlt.',
   'config/authentication.pl: Key "LDAP_config" is missing.' => 'config/authentication.pl: Der Schl&uuml;ssel "LDAP_config" fehlt.',
   'config/authentication.pl: Missing parameters in "DB_config". Required parameters are "host", "db" and "user".' => 'config/authentication.pl: Fehlende Parameter in "DB_config". Ben&ouml;tigte Parameter sind "host", "db" und "user".',
   'config/authentication.pl: Missing parameters in "LDAP_config". Required parameters are "host", "attribute" and "base_dn".' => 'config/authentication.pl: Fehlende Parameter in "LDAP_config". Ben&ouml;tigt werden "host", "attribute" und "base_dn".',
   'customer'                    => 'Kunde',
   'emailed to'                  => 'gemailt an',
-  'history'                     => 'Historie',
   'invoice'                     => 'Rechnung',
-  'mark as paid'                => 'als bezahlt markieren',
   'no'                          => 'nein',
   'none (pricegroup)'           => 'keine',
   'packing_list'                => 'Versandliste',
@@ -356,7 +294,6 @@ $self->{texts} = {
   'sent'                        => 'gesendet',
   'sent to printer'             => 'an Drucker geschickt',
   'vendor'                      => 'Lieferant',
-  'wrongformat'                 => 'Falsches Format',
   'yes'                         => 'ja',
 };
 
@@ -461,6 +398,7 @@ $self->{subs} = {
   'drucken'                     => 'print',
   'drucken_und_buchen'          => 'print_and_post',
   'entwurf_speichern'           => 'save_draft',
+  'entwurf_speichern'           => 'save_draft',
   'lieferadresse'               => 'ship_to',
   'Überspringen'                => 'skip',
   'storno'                      => 'storno',
index b78f1bc0437cfae327b5b04ebdfb07f946b2d438..7225b0347f14f340ea267f1bc0ceb6fd86bbd0d6 100644 (file)
@@ -23,6 +23,7 @@
     select        : java function call for a selection popup or other magic
     allow_textbox : allow to display a textbox instead of a drop down box if there are more entries than 'limit' entries.
     limit         : defines the limit of entries, after which a textbox is generated. defaults to vclimit, or, failing to find that, 200.
+    readonly      : softly prevents modification
 -%]
 [%- DEFAULT
   limit      = limit   != '' ? limit   : vclimit != '' ? vclimit : 200
@@ -44,6 +45,7 @@
  [%- IF id       %] id="[%       HTML.escape(id)       %]"[% END -%]
  [%- IF default  %] value="[%    HTML.escape(default)  %]"[% END -%]
  [%- IF style    %] style="[%    HTML.escape(style)    %]"[% END -%]
+ [%- IF readonly %] readonly[% END -%]
 [%- -%]>
 [%- IF select -%]
   <input type="button" onclick="[% select %]" value="?">
@@ -54,6 +56,7 @@
  [%- IF id       %] id="[%       HTML.escape(id)       %]"[% END -%]
  [%- IF style    %] style="[%    HTML.escape(style)    %]"[% END -%]
  [%- IF onChange %] onChange="[% HTML.escape(onChange) %]"[% END -%]
+ [%- IF readonly %] disabled[% END -%]
 [%- -%]>
   [%- IF show_empty %]
   <option value=""></option>
diff --git a/templates/webpages/is/_payments_de.html b/templates/webpages/is/_payments_de.html
new file mode 100644 (file)
index 0000000..51dee51
--- /dev/null
@@ -0,0 +1,88 @@
+[%- USE LxERP %]
+  <tr>
+   <td>
+    <table width="100%">
+     <tr class="listheading">
+[% IF is_type_credit_note %]
+      <th colspan="6" class="listheading">Zahlungsausgänge</th>
+[% ELSE %]
+      <th colspan="6" class="listheading">Zahlungseingänge</th>
+[%- END %]
+     </tr>
+
+
+     <tr>
+      <th>Datum</th>
+      <th>Beleg</th>
+      <th>Memo</th>
+      <th>Betrag</th>
+[% IF show_exchangerate %]
+      <th>Wechselkurs.</th>
+[% END %]
+      <th>Konto</th>
+     </tr>
+
+
+[% FOREACH i = paid_indices %]
+  [% SET datepaid      = 'datepaid_'      _ i %]
+  [% SET source        = 'source_'        _ i %]
+  [% SET memo          = 'memo_'          _ i %]
+  [% SET paid          = 'paid_'          _ i %]
+  [% SET selectAR_paid_ref = 'selectAR_paid_' _ i %]
+
+     <tr>
+
+    <td align="center">
+      <input id="datepaid_[% i %]" name="datepaid_[% i %]" size="11" title="[% dateformat %]" value="[% $datepaid %]">
+      <input type="button" name="datepaid_[% i %]" id="trigger_datepaid_[% i %]" value="?">
+     </td>
+     <td align=center><input name="source_[% i %]" size="11" value="[% $source %]"></td>
+     <td align="center"><input name="memo_[% i %]" size="11" value="[% $memo %]"></td>
+     <td align="center"><input name="paid_[% i %]" size="11" value="[% LxERP.format_amount($paid, 2, 1) %]"></td>
+[% IF show_exchangerate %]
+     <td align="center">
+  [% SET row.forex        = 'forex_'        _ i %]
+  [% SET row.exchangerate = 'exchangerate_' _ i %]
+  [% IF row.forex %]
+        <input type="hidden" name="exchangerate_[% i %]" value="[% LxERP.format_amount($exchangerate, 2) %]">
+        [% LxERP.format_amount(row.exchangerate, 2) %]
+  [% ELSE %]
+        <input name="exchangerate_[% i %]" size="10" value="[% LxERP.format_amount($exchangerate, 2, 1) %]">
+  [% END %]
+        <input type="hidden" name="forex_[% i %]" value="[% $forex %]">;
+     </td>
+[% END %]
+     <td align="center"><select name="AR_paid_$i">[% $selectAR_paid_ref %]</select></td>
+
+    </tr>
+[%#     push(@triggers, "datepaid_$i", "BL", "trigger_datepaid_$i"); %]
+    <script type='text/javascript'>
+     Calendar.setup({ inputField : "datepaid_[% i %]", ifFormat :"[% myconfig_jsc_dateformat %]", align : "TR", button : "trigger_datepaid_[% i %]" });
+     $('input[name="paid_[% i %]"]').blur(function(){ check_right_number_format(this) });
+     $('#datepaid_[% i %]').blur(function(){ check_right_date_format(this) });
+    </script>
+
+[% END # foreach %]
+
+    <tr>
+      <td></td>
+      <td></td>
+      <td align="center">Summe</td>
+      <td align="center">[% LxERP.foramt_amount(totalpaid, 2) | html %]</td>
+    </tr>
+    <tr>
+      <td></td>
+      <td></td>
+      <td align="center">Fehlbetrag</td>
+      <td align="center">[% LxERP.format_amount(paid_missing, 2) | html %]</td>
+    </tr>
+
+     <input type="hidden" name="paidaccounts" value="[% paidaccounts %]">
+     <input type="hidden" name="selectAR_paid" value="[% selectAR_paid %]">
+     <input type="hidden" name="oldinvtotal" value="[% rowcount %]">
+
+     <input type="hidden" name="oldtotalpaid" value="$totalpaid">
+    </table>
+
+    </td>
+  </tr>
diff --git a/templates/webpages/is/_payments_master.html b/templates/webpages/is/_payments_master.html
new file mode 100644 (file)
index 0000000..6cfdb57
--- /dev/null
@@ -0,0 +1,88 @@
+[%- USE LxERP %]
+  <tr>
+   <td>
+    <table width="100%">
+     <tr class="listheading">
+[% IF is_type_credit_note %]
+      <th colspan="6" class="listheading"><translate>Payments</translate></th>
+[% ELSE %]
+      <th colspan="6" class="listheading"><translate>Incoming Payments</translate></th>
+[%- END %]
+     </tr>
+
+
+     <tr>
+      <th><translate>Date</translate></th>
+      <th><translate>Source</translate></th>
+      <th><translate>Memo</translate></th>
+      <th><translate>Amount</translate></th>
+[% IF show_exchangerate %]
+      <th><translate>Exch</translate></th>
+[% END %]
+      <th><translate>Account</translate></th>
+     </tr>
+
+
+[% FOREACH i = paid_indices %]
+  [% SET datepaid      = 'datepaid_'      _ i %]
+  [% SET source        = 'source_'        _ i %]
+  [% SET memo          = 'memo_'          _ i %]
+  [% SET paid          = 'paid_'          _ i %]
+  [% SET selectAR_paid_ref = 'selectAR_paid_' _ i %]
+
+     <tr>
+
+    <td align="center">
+      <input id="datepaid_[% i %]" name="datepaid_[% i %]" size="11" title="[% dateformat %]" value="[% $datepaid %]">
+      <input type="button" name="datepaid_[% i %]" id="trigger_datepaid_[% i %]" value="?">
+     </td>
+     <td align=center><input name="source_[% i %]" size="11" value="[% $source %]"></td>
+     <td align="center"><input name="memo_[% i %]" size="11" value="[% $memo %]"></td>
+     <td align="center"><input name="paid_[% i %]" size="11" value="[% LxERP.format_amount($paid, 2, 1) %]"></td>
+[% IF show_exchangerate %]
+     <td align="center">
+  [% SET row.forex        = 'forex_'        _ i %]
+  [% SET row.exchangerate = 'exchangerate_' _ i %]
+  [% IF row.forex %]
+        <input type="hidden" name="exchangerate_[% i %]" value="[% LxERP.format_amount($exchangerate, 2) %]">
+        [% LxERP.format_amount(row.exchangerate, 2) %]
+  [% ELSE %]
+        <input name="exchangerate_[% i %]" size="10" value="[% LxERP.format_amount($exchangerate, 2, 1) %]">
+  [% END %]
+        <input type="hidden" name="forex_[% i %]" value="[% $forex %]">;
+     </td>
+[% END %]
+     <td align="center"><select name="AR_paid_$i">[% $selectAR_paid_ref %]</select></td>
+
+    </tr>
+[%#     push(@triggers, "datepaid_$i", "BL", "trigger_datepaid_$i"); %]
+    <script type='text/javascript'>
+     Calendar.setup({ inputField : "datepaid_[% i %]", ifFormat :"[% myconfig_jsc_dateformat %]", align : "TR", button : "trigger_datepaid_[% i %]" });
+     $('input[name="paid_[% i %]"]').blur(function(){ check_right_number_format(this) });
+     $('#datepaid_[% i %]').blur(function(){ check_right_date_format(this) });
+    </script>
+
+[% END # foreach %]
+
+    <tr>
+      <td></td>
+      <td></td>
+      <td align="center"><translate>Total</translate></td>
+      <td align="center">[% LxERP.foramt_amount(totalpaid, 2) | html %]</td>
+    </tr>
+    <tr>
+      <td></td>
+      <td></td>
+      <td align="center"><translate>Missing amount</translate></td>
+      <td align="center">[% LxERP.format_amount(paid_missing, 2) | html %]</td>
+    </tr>
+
+     <input type="hidden" name="paidaccounts" value="[% paidaccounts %]">
+     <input type="hidden" name="selectAR_paid" value="[% selectAR_paid %]">
+     <input type="hidden" name="oldinvtotal" value="[% rowcount %]">
+
+     <input type="hidden" name="oldtotalpaid" value="$totalpaid">
+    </table>
+
+    </td>
+  </tr>
diff --git a/templates/webpages/is/form_footer_de.html b/templates/webpages/is/form_footer_de.html
new file mode 100644 (file)
index 0000000..66283ec
--- /dev/null
@@ -0,0 +1,176 @@
+[%- USE HTML %]
+[%- USE LxERP %]
+  <tr>
+   <td>
+    <table width="100%">
+     <tr valign="bottom">
+      <td>
+       <table>
+        <tr>
+         <th align="left">Bemerkungen</th>
+         <th align="left">interne Bemerkungen</th>
+         <th align="right">Zahlungskonditionen</th>
+        </tr>
+        <tr valign="top">
+         <td>
+          <textarea name="notes" rows="[% rows %]" cols="26" wrap="soft">[% notes %]</textarea>
+         </td>
+         <td>
+          <textarea name="intnotes" rows="[% rows %]" cols="35" wrap="soft">[% intnotes %]</textarea>
+         </td>
+         <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'payment_id',
+                 style         = 'width: 250px',
+                 DATA          = payment_terms,
+                 id_key        = 'id',
+                 label_key     = 'description',
+                 show_empty    = 1
+                 allow_textbox = 0 -%]
+          <script type='text/javascript'>$('#payment_id').change(function(){
+            if (this.value) set_duedate(['payment_id__' + this.value, 'invdate__' + invdate.value],['duedate'])})
+          </script>
+         </td>
+        </tr>
+[%- IF id %]
+        <tr>
+          <td colspan="2">
+            [%- LxERP.format_string('Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
+                                     follow_ups.size, follow_ups_unfinished) | html
+            %]
+          <td>
+        </tr>
+[%- END %]
+       </table>
+      </td>
+      <td>
+       <table>
+        <tr>
+         <th  align=left>Ertrag</th>
+         <td>[% LxERP.format_amount(marge_total, 2, 0) %]</td>
+        </tr>
+        <tr>
+         <th  align=left>Ertrag prozentual</th>
+         <td>[% LxERP.format_amount(marge_percent, 2, 0) %] %</td>
+        </tr>
+        <input type=hidden name="marge_total" value="[% marge_total %]">
+        <input type=hidden name="marge_percent" value="[% marge_percent %]">
+       </table>
+      </td>
+      <td align="right">
+  [%- IF taxaccounts %]
+       <input name="taxincluded" class="checkbox" type="checkbox" [% IF taxincluded %]checked[% END %]>
+       <b>Steuer im Preis inbegriffen</b>
+       <br>
+       <br>
+  [%- END %]
+       <table>
+
+[%#- subtotal %]
+[%- UNLESS taxincluded %]
+        <tr>
+         <th align="right">Zwischensumme</th>
+         <td align="right">[% LxERP.format_amount(invsubtotal, 2) %]</td>
+       </tr>
+[%- END %]
+
+[%# tax %]
+[% FOREACH item = taxaccounts_array %]
+[% SET description_ref = item _ '_description' %]
+[% SET rate_ref        = item _ '_rate' %]
+[% SET total_ref       = item _ '_total' %]
+[% SET netto_ref       = item _ '_netto' %]
+       <tr>
+        <th align="right">Enthaltene [% $description_ref | html %]&nbsp;[% $rate_ref * 100 %]%</th>
+        <td align="right">[% LxERP.format_amount($total_ref, 2) %]</td>
+       </tr>
+  [%- IF taxincluded %]
+       <tr>
+        <th align="right">Nettobetrag</th>
+        <td align="right">[% LxERP.format_amount($netto_ref, 2) %]</td>
+       </tr>
+  [%- END %]
+[%- END %]
+
+        <tr>
+         <th align="right">Summe</th>
+         <td align="right">[% LxERP.format_amount(invtotal, 2) %]</td>
+        </tr>
+       </table>
+      </td>
+     </tr>
+    </table>
+   </td>
+  </tr>
+
+[% PROCESS 'webdav/_list_de.html' %]
+
+[% PROCESS 'is/_payments_de.html' %]
+
+  <tr>
+    <td><hr size="3" noshade></td>
+  </tr>
+  <tr>
+    <td>
+[% print_options %]
+    </td>
+  </tr>
+ </table>
+
+
+
+  [% IF id %]
+
+    <input class="submit" type="submit" accesskey="u" name="action" id="update_button" value="Erneuern">
+    <input class="submit" type="submit" name="action" value="Lieferadresse">
+    <input class="submit" type="submit" name="action" value="Drucken">
+    <input class="submit" type="submit" name="action" value="eMail">
+[% IF  show_storno %]
+    <input class="submit" type="submit" name="action" value="Storno">
+[% END %]
+    <input class="submit" type="submit" name="action" value="Zahlung buchen">
+    <input class="submit" type="submit" name="action" value="Als Vorlage verwenden">
+
+[% IF id && is_type_credit_note %]
+    <input class="submit" type="submit" name="action" value="Gutschrift">
+[% END %]
+[% IF show_delete %]
+    <input class="submit" type="submit" name="action" value="Löschen">
+[% END %]
+
+  [%- UNLESS locked %]
+       <input class="submit" type="submit" name="action" value="Auftrag">
+  [%- END %]
+
+    <input type="button" class="submit" onclick="follow_up_window()" value="Wiedervorlage">
+
+ [% ELSE # no id %]
+   [% UNLESS locked %]
+      <input class="submit" type="submit" name="action" id="update_button" value="Erneuern">
+      <input class="submit" type="submit" name="action" value="Lieferadresse">
+      <input class="submit" type="submit" name="action" value="Druckvorschau">
+      <input class="submit" type="submit" name="action" value="eMail">
+      <input class="submit" type="submit" name="action" value="Drucken und Buchen">
+      <input class="submit" type="submit" name="action" value="Buchen">
+      <input class="submit" type="submit" name="action" value="Entwurf speichern">
+   [%- END %]
+ [% END # id %]
+
+  [% IF id %]
+      [%#- button for saving history %]
+      <input type="button" class="submit" onclick="set_history_window([% id | html %]);" name="history" id="history" value="Historie">
+
+      <input type="submit" class="submit" name="action" value="als bezahlt markieren">
+  [% END %]
+
+<input type="hidden" name="rowcount" value="[% rowcount %]">
+<input type="hidden" name="callback" value="[% callback %]">
+<input type="hidden" name="draft_id" value="[% draft_id %]">
+<input type="hidden" name="draft_description" value="[% draft_description %]">
+<input type="hidden" name="customer_discount" value="[% customer_discount %]">
+
+</form>
+
+</body>
+
+</html>
diff --git a/templates/webpages/is/form_footer_master.html b/templates/webpages/is/form_footer_master.html
new file mode 100644 (file)
index 0000000..a3d53fd
--- /dev/null
@@ -0,0 +1,176 @@
+[%- USE HTML %]
+[%- USE LxERP %]
+  <tr>
+   <td>
+    <table width="100%">
+     <tr valign="bottom">
+      <td>
+       <table>
+        <tr>
+         <th align="left"><translate>Notes</translate></th>
+         <th align="left"><translate>Internal Notes</translate></th>
+         <th align="right"><translate>Payment Terms</translate></th>
+        </tr>
+        <tr valign="top">
+         <td>
+          <textarea name="notes" rows="[% rows %]" cols="26" wrap="soft">[% notes %]</textarea>
+         </td>
+         <td>
+          <textarea name="intnotes" rows="[% rows %]" cols="35" wrap="soft">[% intnotes %]</textarea>
+         </td>
+         <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'payment_id',
+                 style         = 'width: 250px',
+                 DATA          = payment_terms,
+                 id_key        = 'id',
+                 label_key     = 'description',
+                 show_empty    = 1
+                 allow_textbox = 0 -%]
+          <script type='text/javascript'>$('#payment_id').change(function(){
+            if (this.value) set_duedate(['payment_id__' + this.value, 'invdate__' + invdate.value],['duedate'])})
+          </script>
+         </td>
+        </tr>
+[%- IF id %]
+        <tr>
+          <td colspan="2">
+            [%- LxERP.format_string('<translate>There are #1 unfinished follow-ups of which #2 are due.</translate>',
+                                     follow_ups.size, follow_ups_unfinished) | html
+            %]
+          <td>
+        </tr>
+[%- END %]
+       </table>
+      </td>
+      <td>
+       <table>
+        <tr>
+         <th  align=left><translate>Ertrag</translate></th>
+         <td>[% LxERP.format_amount(marge_total, 2, 0) %]</td>
+        </tr>
+        <tr>
+         <th  align=left><translate>Ertrag prozentual</translate></th>
+         <td>[% LxERP.format_amount(marge_percent, 2, 0) %] %</td>
+        </tr>
+        <input type=hidden name="marge_total" value="[% marge_total %]">
+        <input type=hidden name="marge_percent" value="[% marge_percent %]">
+       </table>
+      </td>
+      <td align="right">
+  [%- IF taxaccounts %]
+       <input name="taxincluded" class="checkbox" type="checkbox" [% IF taxincluded %]checked[% END %]>
+       <b><translate>Tax Included</translate></b>
+       <br>
+       <br>
+  [%- END %]
+       <table>
+
+[%#- subtotal %]
+[%- UNLESS taxincluded %]
+        <tr>
+         <th align="right"><translate>Subtotal</translate></th>
+         <td align="right">[% LxERP.format_amount(invsubtotal, 2) %]</td>
+       </tr>
+[%- END %]
+
+[%# tax %]
+[% FOREACH item = taxaccounts_array %]
+[% SET description_ref = item _ '_description' %]
+[% SET rate_ref        = item _ '_rate' %]
+[% SET total_ref       = item _ '_total' %]
+[% SET netto_ref       = item _ '_netto' %]
+       <tr>
+        <th align="right">Enthaltene [% $description_ref | html %]&nbsp;[% $rate_ref * 100 %]%</th>
+        <td align="right">[% LxERP.format_amount($total_ref, 2) %]</td>
+       </tr>
+  [%- IF taxincluded %]
+       <tr>
+        <th align="right">Nettobetrag</th>
+        <td align="right">[% LxERP.format_amount($netto_ref, 2) %]</td>
+       </tr>
+  [%- END %]
+[%- END %]
+
+        <tr>
+         <th align="right"><translate>Total</translate></th>
+         <td align="right">[% LxERP.format_amount(invtotal, 2) %]</td>
+        </tr>
+       </table>
+      </td>
+     </tr>
+    </table>
+   </td>
+  </tr>
+
+[% PROCESS 'webdav/_list_<translate>master</translate>.html' %]
+
+[% PROCESS 'is/_payments_<translate>master</translate>.html' %]
+
+  <tr>
+    <td><hr size="3" noshade></td>
+  </tr>
+  <tr>
+    <td>
+[% print_options %]
+    </td>
+  </tr>
+ </table>
+
+
+
+  [% IF id %]
+
+    <input class="submit" type="submit" accesskey="u" name="action" id="update_button" value="<translate>Update</translate>">
+    <input class="submit" type="submit" name="action" value="<translate>Ship to</translate>">
+    <input class="submit" type="submit" name="action" value="<translate>Print</translate>">
+    <input class="submit" type="submit" name="action" value="<translate>E-mail</translate>">
+[% IF  show_storno %]
+    <input class="submit" type="submit" name="action" value="<translate>Storno</translate>">
+[% END %]
+    <input class="submit" type="submit" name="action" value="<translate>Post Payment</translate>">
+    <input class="submit" type="submit" name="action" value="<translate>Use As Template</translate>">
+
+[% IF id && is_type_credit_note %]
+    <input class="submit" type="submit" name="action" value="<translate>Credit Note</translate>">
+[% END %]
+[% IF show_delete %]
+    <input class="submit" type="submit" name="action" value="<translate>Delete</translate>">
+[% END %]
+
+  [%- UNLESS locked %]
+       <input class="submit" type="submit" name="action" value="<translate>Order</translate>">
+  [%- END %]
+
+    <input type="button" class="submit" onclick="follow_up_window()" value="<translate>Follow-Up</translate>">
+
+ [% ELSE # no id %]
+   [% UNLESS locked %]
+      <input class="submit" type="submit" name="action" id="update_button" value="<translate>Update</translate>">
+      <input class="submit" type="submit" name="action" value="<translate>Ship to</translate>">
+      <input class="submit" type="submit" name="action" value="<translate>Preview</translate>">
+      <input class="submit" type="submit" name="action" value="<translate>E-mail</translate>">
+      <input class="submit" type="submit" name="action" value="<translate>Print and Post</translate>">
+      <input class="submit" type="submit" name="action" value="<translate>Post</translate>">
+      <input class="submit" type="submit" name="action" value="<translate>Save Draft</translate>">
+   [%- END %]
+ [% END # id %]
+
+  [% IF id %]
+      [%#- button for saving history %]
+      <input type="button" class="submit" onclick="set_history_window([% id | html %]);" name="history" id="history" value="<translate>history</translate>">
+
+      <input type="submit" class="submit" name="action" value="<translate>mark as paid</translate>">
+  [% END %]
+
+<input type="hidden" name="rowcount" value="[% rowcount %]">
+<input type="hidden" name="callback" value="[% callback %]">
+<input type="hidden" name="draft_id" value="[% draft_id %]">
+<input type="hidden" name="draft_description" value="[% draft_description %]">
+<input type="hidden" name="customer_discount" value="[% customer_discount %]">
+
+</form>
+
+</body>
+
+</html>
diff --git a/templates/webpages/is/form_header_de.html b/templates/webpages/is/form_header_de.html
new file mode 100644 (file)
index 0000000..6cab7ad
--- /dev/null
@@ -0,0 +1,311 @@
+[%- USE HTML %]
+[%- USE LxERP %]
+[%- SET follow_up_trans_info = invnumber _ ' (' _ customer_name _ ')' %]
+<body>
+<script type="text/javascript" src="js/common.js"></script>
+<script type="text/javascript" src="js/delivery_customer_selection.js"></script>
+<script type="text/javascript" src="js/vendor_selection.js"></script>
+<script type="text/javascript" src="js/calculate_qty.js"></script>
+<script type="text/javascript" src="js/follow_up.js"></script>
+
+<form method="post" name="invoice" action="[% script %]">
+
+<p>[% saved_message %]</p>
+
+[%- FOREACH key = HIDDENS %]
+<input type="hidden" name="[% HTML.escape(key) %]" value="[% HTML.escape($key)  %]">
+[%- END %]
+<input type="hidden" name="follow_up_trans_id_1" value="[% id %]">
+<input type="hidden" name="follow_up_trans_type_1" value="sales_invoice">
+<input type="hidden" name="follow_up_trans_info_1" value="[% HTML.escape(follow_up_trans_info) %]">
+<input type="hidden" name="follow_up_rowcount" value="1">
+
+<input type="hidden" name="lizenzen" value="[% lizenzen %]">
+
+<p><div class="listtop" width="100%">[% title %]</div></p>
+
+<table width="100%">
+  <tr>
+    <td valign="top">
+      <table>
+        <tr>
+          <th align="right">Kunde</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'customer',
+                 style         = 'width: 250px',
+                 DATA          = ALL_CUSTOMERS,
+                 id_sub        = 'vc_keys',
+                 label_key     = 'name',
+                 select        = vc_select,
+                 limit         = vclimit,
+                 allow_textbox = 1,
+                 onChange      = "document.getElementById('update_button').click();" -%]
+            <input type="button" value="D" onclick="show_vc_details('[% HTML.escape(vc) %]')">
+          </td>
+          <input type="hidden" name="customer_klass" value="[% HTML.escape(customer_klass) %]">
+          <input type="hidden" name="customer_id" value="[% HTML.escape(customer_id) %]">
+          <input type="hidden" name="oldcustomer" value="[% HTML.escape(oldcustomer) %]">
+          <input type="hidden" name="selectcustomer" value="[% HTML.escape(selectcustomer) %]">
+        </tr>
+[%- IF ALL_CONTACTS.size %]
+        <tr>
+          <th align="right">Ansprechpartner</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'cp_id',
+                 style      = 'width: 250px',
+                 DATA       = ALL_CONTACTS,
+                 id_key     = 'cp_id',
+                 label_sub  = 'contact_labels',
+                 show_empty = 1 -%]
+          </td>
+        </tr>
+[%- END %]
+[%- IF ALL_SHIPTO.size %]
+        <tr>
+          <th align="right">Lieferadresse</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'shipto_id',
+                 style      = 'width: 250px',
+                 DATA       = ALL_SHIPTO,
+                 id_key     = 'shipto_id',
+                 label_sub  = 'shipto_labels',
+                 show_empty = 1,
+                 onChange   = "document.getElementById('update_button').click();" -%]
+          </td>
+        </tr>
+[%- END %]
+        <tr>
+          <td align="right">Kreditlimit</td>
+          <td>
+            [% LxERP.format_amount(creditlimit, 0, '0') %]; Rest
+            <span class="plus[% IF is_credit_remaining_negativ %]0[% ELSE %]1[% END %]">[% LxERP.format_amount(creditremaining,0 ,'0') %]</span>
+          </td>
+        </tr>
+[%- IF max_dunning_level %]
+        <tr>
+          <th align="right">höchste Mahnstufe:</th>
+          <td>
+            <b>[% max_dunning_level %]</b>; gemahnter Betrag: <b>[% LxERP.format_amount(dunning_amount,2) %]</b>
+          </td>
+        </tr>
+[%- END %]
+[%- IF business %]
+        <tr>
+          <th align="right">Kundentyp</th>
+          <td>[% business %]; Rabatt [% LxERP.format_amount(tradediscount * 100) %] %</td>
+        </tr>
+[%- END %]
+        <tr>
+          <th align="right" nowrap>Buchen auf</th>
+          <td colspan="3"><select name="AR" style="width:250px;">[% selectAR %]</select></td>
+          <input type="hidden" name="selectAR" value="[% selectAR %]">
+        </tr>
+        <tr>
+          <th align="right">Steuersatz</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'taxzone_id'
+                 stype      = '250px'
+                 DATA       = ALL_TAXZONES
+                 id_key     = 'id'
+                 readonly   = (id ? 1 : 0)
+                 label_key  = 'description' -%]
+          </td>
+        </tr>
+[%- IF all_departments %]
+        <tr>
+          <th align="right" nowrap>Abteilung</th>
+          <td colspan="3">
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'department_id',
+                 style      = 'width: 250px',
+                 DATA       = all_departments,
+                 id_key     = 'id',
+                 label_sub  = 'department_labels',
+                 show_empty = 1 -%]
+          </td>
+        </tr>
+[%- END %]
+[%- IF currencies %]
+        <tr>
+          <th align="right">Währung</th>
+          <td>[% currencies %]</td>
+        </tr>
+[%- END %]
+        <input type="hidden" name="fxgain_accno" value="[% fxgain_accno %]">
+        <input type="hidden" name="fxloss_accno" value="[% fxloss_accno %]">
+[%- IF show_exchangerate %]
+        <tr>
+          <th align="right">Wechselkurs</th>
+          <td>
+           [%- IF forex %]
+            [% LxERP.format_amount(exchangerate, 2) %]
+           [%- ELSE %]
+            <input name="exchangerate" size="10" value="[% HTML.escape(LxERP.format_amount(exchangerate)) %]">
+           [%- END %]
+          </td>
+        </tr>
+[%- END %]
+        <tr>
+          <th align="right" nowrap>Versandort</th>
+          <td colspan="3"><input size='35' name="shippingpoint" value="[% HTML.escape(shippingpoint) %]"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Transportmittel</th>
+          <td colspan="3"><input size='35' name="shipvia" value="[% HTML.escape(shipvia) %]"></td>
+        </tr>
+        <tr>
+          <th align="right">Vorgangsbezeichnung</th>
+          <td colspan="3"><input size='35' name="transaction_description" value="[% HTML.escape(transaction_description) %]"></td>
+        </tr>
+      </table>
+    </td>
+    <td align="right" valign="top">
+      <table>
+        <tr>
+          <th align="right">Bearbeiter</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'employee_id',
+                 DATA       = ALL_EMPLOYEES,
+                 id_key     = 'id',
+                 label_sub  = 'sales_employee_labels' -%]
+          </td>
+        </tr>
+[%- IF ALL_SALESMEN.size %]
+        <tr>
+          <th align="right">Verkäufer/in</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'salesman_id',
+                 default    = salesman_id ? salesman_id : employee_id,
+                 DATA       = ALL_SALESMEN,
+                 id_key     = 'id',
+                 label_sub  = 'sales_employee_labels' -%]
+          </td>
+        </tr>
+[%- END %]
+
+[%- IF is_type_credit_note %]
+        <tr>
+          <th align="right" nowrap>Gutschriftnummer</th>
+          <td colspan="3"><input size='11' name="invnumber" value="[% HTML.escape(invnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right">Gutschriftdatum</th>
+          <td nowrap>
+            <input name="invdate" id="invdate" size="11" title="[% dateformat %]" value="[% invdate %]" onBlur="check_right_date_format(this)">
+            <input type="button" name="invdate_button" id="trigger1" value="?">
+          </td>
+        </tr>
+[%- ELSE %]
+        <tr>
+          <th align="right" nowrap>Rechnungsnummer</th>
+          <td colspan="3"><input size='11' name="invnumber" value="[% HTML.escape(invnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right">Rechnungsdatum</th>
+          <td nowrap>
+            <input name="invdate" id="invdate" size="11" title="[% dateformat %]" value="[% invdate %]" onBlur="check_right_date_format(this)">
+            <input type="button" name="invdate_button" id="trigger1" value="?">
+          </td>
+        </tr>
+        <tr>
+          <th align="right">Fälligkeitsdatum</th>
+          <td width="13">
+            <input name="duedate" id="duedate" size="11" title="[% dateformat %]" value="[% duedate %]" onBlur="check_right_date_format(this)">
+            <input type="button" name="duedate_button" id="trigger2" value="?">
+          </td>
+        </tr>
+        <tr>
+        <th align="right" nowrap>Lieferscheinnummer</th>
+          <td colspan="3"><input size='11' name="donumber" value="[% HTML.escape(donumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right">Lieferdatum</th>
+            <td width="13">
+              <input name="deliverydate" id="deliverydate" size="11" title="[% dateformat %]" value="[% deliverydate %]" onBlur="check_right_date_format(this)">
+              <input type="button" name="deliverydate_button" id="trigger3" value="?">
+            </td>
+        </tr>
+[%- END %]
+
+        <tr>
+          <th align="right" nowrap>Auftragsnummer</th>
+          <td colspan="3"><input size='11' name="ordnumber" value="[% HTML.escape(ordnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Auftragsdatum</th>
+          <td><input name="orddate" id="orddate" size="11" title="[% dateformat %]" value="[% orddate %]" onBlur="check_right_date_format(this)">
+          <input type="button" name="b_orddate" id="trigger_orddate" value="?"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Angebotsnummer</th>
+          <td colspan="3"><input size='11' name="quonumber" value="[% HTML.escape(quonumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Angebotsdatum</th>
+          <td><input name="quodate" id="quodate" size="11" title="[% dateformat %]" value="[% quodate %]" onBlur="check_right_date_format(this)">
+           <input type="button" name="b_quodate" id="trigger_quodate" value="?"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Bestellnummer des Kunden</th>
+          <td colspan="3"><input size='11' name="cusordnumber" value="[% HTML.escape(cusordnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Projektnummer</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'globalproject_id',
+                 DATA       = ALL_PROJECTS,
+                 id_key     = 'id',
+                 label_key  = 'projectnumber',
+                 show_empty = 1,
+                 onChange   = "document.getElementById('update_button').click();" -%]
+          </td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+    </td>
+  </tr>
+  <tr>
+    <td>
+    </td>
+  </tr>
+  <script type="text/javascript" src="js/show_form_details.js"></script>
+  <script type="text/javascript" src="js/show_vc_details.js"></script>
+  <script type="text/javascript" src="js/show_history.js"></script>
+  <script type="text/javascript" src="js/jquery.js"></script>
+  <script type="text/javascript">
+   <!--
+     Calendar.setup({ inputField : "invdate",      ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger1" });
+[% IF !is_type_credit_note %]
+     Calendar.setup({ inputField : "duedate",      ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger2" });
+     Calendar.setup({ inputField : "deliverydate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger3" });
+[% END %]
+     Calendar.setup({ inputField : "orddate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger_orddate" });
+     Calendar.setup({ inputField : "quodate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger_quodate" });
+     $('document').ready(function(){
+[% IF resubmit && is_format_html %]
+       window.open('about:blank','Beleg');
+       document.invoice.target = 'Beleg';
+       document.invoice.submit();
+[% ELSIF resubmit %]
+       document.invoice.submit();
+[% ELSIF creditwarning != '' %]
+       alert('Kreditlimit überschritten!');
+[% ELSE %]
+       focus();
+[% END %]
+       setupDateFormat('[% dateformat %]', 'Falsches Datumsformat!');
+       setupPoints('[% numberformat %]', 'Falsches Format');
+     });
+   //-->
+  </script>
+
+  <input type="hidden" name="webdav" value="[% webdav %]">
diff --git a/templates/webpages/is/form_header_master.html b/templates/webpages/is/form_header_master.html
new file mode 100644 (file)
index 0000000..3b9d87c
--- /dev/null
@@ -0,0 +1,311 @@
+[%- USE HTML %]
+[%- USE LxERP %]
+[%- SET follow_up_trans_info = invnumber _ ' (' _ customer_name _ ')' %]
+<body>
+<script type="text/javascript" src="js/common.js"></script>
+<script type="text/javascript" src="js/delivery_customer_selection.js"></script>
+<script type="text/javascript" src="js/vendor_selection.js"></script>
+<script type="text/javascript" src="js/calculate_qty.js"></script>
+<script type="text/javascript" src="js/follow_up.js"></script>
+
+<form method="post" name="invoice" action="[% script %]">
+
+<p>[% saved_message %]</p>
+
+[%- FOREACH key = HIDDENS %]
+<input type="hidden" name="[% HTML.escape(key) %]" value="[% HTML.escape($key)  %]">
+[%- END %]
+<input type="hidden" name="follow_up_trans_id_1" value="[% id %]">
+<input type="hidden" name="follow_up_trans_type_1" value="sales_invoice">
+<input type="hidden" name="follow_up_trans_info_1" value="[% HTML.escape(follow_up_trans_info) %]">
+<input type="hidden" name="follow_up_rowcount" value="1">
+
+<input type="hidden" name="lizenzen" value="[% lizenzen %]">
+
+<p><div class="listtop" width="100%">[% title %]</div></p>
+
+<table width="100%">
+  <tr>
+    <td valign="top">
+      <table>
+        <tr>
+          <th align="right"><translate>Customer</translate></th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'customer',
+                 style         = 'width: 250px',
+                 DATA          = ALL_CUSTOMERS,
+                 id_sub        = 'vc_keys',
+                 label_key     = 'name',
+                 select        = vc_select,
+                 limit         = vclimit,
+                 allow_textbox = 1,
+                 onChange      = "document.getElementById('update_button').click();" -%]
+            <input type="button" value="<translate>Details (one letter abbreviation)</translate>" onclick="show_vc_details('[% HTML.escape(vc) %]')">
+          </td>
+          <input type="hidden" name="customer_klass" value="[% HTML.escape(customer_klass) %]">
+          <input type="hidden" name="customer_id" value="[% HTML.escape(customer_id) %]">
+          <input type="hidden" name="oldcustomer" value="[% HTML.escape(oldcustomer) %]">
+          <input type="hidden" name="selectcustomer" value="[% HTML.escape(selectcustomer) %]">
+        </tr>
+[%- IF ALL_CONTACTS.size %]
+        <tr>
+          <th align="right"><translate>Contact Person</translate></th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'cp_id',
+                 style      = 'width: 250px',
+                 DATA       = ALL_CONTACTS,
+                 id_key     = 'cp_id',
+                 label_sub  = 'contact_labels',
+                 show_empty = 1 -%]
+          </td>
+        </tr>
+[%- END %]
+[%- IF ALL_SHIPTO.size %]
+        <tr>
+          <th align="right"><translate>Shipping Address</translate></th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'shipto_id',
+                 style      = 'width: 250px',
+                 DATA       = ALL_SHIPTO,
+                 id_key     = 'shipto_id',
+                 label_sub  = 'shipto_labels',
+                 show_empty = 1,
+                 onChange   = "document.getElementById('update_button').click();" -%]
+          </td>
+        </tr>
+[%- END %]
+        <tr>
+          <td align="right"><translate>Credit Limit</translate></td>
+          <td>
+            [% LxERP.format_amount(creditlimit, 0, '0') %]; <translate>Remaining</translate>
+            <span class="plus[% IF is_credit_remaining_negativ %]0[% ELSE %]1[% END %]">[% LxERP.format_amount(creditremaining,0 ,'0') %]</span>
+          </td>
+        </tr>
+[%- IF max_dunning_level %]
+        <tr>
+          <th align="right"><translate>Max. Dunning Level</translate>:</th>
+          <td>
+            <b>[% max_dunning_level %]</b>; <translate>Dunning Amount</translate>: <b>[% LxERP.format_amount(dunning_amount,2) %]</b>
+          </td>
+        </tr>
+[%- END %]
+[%- IF business %]
+        <tr>
+          <th align="right"><translate>Customer type</translate></th>
+          <td>[% business %]; <translate>Trade Discount</translate> [% LxERP.format_amount(tradediscount * 100) %] %</td>
+        </tr>
+[%- END %]
+        <tr>
+          <th align="right" nowrap><translate>Record in</translate></th>
+          <td colspan="3"><select name="AR" style="width:250px;">[% selectAR %]</select></td>
+          <input type="hidden" name="selectAR" value="[% selectAR %]">
+        </tr>
+        <tr>
+          <th align="right"><translate>Steuersatz</translate></th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'taxzone_id'
+                 stype      = '250px'
+                 DATA       = ALL_TAXZONES
+                 id_key     = 'id'
+                 readonly   = (id ? 1 : 0)
+                 label_key  = 'description' -%]
+          </td>
+        </tr>
+[%- IF all_departments %]
+        <tr>
+          <th align="right" nowrap><translate>Department</translate></th>
+          <td colspan="3">
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'department_id',
+                 style      = 'width: 250px',
+                 DATA       = all_departments,
+                 id_key     = 'id',
+                 label_sub  = 'department_labels',
+                 show_empty = 1 -%]
+          </td>
+        </tr>
+[%- END %]
+[%- IF currencies %]
+        <tr>
+          <th align="right"><translate>Currency</translate></th>
+          <td>[% currencies %]</td>
+        </tr>
+[%- END %]
+        <input type="hidden" name="fxgain_accno" value="[% fxgain_accno %]">
+        <input type="hidden" name="fxloss_accno" value="[% fxloss_accno %]">
+[%- IF show_exchangerate %]
+        <tr>
+          <th align="right"><translate>Exchangerate</translate></th>
+          <td>
+           [%- IF forex %]
+            [% LxERP.format_amount(exchangerate, 2) %]
+           [%- ELSE %]
+            <input name="exchangerate" size="10" value="[% HTML.escape(LxERP.format_amount(exchangerate)) %]">
+           [%- END %]
+          </td>
+        </tr>
+[%- END %]
+        <tr>
+          <th align="right" nowrap><translate>Shipping Point</translate></th>
+          <td colspan="3"><input size='35' name="shippingpoint" value="[% HTML.escape(shippingpoint) %]"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap><translate>Ship via</translate></th>
+          <td colspan="3"><input size='35' name="shipvia" value="[% HTML.escape(shipvia) %]"></td>
+        </tr>
+        <tr>
+          <th align="right"><translate>Transaction description</translate></th>
+          <td colspan="3"><input size='35' name="transaction_description" value="[% HTML.escape(transaction_description) %]"></td>
+        </tr>
+      </table>
+    </td>
+    <td align="right" valign="top">
+      <table>
+        <tr>
+          <th align="right"><translate>Employee</translate></th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'employee_id',
+                 DATA       = ALL_EMPLOYEES,
+                 id_key     = 'id',
+                 label_sub  = 'sales_employee_labels' -%]
+          </td>
+        </tr>
+[%- IF ALL_SALESMEN.size %]
+        <tr>
+          <th align="right"><translate>Salesman</translate></th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'salesman_id',
+                 default    = salesman_id ? salesman_id : employee_id,
+                 DATA       = ALL_SALESMEN,
+                 id_key     = 'id',
+                 label_sub  = 'sales_employee_labels' -%]
+          </td>
+        </tr>
+[%- END %]
+
+[%- IF is_type_credit_note %]
+        <tr>
+          <th align="right" nowrap><translate>Credit Note Number</translate></th>
+          <td colspan="3"><input size='11' name="invnumber" value="[% HTML.escape(invnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right"><translate>Credit Note Date</translate></th>
+          <td nowrap>
+            <input name="invdate" id="invdate" size="11" title="[% dateformat %]" value="[% invdate %]" onBlur="check_right_date_format(this)">
+            <input type="button" name="invdate_button" id="trigger1" value="<translate>button</translate>">
+          </td>
+        </tr>
+[%- ELSE %]
+        <tr>
+          <th align="right" nowrap><translate>Invoice Number</translate></th>
+          <td colspan="3"><input size='11' name="invnumber" value="[% HTML.escape(invnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right"><translate>Invoice Date</translate></th>
+          <td nowrap>
+            <input name="invdate" id="invdate" size="11" title="[% dateformat %]" value="[% invdate %]" onBlur="check_right_date_format(this)">
+            <input type="button" name="invdate_button" id="trigger1" value="<translate>button</translate>">
+          </td>
+        </tr>
+        <tr>
+          <th align="right"><translate>Due Date</translate></th>
+          <td width="13">
+            <input name="duedate" id="duedate" size="11" title="[% dateformat %]" value="[% duedate %]" onBlur="check_right_date_format(this)">
+            <input type="button" name="duedate_button" id="trigger2" value="<translate>button</translate>">
+          </td>
+        </tr>
+        <tr>
+        <th align="right" nowrap><translate>Delivery Order Number</translate></th>
+          <td colspan="3"><input size='11' name="donumber" value="[% HTML.escape(donumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right"><translate>Delivery Date</translate></th>
+            <td width="13">
+              <input name="deliverydate" id="deliverydate" size="11" title="[% dateformat %]" value="[% deliverydate %]" onBlur="check_right_date_format(this)">
+              <input type="button" name="deliverydate_button" id="trigger3" value="<translate>button</translate>">
+            </td>
+        </tr>
+[%- END %]
+
+        <tr>
+          <th align="right" nowrap><translate>Order Number</translate></th>
+          <td colspan="3"><input size='11' name="ordnumber" value="[% HTML.escape(ordnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap><translate>Order Date</translate></th>
+          <td><input name="orddate" id="orddate" size="11" title="[% dateformat %]" value="[% orddate %]" onBlur="check_right_date_format(this)">
+          <input type="button" name="b_orddate" id="trigger_orddate" value="?"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap><translate>Quotation Number</translate></th>
+          <td colspan="3"><input size='11' name="quonumber" value="[% HTML.escape(quonumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap><translate>Quotation Date</translate></th>
+          <td><input name="quodate" id="quodate" size="11" title="[% dateformat %]" value="[% quodate %]" onBlur="check_right_date_format(this)">
+           <input type="button" name="b_quodate" id="trigger_quodate" value="?"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap><translate>Customer Order Number</translate></th>
+          <td colspan="3"><input size='11' name="cusordnumber" value="[% HTML.escape(cusordnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap><translate>Project Number</translate></th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'globalproject_id',
+                 DATA       = ALL_PROJECTS,
+                 id_key     = 'id',
+                 label_key  = 'projectnumber',
+                 show_empty = 1,
+                 onChange   = "document.getElementById('update_button').click();" -%]
+          </td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+    </td>
+  </tr>
+  <tr>
+    <td>
+    </td>
+  </tr>
+  <script type="text/javascript" src="js/show_form_details.js"></script>
+  <script type="text/javascript" src="js/show_vc_details.js"></script>
+  <script type="text/javascript" src="js/show_history.js"></script>
+  <script type="text/javascript" src="js/jquery.js"></script>
+  <script type="text/javascript">
+   <!--
+     Calendar.setup({ inputField : "invdate",      ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger1" });
+[% IF !is_type_credit_note %]
+     Calendar.setup({ inputField : "duedate",      ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger2" });
+     Calendar.setup({ inputField : "deliverydate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger3" });
+[% END %]
+     Calendar.setup({ inputField : "orddate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger_orddate" });
+     Calendar.setup({ inputField : "quodate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger_quodate" });
+     $('document').ready(function(){
+[% IF resubmit && is_format_html %]
+       window.open('about:blank','Beleg');
+       document.invoice.target = 'Beleg';
+       document.invoice.submit();
+[% ELSIF resubmit %]
+       document.invoice.submit();
+[% ELSIF creditwarning != '' %]
+       alert('<translate>Credit Limit exceeded!!!</translate>');
+[% ELSE %]
+       focus();
+[% END %]
+       setupDateFormat('[% dateformat %]', '<translate>Falsches Datumsformat!</translate>');
+       setupPoints('[% numberformat %]', '<translate>wrongformat</translate>');
+     });
+   //-->
+  </script>
+
+  <input type="hidden" name="webdav" value="[% webdav %]">
index 0247b59c64c07117d4f7cc258ef3bbda406ad27f..e2c2e96cc65922fb0bedf55fc68214319653f03f 100644 (file)
@@ -28,7 +28,7 @@
             </tr>
       [%- IF id && num_follow_ups %]
       <tr>
-       <td colspan="2">[% LxERP.format_string('Es gibt #1 Wiedervorlage(n), von denen #2 f&auml;llig ist/sind.', num_follow_ups, num_due_follow_ups) %]</td>
+       <td colspan="2">[% LxERP.format_string('Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.', num_follow_ups, num_due_follow_ups) %]</td>
       </tr>
       [%- END %]
       </table>
@@ -91,7 +91,7 @@
       <td align="left" width="30%"><b>Dateiname</b></td>
       <td align="left" width="70%"><b>Webdavlink</b></td>
      </tr>
- [%- FOREACH file=WEBDAV %]
+ [%- FOREACH file = WEBDAV %]
       <tr>
         <td align="left">[% HTML.escape(file.name) %]</td>
         <td align="left"><a href="[% file.link %]">[% HTML.escape(file.type) %]</a></td>
index c77c993d219a02fe0270d7cdea89a2d05f34a00f..9de0939191ddef0803675336ed2b52adfc292c0e 100644 (file)
@@ -91,7 +91,7 @@
       <td align="left" width="30%"><b>Dateiname</b></td>
       <td align="left" width="70%"><b>Webdavlink</b></td>
      </tr>
- [%- FOREACH file=WEBDAV %]
+ [%- FOREACH file = WEBDAV %]
       <tr>
         <td align="left">[% HTML.escape(file.name) %]</td>
         <td align="left"><a href="[% file.link %]">[% HTML.escape(file.type) %]</a></td>
diff --git a/templates/webpages/webdav/_list_de.html b/templates/webpages/webdav/_list_de.html
new file mode 100644 (file)
index 0000000..3432fc6
--- /dev/null
@@ -0,0 +1,22 @@
+
+[%- IF webdav %]
+  <tr>
+   <td><hr size="3" noshade></td>
+  </tr>
+  <tr>
+   <th class="listtop" align="left">Dokumente im Webdav-Repository</th>
+  </tr>
+   <table width="100%">
+    <tr>
+     <td align="left" width="30%"><b>Dateiname</b></td>
+     <td align="left" width="70%"><b>Webdavlink</b></td>
+    </tr>
+ [%- FOREACH file = WEBDAV %]
+    <tr>
+     <td align="left">[% file.name %]</td>
+     <td align="left"><a href="[% file.link %]">[% file.type %]</a></td>
+    </tr>
+ [%- END %]
+   </table>
+  </tr>
+[% END %]
diff --git a/templates/webpages/webdav/_list_master.html b/templates/webpages/webdav/_list_master.html
new file mode 100644 (file)
index 0000000..3432fc6
--- /dev/null
@@ -0,0 +1,22 @@
+
+[%- IF webdav %]
+  <tr>
+   <td><hr size="3" noshade></td>
+  </tr>
+  <tr>
+   <th class="listtop" align="left">Dokumente im Webdav-Repository</th>
+  </tr>
+   <table width="100%">
+    <tr>
+     <td align="left" width="30%"><b>Dateiname</b></td>
+     <td align="left" width="70%"><b>Webdavlink</b></td>
+    </tr>
+ [%- FOREACH file = WEBDAV %]
+    <tr>
+     <td align="left">[% file.name %]</td>
+     <td align="left"><a href="[% file.link %]">[% file.type %]</a></td>
+    </tr>
+ [%- END %]
+   </table>
+  </tr>
+[% END %]