Um die Benutzung des Template Systems mal ein wenig zu foerdern.
authorSven Schöling <s.schoeling@linet-services.de>
Thu, 1 Nov 2007 21:05:28 +0000 (21:05 +0000)
committerSven Schöling <s.schoeling@linet-services.de>
Thu, 1 Nov 2007 21:05:28 +0000 (21:05 +0000)
Die bin/mozilla/oe.pl noch einmal umgeschrieben, so dass jetzt noch mehr Funktionen ins Frontend ausgelagert sind.

Ein neues Highlight ist die template/generic/multibox.html, die es erlaubt aus wenigen Steuerkommandos ein HTML-Eingabefeld zu erstellen, was bei kleinen Datenmengen als Dropdownbox erscheint, udn bei grossen asl Textfeld, mit dazugehörigem Popup-Button, um eine Auswahlliste aufzumachen. Saemtliche Funktionen lassen sich ueber Perlfunktionsreferenzen wieder zurück ins Backend leiten, und dort wieder mit komplexer Logik füllen. Dokumentation ist im Template direkt enthalten.

Die Customer/Vendor Eingabe macht auch gleich Gebrauch davon und erzeugt bei zu grosser Anzahl ein Textfeld, und daneben einen Suchbutton, der die passenden Kunden in einer Liste anzeigt.

Der "Kundendetails"-Button wurde von "?" umbenannt in "D" (immernoch gruselig)

Auf Wunsch von Moritz habe ich die display_row von bin/mozilla/oe.pl wieder verlagert in die bin/mozilla/io.pl, und dafuer die Version in bin/mozilla/invoice_io.pl deaktiviert.

41 files changed:
SL/Common.pm
SL/Form.pm
SL/Template/Plugin/LxERP.pm
bin/mozilla/common.pl
bin/mozilla/invoice_io.pl
bin/mozilla/io.pl
bin/mozilla/oe.pl
js/customer_or_vendor_selection.js [new file with mode: 0644]
locale/de/admin
locale/de/all
locale/de/am
locale/de/amtemplates
locale/de/ap
locale/de/ar
locale/de/arap
locale/de/bp
locale/de/common
locale/de/cp
locale/de/ct
locale/de/datev
locale/de/dn
locale/de/drafts
locale/de/gl
locale/de/ic
locale/de/io
locale/de/ir
locale/de/is
locale/de/licenses
locale/de/login
locale/de/oe
locale/de/pe
locale/de/rc
locale/de/rp
locale/de/ustva
templates/webpages/generic/cov_selection_de.html [new file with mode: 0644]
templates/webpages/generic/cov_selection_master.html [new file with mode: 0644]
templates/webpages/generic/multibox.html [new file with mode: 0644]
templates/webpages/oe/orders_footer_de.html
templates/webpages/oe/orders_footer_master.html
templates/webpages/oe/orders_header_de.html
templates/webpages/oe/orders_header_master.html

index 9d7cdcb..bedb9e6 100644 (file)
@@ -154,6 +154,69 @@ sub retrieve_employees {
   return $employees;
 }
 
+sub retrieve_customers_or_vendors {
+  $main::lxdebug->enter_sub();
+
+  my ($self, $myconfig, $form, $order_by, $order_dir, $is_vendor, $allow_both) = @_;
+
+  my $dbh = $form->dbconnect($myconfig);
+
+  my (@filter_values, $filter);
+  if ($form->{"name"}) {
+    $filter .= " AND (TABLE.name ILIKE ?)";
+    push(@filter_values, '%' . $form->{"name"} . '%');
+  }
+  if (!$form->{"obsolete"}) {
+    $filter .= " AND NOT TABLE.obsolete";
+  }
+  substr($filter, 1, 3) = "WHERE" if ($filter);
+
+  $order_by =~ s/[^a-zA-Z_]//g;
+  $order_dir = $order_dir ? "ASC" : "DESC";
+
+  my (@queries, @query_parameters);
+
+  if ($allow_both || !$is_vendor) {
+    my $c_filter = $filter;
+    $c_filter =~ s/TABLE/c/g;
+    push(@queries, qq|SELECT
+                        c.id, c.name, 0 AS customer_is_vendor,
+                        c.street, c.zipcode, c.city,
+                        ct.cp_greeting, ct.cp_title, ct.cp_givenname, ct.cp_name
+                      FROM customer c
+                      LEFT JOIN contacts ct ON (c.id = ct.cp_cv_id)
+                      $c_filter|);
+    push(@query_parameters, @filter_values);
+  }
+
+  if ($allow_both || $is_vendor) {
+    my $v_filter = $filter;
+    $v_filter =~ s/TABLE/v/g;
+    push(@queries, qq|SELECT
+                        v.id, v.name, 1 AS customer_is_vendor,
+                        v.street, v.zipcode, v.city,
+                        ct.cp_greeting, ct.cp_title, ct.cp_givenname, ct.cp_name
+                      FROM vendor v
+                      LEFT JOIN contacts ct ON (v.id = ct.cp_cv_id)
+                      $v_filter|);
+    push(@query_parameters, @filter_values);
+  }
+
+  my $query = join(" UNION ", @queries) . " ORDER BY $order_by $order_dir";
+  my $sth = $dbh->prepare($query);
+  $sth->execute(@query_parameters) || $form->dberror($query . " (" . join(", ", @query_parameters) . ")");
+  my $customers = [];
+  while (my $ref = $sth->fetchrow_hashref()) {
+    push(@{$customers}, $ref);
+  }
+  $sth->finish();
+  $dbh->disconnect();
+
+  $main::lxdebug->leave_sub();
+
+  return $customers;
+}
+
 sub retrieve_delivery_customer {
   $main::lxdebug->enter_sub();
 
index 211c366..f43578b 100644 (file)
@@ -555,11 +555,12 @@ sub parse_html_template {
 
   $file = $self->_prepare_html_template($file, $additional_params);
 
-  my $template = Template->new({ 'INTERPOLATE' => 0,
-                                 'EVAL_PERL'   => 0,
-                                 'ABSOLUTE'    => 1,
-                                 'CACHE_SIZE'  => 0,
-                                 'PLUGIN_BASE' => 'SL::Template::Plugin',
+  my $template = Template->new({ 'INTERPOLATE'  => 0,
+                                 'EVAL_PERL'    => 0,
+                                 'ABSOLUTE'     => 1,
+                                 'CACHE_SIZE'   => 0,
+                                 'PLUGIN_BASE'  => 'SL::Template::Plugin',
+                                 'INCLUDE_PATH' => '.:templates/webpages',
                                }) || die;
 
   map { $additional_params->{$_} ||= $self->{$_} } keys %{ $self };
index ed2287b..7c5ad94 100644 (file)
@@ -2,6 +2,7 @@ package SL::Template::Plugin::LxERP;
 
 use base qw( Template::Plugin );
 use Template::Plugin;
+use List::Util qw(first);
 
 sub new {
   my $class   = shift;
index 6f9e9be..bcdb599 100644 (file)
@@ -80,6 +80,123 @@ sub select_employee_internal {
   $lxdebug->leave_sub();
 }
 
+## Customers/Vendors
+
+sub check_customer_or_vendor {
+  $lxdebug->enter_sub();
+
+  my ($field, $cov_selected_nextsub, $is_vendor) = @_;
+
+  if ($form->{"f_${field}"} eq $form->{"f_old_${field}"}) {
+    $lxdebug->leave_sub();
+    return 1;
+  }
+
+  my $type = $is_vendor ? $locale->text("vendor") : $locale->text("customer");
+
+  my $old_form = save_form();
+  $form->{"name"} = $form->{"f_${field}"};
+  $form->{"obsolete"} = 1;
+  my $covs;
+  $covs = Common->retrieve_customers_or_vendors(\%myconfig, $form, "name", 1, $is_vendor);
+  restore_form($old_form);
+
+  if (0 == scalar(@{$covs})) {
+    $form->header();
+    $form->show_generic_error(sprintf($locale->text("There is no %s whose name matches '%s'."), $type, $form->{"f_${field}"}));
+
+    $lxdebug->leave_sub();
+    return 0;
+
+  }
+
+  if (1 != scalar(@{$covs})) {
+    # If there is more than one CoV with the same name
+    # then we have to check if the ID is set, too. Otherwise
+    # we'd be stuck in an endless loop.
+    if ($form->{"f_${field}_id"}) {
+      foreach my $cov (@{$covs}) {
+        if (($form->{"f_${field}_id"} == $cov->{"id"}) &&
+            ($form->{"f_${field}"} eq $cov->{"name"})) {
+          $lxdebug->leave_sub();
+          return 1;
+        }
+      }
+    }
+
+    $form->{"cov_selected_nextsub"} = $cov_selected_nextsub;
+    $form->{"check_cov_field"} = $field;
+    select_customer_or_vendor("cov_selected", $is_vendor, @{$covs});
+    $lxdebug->leave_sub();
+    return 0;
+  }
+
+  $form->{"f_${field}_id"} = $covs->[0]->{"id"};
+  $form->{"f_${field}"} = $covs->[0]->{"name"};
+
+  $lxdebug->leave_sub();
+
+  return 1;
+}
+
+sub select_customer_or_vendor {
+  $lxdebug->enter_sub();
+
+  my ($callback_sub, $is_vendor, @covs) = @_;
+
+  my $old_form = save_form();
+
+  if (0 == scalar(@covs)) {
+    delete($form->{"name"});
+    $form->{"obsolete"} = 1;
+    my $c = Common->retrieve_customers_or_vendors(\%myconfig, $form, "name", 1, $is_vendor);
+    restore_form($old_form);
+    @covs = @{$c};
+  }
+
+  $form->header();
+  print($form->parse_html_template("generic/select_customer_or_vendor",
+                                   { "COVS" => \@covs,
+                                     "old_form" => $old_form,
+                                     "title" => $is_vendor ? $locale->text("Select a vendor") : $locale->text("Select a customer"),
+                                     "nextsub" => "select_cov_internal",
+                                     "callback_sub" => $callback_sub }));
+
+  $lxdebug->leave_sub();
+}
+
+sub cov_selected {
+  $lxdebug->enter_sub();
+  my ($new_id, $new_name) = @_;
+
+  my $field = $form->{"check_cov_field"};
+  delete($form->{"check_cov_field"});
+
+  $form->{"f_${field}_id"} = $new_id;
+  $form->{"f_${field}"} = $new_name;
+  $form->{"f_old_${field}"} = $new_name;
+
+  &{ $form->{"cov_selected_nextsub"} }();
+
+  $lxdebug->leave_sub();
+}
+
+sub select_cov_internal {
+  $lxdebug->enter_sub();
+
+  my ($new_id, $new_name, $callback_sub);
+
+  my $new_id = $form->{"new_id_" . $form->{"selection"}};
+  my $new_name = $form->{"new_name_" . $form->{"selection"}};
+  my $callback_sub = $form->{"callback_sub"};
+
+  restore_form($form->{"old_form"});
+
+  &{ $callback_sub }($new_id, $new_name);
+
+  $lxdebug->leave_sub();
+}
+
 sub select_part {
   $lxdebug->enter_sub();
 
@@ -588,4 +705,143 @@ sub mark_as_paid_common {
   $lxdebug->leave_sub();
 }
 
+sub cov_selection_internal {
+  $lxdebug->enter_sub();
+
+  $order_by = "name";
+  $order_by = $form->{"order_by"} if (defined($form->{"order_by"}));
+  $order_dir = 1;
+  $order_dir = $form->{"order_dir"} if (defined($form->{"order_dir"}));
+
+  my $type = $form->{"is_vendor"} ? $locale->text("vendor") : $locale->text("customer");
+
+  $covs = Common->retrieve_customers_or_vendors(\%myconfig, $form, $order_by, $order_dir, $form->{"is_vendor"}, $form->{"allow_both"});
+  map({ $covs->[$_]->{"selected"} = $_ ? 0 : 1; } (0..$#{$covs}));
+  if (0 == scalar(@{$covs})) {
+    $form->show_generic_information(sprintf($locale->text("No %s was found matching the search parameters."), $type));
+  } elsif (1 == scalar(@{$covs})) {
+    $onload = "cov_selected('1')";
+  }
+
+  my $callback = "$form->{script}?action=cov_selection_internal&";
+  map({ $callback .= "$_=" . $form->escape($form->{$_}) . "&" }
+      (qw(login path password name input_name input_id is_vendor allow_both), grep({ /^[fl]_/ } keys %$form)));
+
+  my @header_sort = qw(name address contact);
+  my %header_title = ( "name" => $locale->text("Name"),
+                       "address" => $locale->text("Address"),
+                       "contact" => $locale->text("Contact"),
+                       );
+
+  my @header =
+    map(+{ "column_title" => $header_title{$_},
+           "column" => $_,
+           "callback" => $callback . "order_by=${_}&order_dir=" . ($order_by eq $_ ? 1 - $order_dir : $order_dir),
+         },
+        @header_sort);
+
+  foreach my $cov (@{ $covs }) {
+    $cov->{address} = "$cov->{street}, $cov->{zipcode} $cov->{city}";
+    $cov->{address} =~ s{^,}{}x;
+    $cov->{address} =~ s{\ +}{\ }gx;
+
+    $cov->{contact} = join " ", map { $cov->{$_} } qw(cp_greeting cp_title cp_givenname cp_name);
+    $cov->{contact} =~ s{\ +}{\ }gx;
+  }
+
+  $form->{"title"} = $form->{is_vendor} ? $locale->text("Select a vendor") : $locale->text("Select a customer");
+  $form->header();
+  print($form->parse_html_template("generic/cov_selection", { "HEADER" => \@header,
+                                                              "COVS" => $covs,
+                                                              "onload" => $onload }));
+
+  $lxdebug->leave_sub();
+}
+
+sub check_cov2 {
+  $lxdebug->enter_sub();
+
+  my $callback_sub = shift;
+
+  if (!$form->{customer}
+      || ($form->{customer} eq $form->{old_customer})
+      || ("$form->{customer}--$form->{customer_id}" eq $form->{old_customer})) {
+    $lxdebug->leave_sub();
+    return;
+  }
+
+  $old_name     = $form->{name};
+  $form->{name} = $form->{customer};
+
+  my $covs = Common->retrieve_customers_or_vendors(\%myconfig, $form, "name", "ASC", 0, 1);
+
+  $form->{name} = $old_name;
+
+  if (0 == scalar @{$covs}) {
+    $form->show_generic_information(sprintf($locale->text("No %s was found matching the search parameters."), $type));
+
+  } elsif (1 == scalar @{ $covs }) {
+    $form->{customer}           = $covs->[0]->{name};
+    $form->{old_customer}       = $covs->[0]->{name};
+    $form->{customer_id}        = $covs->[0]->{id};
+    $form->{customer_is_vendor} = $covs->[0]->{customer_is_vendor};
+
+  } else {
+    $form->{new_cov_nextsub} = $callback_sub;
+
+    delete @{$form}{qw(customer customer_is_vendor customer_id old_customer action)};
+    my @hidden = map { { 'key' => $_, 'value' => $form->{$_} } } grep { '' eq ref $form->{$_} } keys %{ $form };
+
+    foreach my $cov (@{ $covs }) {
+      $cov->{address} = "$cov->{street}, $cov->{zipcode} $cov->{city}";
+      $cov->{address} =~ s{^,}{}x;
+      $cov->{address} =~ s{\ +}{\ }gx;
+
+      $cov->{contact} = join " ", map { $cov->{$_} } qw(cp_greeting cp_title cp_givenname cp_name);
+      $cov->{contact} =~ s{\ +}{\ }gx;
+    }
+
+    $form->{title} = $locale->text("Select a vendor or customer");
+    $form->header();
+
+    print $form->parse_html_template("generic/cov_selection2", { "COVS" => $covs, "HIDDEN" => \@hidden });
+
+    exit 0;
+  }
+
+  $lxdebug->leave_sub();
+}
+
+sub cov_selected2 {
+  $lxdebug->enter_sub();
+
+  if (!$form->{new_cov} || !$form->{new_cov_nextsub}) {
+    $form->error($locale->text('No customer has been selected.'));
+  }
+
+  map { $form->{$_} = $form->{"new_cov_${_}_$form->{new_cov}"} } qw(customer customer_id customer_is_vendor);
+  $form->{old_customer} = $form->{customer};
+
+  &{ $form->{new_cov_nextsub} }();
+
+  $lxdebug->leave_sub();
+}
+
+sub select_item_selection_internal {
+  $lxdebug->enter_sub();
+
+  @items = SystemBrace->retrieve_select_items(\%myconfig, $form, $form->{"select_item_type"});
+  if (0 == scalar(@items)) {
+    $form->show_generic_information($locale->text("No item was found."));
+  } elsif (1 == scalar(@items)) {
+    $onload = "select_item_selected('1')";
+  }
+
+  $form->{"title"} = $locale->text("Select an entry");
+  $form->header();
+  print($form->parse_html_template("generic/select_item_selection", { "SELECT_ITEMS" => \@items,
+                                                                      "onload" => $onload }));
+
+  $lxdebug->leave_sub();
+}
 1;
index 90e2d4e..1286429 100644 (file)
@@ -90,464 +90,464 @@ use Data::Dumper;
 # Eintrag fuer Version 2.2.0 geaendert #
 # neue Optik im Rechnungsformular      #
 ########################################
-sub display_row {
-  $lxdebug->enter_sub();
-  my $numrows = shift;
-
-  my $is_sales =
-    (substr($form->{type}, 0, 6) eq "sales_")
-    || (($form->{type} eq "invoice") && ($form->{script} eq "is.pl"))
-    || ($form->{type} eq 'credit_note');
-
-  if ($lizenzen && $form->{vc} eq "customer") {
-    if ($form->{type} =~ /sales_order/) {
-      @column_index = (runningnumber, partnumber, description, ship, qty);
-    } elsif ($form->{type} =~ /sales_quotation/) {
-      @column_index = (runningnumber, partnumber, description, qty);
-    } else {
-      @column_index = (runningnumber, partnumber, description, qty);
-    }
-  } else {
-    if (   ($form->{type} =~ /purchase_order/)
-        || ($form->{type} =~ /sales_order/)) {
-      @column_index = (runningnumber, partnumber, description, ship, qty);
-        } else {
-      @column_index = (runningnumber, partnumber, description, qty);
-    }
-  }
-############## ENDE Neueintrag ##################
-
-  my $dimension_units = AM->retrieve_units(\%myconfig, $form, "dimension");
-  my $service_units = AM->retrieve_units(\%myconfig, $form, "service");
-  my $all_units = AM->retrieve_units(\%myconfig, $form);
-
-  my %price_factors = map { $_->{id} => $_->{factor} } @{ $form->{ALL_PRICE_FACTORS} };
-
-  push @column_index, qw(unit);
-
-  #for pricegroups column
-  if (   $form->{type} =~ (/sales_quotation/)
-      or (($form->{level} =~ /Sales/) and ($form->{type} =~ /invoice/))
-      or (($form->{level} eq undef) and ($form->{type} =~ /invoice/))
-      or ($form->{type} =~ /sales_order/)) {
-    push @column_index, qw(sellprice_pg);
-  }
-
-  push @column_index, qw(sellprice);
-
-  if ($form->{vc} eq 'customer') {
-    push @column_index, qw(discount);
-  }
-
-  push @column_index, "linetotal";
-
-  my $colspan = $#column_index + 1;
-
-  $form->{invsubtotal} = 0;
-  map { $form->{"${_}_base"} = 0 } (split(/ /, $form->{taxaccounts}));
-
-########################################
-  # Eintrag fuer Version 2.2.0 geaendert #
-  # neue Optik im Rechnungsformular      #
-########################################
-  $column_data{runningnumber} = qq|<th align="left" nowrap width="5%"  class="listheading">| . $locale->text('No.') .         qq|</th>|;
-  $column_data{partnumber}    = qq|<th align="left" nowrap width="12%" class="listheading">| . $locale->text('Number') .      qq|</th>|;
-  $column_data{description}   = qq|<th align="left" nowrap width="30%" class="listheading">| . $locale->text('Part Description') . qq|</th>|;
-  if ($form->{"type"} eq "purchase_order") {
-    $column_data{ship}        = qq|<th align="left" nowrap width="5%"  class="listheading">| . $locale->text('Ship rcvd') .   qq|</th>|;
-  } else {
-    $column_data{ship}        = qq|<th align="left" nowrap width="5%"  class="listheading">| . $locale->text('Ship') .        qq|</th>|;
-  }
-  $column_data{qty}           = qq|<th align="left" nowrap width="5%"  class="listheading">| . $locale->text('Qty') .         qq|</th>|;
-  $column_data{unit}          = qq|<th align="left" nowrap width="20%" class="listheading">| . $locale->text('Unit') .        qq|</th>|;
-  $column_data{license}       = qq|<th align="left" nowrap width="10%" class="listheading">| . $locale->text('License') .     qq|</th>|;
-  $column_data{serialnr}      = qq|<th align="left" nowrap width="10%" class="listheading">| . $locale->text('Serial No.') .  qq|</th>|;
-  $column_data{projectnr}     = qq|<th align="left" nowrap width="10%" class="listheading">| . $locale->text('Project') .     qq|</th>|;
-  $column_data{sellprice}     = qq|<th align="left" nowrap width="15%" class="listheading">| . $locale->text('Price') .       qq|</th>|;
-  $column_data{sellprice_pg}  = qq|<th align="left" nowrap width="15%" class="listheading">| . $locale->text('Pricegroup') .  qq|</th>|;
-  $column_data{discount}      = qq|<th align="left" nowrap width="5%"  class="listheading">| . $locale->text('Discount') .    qq|</th>|;
-  $column_data{linetotal}     = qq|<th align="left" nowrap width="10%" class="listheading">| . $locale->text('Extended') .    qq|</th>|;
-  $column_data{bin}           = qq|<th align="left" nowrap width="10%" class="listheading">| . $locale->text('Bin') .         qq|</th>|;
-############## ENDE Neueintrag ##################
-
-  $myconfig{"show_form_details"} = 1
-    unless (defined($myconfig{"show_form_details"}));
-  $form->{"show_details"} = $myconfig{"show_form_details"}
-    unless (defined($form->{"show_details"}));
-  $form->{"show_details"} = $form->{"show_details"} ? 1 : 0;
-  my $show_details_new = 1 - $form->{"show_details"};
-  my $show_details_checked = $form->{"show_details"} ? "checked" : "";
-
-  print qq|
-  <tr>
-    <td>| . $cgi->hidden("-name" => "show_details", "-value" => $form->{show_details}) . qq|
-      <input type="checkbox" id="cb_show_details" onclick="show_form_details($show_details_new);" $show_details_checked>
-      <label for="cb_show_details">| . $locale->text("Show details") . qq|</label><br>
-      <table width="100%">
-       <tr class="listheading">|;
-
-  map { print "\n$column_data{$_}" } @column_index;
-
-  print qq|
-        </tr>
-|;
-
-  $runningnumber = $locale->text('No.');
-  $deliverydate  = $locale->text('Delivery Date');
-  $serialnumber  = $locale->text('Serial No.');
-  $projectnumber = $locale->text('Project');
-  $partsgroup    = $locale->text('Group');
-  $reqdate       = $locale->text('Reqdate');
-
-  $delvar = 'deliverydate';
-
-  if ($form->{type} =~ /_order$/ || $form->{type} =~ /_quotation$/) {
-    $deliverydate = $locale->text('Required by');
-    $delvar       = 'reqdate';
-  }
-
-  $form->{marge_total} = 0;
-  $form->{sellprice_total} = 0;
-  $form->{lastcost_total} = 0;
-  my %projectnumber_labels = ();
-  my @projectnumber_values = ("");
-  foreach my $item (@{ $form->{"ALL_PROJECTS"} }) {
-    push(@projectnumber_values, $item->{"id"});
-    $projectnumber_labels{$item->{"id"}} = $item->{"projectnumber"};
-  }
-
-  for $i (1 .. $numrows) {
-
-    # undo formatting
-    map {
-      $form->{"${_}_$i"} =
-        $form->parse_amount(\%myconfig, $form->{"${_}_$i"})
-    } qw(qty ship discount sellprice price_new price_old) unless ($form->{simple_save});
-
-    if (!$form->{"unit_old_$i"}) {
-      # Neue Ware aus der Datenbank. In diesem Fall ist unit_$i die
-      # Einheit, wie sie in den Stammdaten hinterlegt wurde.
-      # Es sollte also angenommen werden, dass diese ausgewaehlt war.
-      $form->{"unit_old_$i"} = $form->{"unit_$i"};
-    }
-
-    # Die zuletzt ausgewaehlte mit der aktuell ausgewaehlten Einheit
-    # vergleichen und bei Unterschied den Preis entsprechend umrechnen.
-    $form->{"selected_unit_$i"} = $form->{"unit_$i"} unless ($form->{"selected_unit_$i"});
-
-    my $check_units = $form->{"inventory_accno_$i"} ? $dimension_units : $service_units;
-    if (!$check_units->{$form->{"selected_unit_$i"}} ||
-        ($check_units->{$form->{"selected_unit_$i"}}->{"base_unit"} ne
-         $all_units->{$form->{"unit_old_$i"}}->{"base_unit"})) {
-      # Die ausgewaehlte Einheit ist fuer diesen Artikel nicht gueltig
-      # (z.B. Dimensionseinheit war ausgewaehlt, es handelt sich aber
-      # um eine Dienstleistung). Dann keinerlei Umrechnung vornehmen.
-      $form->{"unit_old_$i"} = $form->{"selected_unit_$i"} = $form->{"unit_$i"};
-    }
-    if ((!$form->{"prices_$i"}) || ($form->{"new_pricegroup_$i"} == $form->{"old_pricegroup_$i"})) {
-      if ($form->{"unit_old_$i"} ne $form->{"selected_unit_$i"}) {
-        my $basefactor = 1;
-        if (defined($all_units->{$form->{"unit_old_$i"}}->{"factor"}) &&
-            $all_units->{$form->{"unit_old_$i"}}->{"factor"}) {
-          $basefactor = $all_units->{$form->{"selected_unit_$i"}}->{"factor"} /
-            $all_units->{$form->{"unit_old_$i"}}->{"factor"};
-        }
-        $form->{"sellprice_$i"} *= $basefactor;
-        $form->{"unit_old_$i"} = $form->{"selected_unit_$i"};
-      }
-    }
-
-    ($dec) = ($form->{"sellprice_$i"} =~ /\.(\d+)/);
-    $decimalplaces = max length($dec), 2;
-
-    $price_factor = $price_factors{$form->{"price_factor_id_$i"}} || 1;
-    $discount     = (100 - $form->{"discount_$i"} * 1) / 100;
-
-    $linetotal    = $form->round_amount($form->{"sellprice_$i"} * $form->{"qty_$i"} * $discount / $price_factor, $decimalplaces);
-
-    my $real_sellprice = $form->{"sellprice_$i"} * $discount / $price_factor;
-
-    # marge calculations
-    my ($marge_font_start, $marge_font_end);
-
-    $form->{"lastcost_$i"} *= 1;
-
-    $marge_price_factor = $form->{"marge_price_factor_$i"} * 1 || 1;
-
-    if ($real_sellprice && ($form->{"qty_$i"} * 1)) {
-      $form->{"marge_percent_$i"}     = ($real_sellprice - $form->{"lastcost_$i"} / $marge_price_factor) * 100 / $real_sellprice;
-      $myconfig{"marge_percent_warn"} = 15 unless (defined($myconfig{"marge_percent_warn"}));
-
-      if ($form->{"id_$i"} &&
-          ($form->{"marge_percent_$i"} < (1 * $myconfig{"marge_percent_warn"}))) {
-        $marge_font_start = "<font color=\"#ff0000\">";
-        $marge_font_end   = "</font>";
-      }
-
-    } else {
-      $form->{"marge_percent_$i"} = 0;
-    }
-
-    my $marge_adjust_credit_note = $form->{type} eq 'credit_note' ? -1 : 1;
-    $form->{"marge_total_$i"}  = ($real_sellprice - $form->{"lastcost_$i"} / $marge_price_factor) * $form->{"qty_$i"} * $marge_adjust_credit_note;
-    $form->{"marge_total"}      += $form->{"marge_total_$i"};
-    $form->{"lastcost_total"}   += $form->{"lastcost_$i"} * $form->{"qty_$i"} / $marge_price_factor;
-    $form->{"sellprice_total"}  += $real_sellprice * $form->{"qty_$i"};
-
-    map { $form->{"${_}_$i"} = $form->format_amount(\%myconfig, $form->{"${_}_$i"}, 2) } qw(marge_total marge_percent);
-
-    # convert " to &quot;
-    map { $form->{"${_}_$i"} =~ s/\"/&quot;/g }
-      qw(partnumber description unit unit_old);
-
-########################################
-    # Eintrag fuer Version 2.2.0 geaendert #
-    # neue Optik im Rechnungsformular      #
-########################################
-    $column_data{runningnumber} =
-      qq|<td><input name="runningnumber_$i" size="5" value="$i"></td>|;    # HuT
-############## ENDE Neueintrag ##################
-
-    $column_data{partnumber} =
-      qq|<td><input name="partnumber_$i" size=12 value="$form->{"partnumber_$i"}"></td>|;
-
-    if (($rows = $form->numtextrows($form->{"description_$i"}, 30, 6)) > 1) {
-      $column_data{description} =
-        qq|<td><textarea name="description_$i" rows="$rows" cols="30" wrap="soft">| . H($form->{"description_$i"}) . qq|</textarea><button type="button" onclick="set_longdescription_window('longdescription_$i')">| . $locale->text('L') . qq|</button></td>|;
-    } else {
-      $column_data{description} =
-        qq|<td><input name="description_$i" size="30" value="| . $form->quote($form->{"description_$i"}) . qq|"><button type="button" onclick="set_longdescription_window('longdescription_$i')">| . $locale->text('L') . qq|</button></td>|;
-    }
-
-    (my $qty_dec) = ($form->{"qty_$i"} =~ /\.(\d+)/);
-    $qty_dec = length $qty_dec;
-
-    $column_data{qty} =
-        qq|<td align="right"><input name="qty_$i" size="5" value="|
-      . $form->format_amount(\%myconfig, $form->{"qty_$i"}, $qty_dec) .qq|">|;
-    if ($form->{"formel_$i"}) {
-      $column_data{qty} .= qq|<button type="button" onclick="calculate_qty_selection_window('qty_$i','alu_$i', 'formel_$i', $i)">| . $locale->text('*/') . qq|</button>|
-        . $cgi->hidden("-name" => "formel_$i", "-value" => $form->{"formel_$i"}) . $cgi->hidden("-name" => "alu_$i", "-value" => $form->{"alu_$i"});
-    }
-    $column_data{qty} .= qq|</td>|;
-    $column_data{ship} =
-        qq|<td align="right"><input name="ship_$i" size=5 value="|
-      . $form->format_amount(\%myconfig, $form->{"ship_$i"})
-      . qq|"></td>|;
-
-    my $is_part     = $form->{"inventory_accno_$i"};
-    my $is_assembly = $form->{"assembly_$i"};
-    my $is_assigned = $form->{"id_$i"};
-    my $this_unit = $form->{"unit_$i"};
-    if ($form->{"selected_unit_$i"} && $this_unit &&
-        $all_units->{$form->{"selected_unit_$i"}} && $all_units->{$this_unit} &&
-        ($all_units->{$form->{"selected_unit_$i"}}->{"base_unit"} eq $all_units->{$this_unit}->{"base_unit"})) {
-      $this_unit = $form->{"selected_unit_$i"};
-    } elsif (!$is_assigned ||
-             ($is_part && !$this_unit && ($all_units->{$this_unit} && ($all_units->{$this_unit}->{"base_unit"} eq $all_units->{"kg"}->{"base_unit"})))) {
-      $this_unit = "kg";
-    }
-
-    my $price_factor_select;
-    if (0 < scalar @{ $form->{ALL_PRICE_FACTORS} }) {
-      my @values = ('', map { $_->{id}                      } @{ $form->{ALL_PRICE_FACTORS} });
-      my %labels =      map { $_->{id} => $_->{description} } @{ $form->{ALL_PRICE_FACTORS} };
-
-      $price_factor_select =
-        NTI($cgi->popup_menu('-name'    => "price_factor_id_$i",
-                             '-default' => $form->{"price_factor_id_$i"},
-                             '-values'  => \@values,
-                             '-labels'  => \%labels,
-                             '-style'   => 'width:90px'))
-        . ' ';
-    }
-
-    $column_data{"unit"} = "<td>" .
-      $price_factor_select .
-       AM->unit_select_html($is_part || $is_assembly ? $dimension_units :
-                            $is_assigned ? $service_units : $all_units,
-                            "unit_$i", $this_unit,
-                            $is_assigned ? $form->{"unit_$i"} : undef)
-      . "</td>";
-
-    # build in drop down list for pricesgroups
-    if ($form->{"prices_$i"}) {
-      if  ($form->{"new_pricegroup_$i"} != $form->{"old_pricegroup_$i"}) {
-        $price_tmp = $form->format_amount(\%myconfig, $form->{"price_new_$i"}, $decimalplaces);
-      } else {
-        $price_tmp = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces);
-      }
-
-      $column_data{sellprice_pg} =
-      qq|<td align="right"><select name="sellprice_pg_$i">$form->{"prices_$i"}</select></td>|;
-      $column_data{sellprice} =
-      qq|<td><input name="sellprice_$i" size="10" value="$price_tmp" onBlur=\"check_right_number_format(this)\"></td>|;
-    } else {
-
-      # for last row and report
-      # set pricegroup drop down list from report menu
-      if ($form->{"sellprice_$i"} != 0) {
-        $prices =
-          qq|<option value="$form->{"sellprice_$i"}--$form->{"pricegroup_id_$i"}" selected>$form->{"pricegroup_$i"}</option>\n|;
-
-        $form->{"pricegroup_old_$i"} = $form->{"pricegroup_id_$i"};
-
-        $column_data{sellprice_pg} =
-          qq|<td align="right"><select name="sellprice_pg_$i">$prices</select></td>|;
-
-      } else {
-
-        # for last row
-        $column_data{sellprice_pg} = qq|<td align="right">&nbsp;</td>|;
-        }
-        
-      $column_data{sellprice} =
-      qq|<td><input name="sellprice_$i" size="10" onBlur=\"check_right_number_format(this)\" value="|
-        . $form->format_amount(\%myconfig, $form->{"sellprice_$i"},
-                               $decimalplaces)
-        . qq|"></td>|;
-    }
-    $column_data{discount} =
-        qq|<td align="right"><input name="discount_$i" size=3 value="|
-      . $form->format_amount(\%myconfig, $form->{"discount_$i"})
-      . qq|"></td>|;
-    $column_data{linetotal} =
-        qq|<td align="right">|
-      . $form->format_amount(\%myconfig, $linetotal, 2)
-      . qq|</td>|;
-    $column_data{bin} = qq|<td>$form->{"bin_$i"}</td>|;
-
-########################################
-    # Eintrag fuer Version 2.2.0 geaendert #
-    # neue Optik im Rechnungsformular      #
-########################################
-    #     if ($lizenzen &&  $form->{type} eq "invoice" &&  $form->{vc} eq "customer") {
-    #     $column_data{license} = qq|<td><select name="licensenumber_$i">$form->{"lizenzen_$i"}></select></td>|;
-    #     }
-    #
-    #     if ($form->{type} !~ /_quotation/) {
-    #     $column_data{serialnr} = qq|<td><input name="serialnumber_$i" size=10 value="$form->{"serialnumber_$i"}"></td>|;
-    #     }
-    #
-    #     $column_data{projectnr} = qq|<td><input name="projectnumber_$i" size=10 value="$form->{"projectnumber_$i"}"></td>|;
-############## ENDE Neueintrag ##################
-    my $j = $i % 2;
-    print qq|
-
-        <tr valign="top" class="listrow$j">|;
-
-    map { print "\n$column_data{$_}" } @column_index;
-
-    print("</tr>\n" .
-          $cgi->hidden("-name" => "unit_old_$i",
-                       "-value" => $form->{"selected_unit_$i"})
-          . "\n" .
-          $cgi->hidden("-name" => "price_new_$i",
-                       "-value" => $form->format_amount(\%myconfig, $form->{"price_new_$i"}))
-          . "\n");
-    map({ print($cgi->hidden("-name" => $_, "-value" => $form->{$_}) . "\n"); }
-        ("orderitems_id_$i", "bo_$i", "pricegroup_old_$i", "price_old_$i",
-         "id_$i", "inventory_accno_$i", "bin_$i", "partsgroup_$i", "partnotes_$i",
-         "income_accno_$i", "expense_accno_$i", "listprice_$i", "assembly_$i",
-         "taxaccounts_$i", "ordnumber_$i", "transdate_$i", "cusordnumber_$i",
-         "longdescription_$i", "basefactor_$i", "marge_total_$i", "marge_percent_$i", "lastcost_$i",
-         "marge_price_factor_$i"));
-
-########################################
-    # Eintrag fuer Version 2.2.0 geaendert #
-    # neue Optik im Rechnungsformular      #
-########################################
-
-    my $row_style_attr =
-      'style="display:none;"' if (!$form->{"show_details"});
-
-    # print second row
-    print qq|
-        <tr  class="listrow$j" $row_style_attr>
-         <td colspan="$colspan">
-|;
-    if ($lizenzen && $form->{type} eq "invoice" && $form->{vc} eq "customer") {
-      my $selected = $form->{"licensenumber_$i"};
-      my $lizenzen_quoted;
-      $form->{"lizenzen_$i"} =~ s/ selected//g;
-      $form->{"lizenzen_$i"} =~
-        s/value="${selected}"\>/value="${selected}" selected\>/;
-      $lizenzen_quoted = $form->{"lizenzen_$i"};
-      $lizenzen_quoted =~ s/\"/&quot;/g;
-      print qq|
-       <b>Lizenz\#</b>&nbsp;<select name="licensenumber_$i" size="1">
-       $form->{"lizenzen_$i"}
-        </select>
-       <input type="hidden" name="lizenzen_$i" value="${lizenzen_quoted}">
-|;
-    }
-    if ($form->{type} !~ /_quotation/) {
-      print qq|
-          <b>$serialnumber</b>&nbsp;<input name="serialnumber_$i" size="15" value="$form->{"serialnumber_$i"}">|;
-    }
-
-    print qq|<b>$projectnumber</b>&nbsp;| .
-      NTI($cgi->popup_menu('-name' => "project_id_$i",
-                           '-values' => \@projectnumber_values,
-                           '-labels' => \%projectnumber_labels,
-                           '-default' => $form->{"project_id_$i"}));
-
-    if ($form->{type} eq 'invoice' or $form->{type} =~ /order/) {
-      my $reqdate_term =
-        ($form->{type} eq 'invoice')
-        ? 'deliverydate'
-        : 'reqdate';    # invoice uses a different term for the same thing.
-      print qq|
-        <b>${$reqdate_term}</b>&nbsp;<input name="${reqdate_term}_$i" size="11" onBlur="check_right_date_format(this)" value="$form->{"${reqdate_term}_$i"}">
-|;
-    }
-    my $subtotalchecked = ($form->{"subtotal_$i"}) ? "checked" : "";
-    print qq|
-          <b>|.$locale->text('Subtotal').qq|</b>&nbsp;<input type="checkbox" name="subtotal_$i" value="1" $subtotalchecked>
-|;
-
-    if ($form->{"id_$i"} && $is_sales) {
-      my $marge_price_factor;
-
-      $form->{"marge_price_factor_$i"} *= 1;
-
-      if ($form->{"marge_price_factor_$i"} && (1 != $form->{"marge_price_factor_$i"})) {
-        $marge_price_factor = '/' . $form->format_amount(\%myconfig, $form->{"marge_price_factor_$i"});
-      }
-
-      print qq|
-          ${marge_font_start}<b>| . $locale->text('Ertrag') . qq|</b>&nbsp;$form->{"marge_total_$i"}&nbsp;$form->{"marge_percent_$i"} % ${marge_font_end}|;
-   }
-   print qq|
-          &nbsp;<b>| . $locale->text('LP') . qq|</b>&nbsp;| . $form->format_amount(\%myconfig, $form->{"listprice_$i"}, 2) . qq|
-          &nbsp;<b>| . $locale->text('EK') . qq|</b>&nbsp;| . $form->format_amount(\%myconfig, $form->{"lastcost_$i"}, 2) . $marge_price_factor;
-
-
-    print qq|
-         </td>
-       </tr>
-|;
-
-############## ENDE Neueintrag ##################
-
-    map { $form->{"${_}_base"} += $linetotal }
-      (split(/ /, $form->{"taxaccounts_$i"}));
-
-    $form->{invsubtotal} += $linetotal;
-  }
-
-  print qq|
-      </table>
-    </td>
-  </tr>
-|;
-
-  if (0 != ($form->{sellprice_total} * 1)) {
-    $form->{marge_percent} = ($form->{sellprice_total} - $form->{lastcost_total}) / $form->{sellprice_total} * 100;
-  }
-
-  $lxdebug->leave_sub();
-}
+#sub display_row {
+#  $lxdebug->enter_sub();
+#  my $numrows = shift;
+#
+#  my $is_sales =
+#    (substr($form->{type}, 0, 6) eq "sales_")
+#    || (($form->{type} eq "invoice") && ($form->{script} eq "is.pl"))
+#    || ($form->{type} eq 'credit_note');
+#
+#  if ($lizenzen && $form->{vc} eq "customer") {
+#    if ($form->{type} =~ /sales_order/) {
+#      @column_index = (runningnumber, partnumber, description, ship, qty);
+#    } elsif ($form->{type} =~ /sales_quotation/) {
+#      @column_index = (runningnumber, partnumber, description, qty);
+#    } else {
+#      @column_index = (runningnumber, partnumber, description, qty);
+#    }
+#  } else {
+#    if (   ($form->{type} =~ /purchase_order/)
+#        || ($form->{type} =~ /sales_order/)) {
+#      @column_index = (runningnumber, partnumber, description, ship, qty);
+#        } else {
+#      @column_index = (runningnumber, partnumber, description, qty);
+#    }
+#  }
+############### ENDE Neueintrag ##################
+#
+#  my $dimension_units = AM->retrieve_units(\%myconfig, $form, "dimension");
+#  my $service_units = AM->retrieve_units(\%myconfig, $form, "service");
+#  my $all_units = AM->retrieve_units(\%myconfig, $form);
+#
+#  my %price_factors = map { $_->{id} => $_->{factor} } @{ $form->{ALL_PRICE_FACTORS} };
+#
+#  push @column_index, qw(unit);
+#
+#  #for pricegroups column
+#  if (   $form->{type} =~ (/sales_quotation/)
+#      or (($form->{level} =~ /Sales/) and ($form->{type} =~ /invoice/))
+#      or (($form->{level} eq undef) and ($form->{type} =~ /invoice/))
+#      or ($form->{type} =~ /sales_order/)) {
+#    push @column_index, qw(sellprice_pg);
+#  }
+#
+#  push @column_index, qw(sellprice);
+#
+#  if ($form->{vc} eq 'customer') {
+#    push @column_index, qw(discount);
+#  }
+#
+#  push @column_index, "linetotal";
+#
+#  my $colspan = $#column_index + 1;
+#
+#  $form->{invsubtotal} = 0;
+#  map { $form->{"${_}_base"} = 0 } (split(/ /, $form->{taxaccounts}));
+#
+#########################################
+#  # Eintrag fuer Version 2.2.0 geaendert #
+#  # neue Optik im Rechnungsformular      #
+#########################################
+#  $column_data{runningnumber} = qq|<th align="left" nowrap width="5%"  class="listheading">| . $locale->text('No.') .         qq|</th>|;
+#  $column_data{partnumber}    = qq|<th align="left" nowrap width="12%" class="listheading">| . $locale->text('Number') .      qq|</th>|;
+#  $column_data{description}   = qq|<th align="left" nowrap width="30%" class="listheading">| . $locale->text('Part Description') . qq|</th>|;
+#  if ($form->{"type"} eq "purchase_order") {
+#    $column_data{ship}        = qq|<th align="left" nowrap width="5%"  class="listheading">| . $locale->text('Ship rcvd') .   qq|</th>|;
+#  } else {
+#    $column_data{ship}        = qq|<th align="left" nowrap width="5%"  class="listheading">| . $locale->text('Ship') .        qq|</th>|;
+#  }
+#  $column_data{qty}           = qq|<th align="left" nowrap width="5%"  class="listheading">| . $locale->text('Qty') .         qq|</th>|;
+#  $column_data{unit}          = qq|<th align="left" nowrap width="20%" class="listheading">| . $locale->text('Unit') .        qq|</th>|;
+#  $column_data{license}       = qq|<th align="left" nowrap width="10%" class="listheading">| . $locale->text('License') .     qq|</th>|;
+#  $column_data{serialnr}      = qq|<th align="left" nowrap width="10%" class="listheading">| . $locale->text('Serial No.') .  qq|</th>|;
+#  $column_data{projectnr}     = qq|<th align="left" nowrap width="10%" class="listheading">| . $locale->text('Project') .     qq|</th>|;
+#  $column_data{sellprice}     = qq|<th align="left" nowrap width="15%" class="listheading">| . $locale->text('Price') .       qq|</th>|;
+#  $column_data{sellprice_pg}  = qq|<th align="left" nowrap width="15%" class="listheading">| . $locale->text('Pricegroup') .  qq|</th>|;
+#  $column_data{discount}      = qq|<th align="left" nowrap width="5%"  class="listheading">| . $locale->text('Discount') .    qq|</th>|;
+#  $column_data{linetotal}     = qq|<th align="left" nowrap width="10%" class="listheading">| . $locale->text('Extended') .    qq|</th>|;
+#  $column_data{bin}           = qq|<th align="left" nowrap width="10%" class="listheading">| . $locale->text('Bin') .         qq|</th>|;
+############### ENDE Neueintrag ##################
+#
+#  $myconfig{"show_form_details"} = 1
+#    unless (defined($myconfig{"show_form_details"}));
+#  $form->{"show_details"} = $myconfig{"show_form_details"}
+#    unless (defined($form->{"show_details"}));
+#  $form->{"show_details"} = $form->{"show_details"} ? 1 : 0;
+#  my $show_details_new = 1 - $form->{"show_details"};
+#  my $show_details_checked = $form->{"show_details"} ? "checked" : "";
+#
+#  print qq|
+#  <tr>
+#    <td>| . $cgi->hidden("-name" => "show_details", "-value" => $form->{show_details}) . qq|
+#      <input type="checkbox" id="cb_show_details" onclick="show_form_details($show_details_new);" $show_details_checked>
+#      <label for="cb_show_details">| . $locale->text("Show details") . qq|</label><br>
+#      <table width="100%">
+#      <tr class="listheading">|;
+#
+#  map { print "\n$column_data{$_}" } @column_index;
+#
+#  print qq|
+#        </tr>
+#|;
+#
+#  $runningnumber = $locale->text('No.');
+#  $deliverydate  = $locale->text('Delivery Date');
+#  $serialnumber  = $locale->text('Serial No.');
+#  $projectnumber = $locale->text('Project');
+#  $partsgroup    = $locale->text('Group');
+#  $reqdate       = $locale->text('Reqdate');
+#
+#  $delvar = 'deliverydate';
+#
+#  if ($form->{type} =~ /_order$/ || $form->{type} =~ /_quotation$/) {
+#    $deliverydate = $locale->text('Required by');
+#    $delvar       = 'reqdate';
+#  }
+#
+#  $form->{marge_total} = 0;
+#  $form->{sellprice_total} = 0;
+#  $form->{lastcost_total} = 0;
+#  my %projectnumber_labels = ();
+#  my @projectnumber_values = ("");
+#  foreach my $item (@{ $form->{"ALL_PROJECTS"} }) {
+#    push(@projectnumber_values, $item->{"id"});
+#    $projectnumber_labels{$item->{"id"}} = $item->{"projectnumber"};
+#  }
+#
+#  for $i (1 .. $numrows) {
+#
+#    # undo formatting
+#    map {
+#      $form->{"${_}_$i"} =
+#        $form->parse_amount(\%myconfig, $form->{"${_}_$i"})
+#    } qw(qty ship discount sellprice price_new price_old) unless ($form->{simple_save});
+#
+#    if (!$form->{"unit_old_$i"}) {
+#      # Neue Ware aus der Datenbank. In diesem Fall ist unit_$i die
+#      # Einheit, wie sie in den Stammdaten hinterlegt wurde.
+#      # Es sollte also angenommen werden, dass diese ausgewaehlt war.
+#      $form->{"unit_old_$i"} = $form->{"unit_$i"};
+#    }
+#
+#    # Die zuletzt ausgewaehlte mit der aktuell ausgewaehlten Einheit
+#    # vergleichen und bei Unterschied den Preis entsprechend umrechnen.
+#    $form->{"selected_unit_$i"} = $form->{"unit_$i"} unless ($form->{"selected_unit_$i"});
+#
+#    my $check_units = $form->{"inventory_accno_$i"} ? $dimension_units : $service_units;
+#    if (!$check_units->{$form->{"selected_unit_$i"}} ||
+#        ($check_units->{$form->{"selected_unit_$i"}}->{"base_unit"} ne
+#         $all_units->{$form->{"unit_old_$i"}}->{"base_unit"})) {
+#      # Die ausgewaehlte Einheit ist fuer diesen Artikel nicht gueltig
+#      # (z.B. Dimensionseinheit war ausgewaehlt, es handelt sich aber
+#      # um eine Dienstleistung). Dann keinerlei Umrechnung vornehmen.
+#      $form->{"unit_old_$i"} = $form->{"selected_unit_$i"} = $form->{"unit_$i"};
+#    }
+#    if ((!$form->{"prices_$i"}) || ($form->{"new_pricegroup_$i"} == $form->{"old_pricegroup_$i"})) {
+#      if ($form->{"unit_old_$i"} ne $form->{"selected_unit_$i"}) {
+#        my $basefactor = 1;
+#        if (defined($all_units->{$form->{"unit_old_$i"}}->{"factor"}) &&
+#            $all_units->{$form->{"unit_old_$i"}}->{"factor"}) {
+#          $basefactor = $all_units->{$form->{"selected_unit_$i"}}->{"factor"} /
+#            $all_units->{$form->{"unit_old_$i"}}->{"factor"};
+#        }
+#        $form->{"sellprice_$i"} *= $basefactor;
+#        $form->{"unit_old_$i"} = $form->{"selected_unit_$i"};
+#      }
+#    }
+#
+#    ($dec) = ($form->{"sellprice_$i"} =~ /\.(\d+)/);
+#    $decimalplaces = max length($dec), 2;
+#
+#    $price_factor = $price_factors{$form->{"price_factor_id_$i"}} || 1;
+#    $discount     = (100 - $form->{"discount_$i"} * 1) / 100;
+#
+#    $linetotal    = $form->round_amount($form->{"sellprice_$i"} * $form->{"qty_$i"} * $discount / $price_factor, $decimalplaces);
+#
+#    my $real_sellprice = $form->{"sellprice_$i"} * $discount / $price_factor;
+#
+#    # marge calculations
+#    my ($marge_font_start, $marge_font_end);
+#
+#    $form->{"lastcost_$i"} *= 1;
+#
+#    $marge_price_factor = $form->{"marge_price_factor_$i"} * 1 || 1;
+#
+#    if ($real_sellprice && ($form->{"qty_$i"} * 1)) {
+#      $form->{"marge_percent_$i"}     = ($real_sellprice - $form->{"lastcost_$i"} / $marge_price_factor) * 100 / $real_sellprice;
+#      $myconfig{"marge_percent_warn"} = 15 unless (defined($myconfig{"marge_percent_warn"}));
+#
+#      if ($form->{"id_$i"} &&
+#          ($form->{"marge_percent_$i"} < (1 * $myconfig{"marge_percent_warn"}))) {
+#        $marge_font_start = "<font color=\"#ff0000\">";
+#        $marge_font_end   = "</font>";
+#      }
+#
+#    } else {
+#      $form->{"marge_percent_$i"} = 0;
+#    }
+#
+#    my $marge_adjust_credit_note = $form->{type} eq 'credit_note' ? -1 : 1;
+#    $form->{"marge_total_$i"}  = ($real_sellprice - $form->{"lastcost_$i"} / $marge_price_factor) * $form->{"qty_$i"} * $marge_adjust_credit_note;
+#    $form->{"marge_total"}      += $form->{"marge_total_$i"};
+#    $form->{"lastcost_total"}   += $form->{"lastcost_$i"} * $form->{"qty_$i"} / $marge_price_factor;
+#    $form->{"sellprice_total"}  += $real_sellprice * $form->{"qty_$i"};
+#
+#    map { $form->{"${_}_$i"} = $form->format_amount(\%myconfig, $form->{"${_}_$i"}, 2) } qw(marge_total marge_percent);
+#
+#    # convert " to &quot;
+#    map { $form->{"${_}_$i"} =~ s/\"/&quot;/g }
+#      qw(partnumber description unit unit_old);
+#
+#########################################
+#    # Eintrag fuer Version 2.2.0 geaendert #
+#    # neue Optik im Rechnungsformular      #
+#########################################
+#    $column_data{runningnumber} =
+#      qq|<td><input name="runningnumber_$i" size="5" value="$i"></td>|;    # HuT
+############### ENDE Neueintrag ##################
+#
+#    $column_data{partnumber} =
+#      qq|<td><input name="partnumber_$i" size=12 value="$form->{"partnumber_$i"}"></td>|;
+#
+#    if (($rows = $form->numtextrows($form->{"description_$i"}, 30, 6)) > 1) {
+#      $column_data{description} =
+#        qq|<td><textarea name="description_$i" rows="$rows" cols="30" wrap="soft">| . H($form->{"description_$i"}) . qq|</textarea><button type="button" onclick="set_longdescription_window('longdescription_$i')">| . $locale->text('L') . qq|</button></td>|;
+#    } else {
+#      $column_data{description} =
+#        qq|<td><input name="description_$i" size="30" value="| . $form->quote($form->{"description_$i"}) . qq|"><button type="button" onclick="set_longdescription_window('longdescription_$i')">| . $locale->text('L') . qq|</button></td>|;
+#    }
+#
+#    (my $qty_dec) = ($form->{"qty_$i"} =~ /\.(\d+)/);
+#    $qty_dec = length $qty_dec;
+#
+#    $column_data{qty} =
+#        qq|<td align="right"><input name="qty_$i" size="5" value="|
+#      . $form->format_amount(\%myconfig, $form->{"qty_$i"}, $qty_dec) .qq|">|;
+#    if ($form->{"formel_$i"}) {
+#      $column_data{qty} .= qq|<button type="button" onclick="calculate_qty_selection_window('qty_$i','alu_$i', 'formel_$i', $i)">| . $locale->text('*/') . qq|</button>|
+#        . $cgi->hidden("-name" => "formel_$i", "-value" => $form->{"formel_$i"}) . $cgi->hidden("-name" => "alu_$i", "-value" => $form->{"alu_$i"});
+#    }
+#    $column_data{qty} .= qq|</td>|;
+#    $column_data{ship} =
+#        qq|<td align="right"><input name="ship_$i" size=5 value="|
+#      . $form->format_amount(\%myconfig, $form->{"ship_$i"})
+#      . qq|"></td>|;
+#
+#    my $is_part     = $form->{"inventory_accno_$i"};
+#    my $is_assembly = $form->{"assembly_$i"};
+#    my $is_assigned = $form->{"id_$i"};
+#    my $this_unit = $form->{"unit_$i"};
+#    if ($form->{"selected_unit_$i"} && $this_unit &&
+#        $all_units->{$form->{"selected_unit_$i"}} && $all_units->{$this_unit} &&
+#        ($all_units->{$form->{"selected_unit_$i"}}->{"base_unit"} eq $all_units->{$this_unit}->{"base_unit"})) {
+#      $this_unit = $form->{"selected_unit_$i"};
+#    } elsif (!$is_assigned ||
+#             ($is_part && !$this_unit && ($all_units->{$this_unit} && ($all_units->{$this_unit}->{"base_unit"} eq $all_units->{"kg"}->{"base_unit"})))) {
+#      $this_unit = "kg";
+#    }
+#
+#    my $price_factor_select;
+#    if (0 < scalar @{ $form->{ALL_PRICE_FACTORS} }) {
+#      my @values = ('', map { $_->{id}                      } @{ $form->{ALL_PRICE_FACTORS} });
+#      my %labels =      map { $_->{id} => $_->{description} } @{ $form->{ALL_PRICE_FACTORS} };
+#
+#      $price_factor_select =
+#        NTI($cgi->popup_menu('-name'    => "price_factor_id_$i",
+#                             '-default' => $form->{"price_factor_id_$i"},
+#                             '-values'  => \@values,
+#                             '-labels'  => \%labels,
+#                             '-style'   => 'width:90px'))
+#        . ' ';
+#    }
+#
+#    $column_data{"unit"} = "<td>" .
+#      $price_factor_select .
+#       AM->unit_select_html($is_part || $is_assembly ? $dimension_units :
+#                            $is_assigned ? $service_units : $all_units,
+#                            "unit_$i", $this_unit,
+#                            $is_assigned ? $form->{"unit_$i"} : undef)
+#      . "</td>";
+#
+#    # build in drop down list for pricesgroups
+#    if ($form->{"prices_$i"}) {
+#      if  ($form->{"new_pricegroup_$i"} != $form->{"old_pricegroup_$i"}) {
+#        $price_tmp = $form->format_amount(\%myconfig, $form->{"price_new_$i"}, $decimalplaces);
+#      } else {
+#        $price_tmp = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces);
+#      }
+#
+#      $column_data{sellprice_pg} =
+#      qq|<td align="right"><select name="sellprice_pg_$i">$form->{"prices_$i"}</select></td>|;
+#      $column_data{sellprice} =
+#      qq|<td><input name="sellprice_$i" size="10" value="$price_tmp" onBlur=\"check_right_number_format(this)\"></td>|;
+#    } else {
+#
+#      # for last row and report
+#      # set pricegroup drop down list from report menu
+#      if ($form->{"sellprice_$i"} != 0) {
+#        $prices =
+#          qq|<option value="$form->{"sellprice_$i"}--$form->{"pricegroup_id_$i"}" selected>$form->{"pricegroup_$i"}</option>\n|;
+#
+#        $form->{"pricegroup_old_$i"} = $form->{"pricegroup_id_$i"};
+#
+#        $column_data{sellprice_pg} =
+#          qq|<td align="right"><select name="sellprice_pg_$i">$prices</select></td>|;
+#
+#      } else {
+#
+#        # for last row
+#        $column_data{sellprice_pg} = qq|<td align="right">&nbsp;</td>|;
+#        }
+#        
+#      $column_data{sellprice} =
+#      qq|<td><input name="sellprice_$i" size="10" onBlur=\"check_right_number_format(this)\" value="|
+#        . $form->format_amount(\%myconfig, $form->{"sellprice_$i"},
+#                               $decimalplaces)
+#        . qq|"></td>|;
+#    }
+#    $column_data{discount} =
+#        qq|<td align="right"><input name="discount_$i" size=3 value="|
+#      . $form->format_amount(\%myconfig, $form->{"discount_$i"})
+#      . qq|"></td>|;
+#    $column_data{linetotal} =
+#        qq|<td align="right">|
+#      . $form->format_amount(\%myconfig, $linetotal, 2)
+#      . qq|</td>|;
+#    $column_data{bin} = qq|<td>$form->{"bin_$i"}</td>|;
+#
+#########################################
+#    # Eintrag fuer Version 2.2.0 geaendert #
+#    # neue Optik im Rechnungsformular      #
+#########################################
+#    #     if ($lizenzen &&  $form->{type} eq "invoice" &&  $form->{vc} eq "customer") {
+#    #     $column_data{license} = qq|<td><select name="licensenumber_$i">$form->{"lizenzen_$i"}></select></td>|;
+#    #     }
+#    #
+#    #     if ($form->{type} !~ /_quotation/) {
+#    #     $column_data{serialnr} = qq|<td><input name="serialnumber_$i" size=10 value="$form->{"serialnumber_$i"}"></td>|;
+#    #     }
+#    #
+#    #     $column_data{projectnr} = qq|<td><input name="projectnumber_$i" size=10 value="$form->{"projectnumber_$i"}"></td>|;
+############### ENDE Neueintrag ##################
+#    my $j = $i % 2;
+#    print qq|
+#
+#        <tr valign="top" class="listrow$j">|;
+#
+#    map { print "\n$column_data{$_}" } @column_index;
+#
+#    print("</tr>\n" .
+#          $cgi->hidden("-name" => "unit_old_$i",
+#                       "-value" => $form->{"selected_unit_$i"})
+#          . "\n" .
+#          $cgi->hidden("-name" => "price_new_$i",
+#                       "-value" => $form->format_amount(\%myconfig, $form->{"price_new_$i"}))
+#          . "\n");
+#    map({ print($cgi->hidden("-name" => $_, "-value" => $form->{$_}) . "\n"); }
+#        ("orderitems_id_$i", "bo_$i", "pricegroup_old_$i", "price_old_$i",
+#         "id_$i", "inventory_accno_$i", "bin_$i", "partsgroup_$i", "partnotes_$i",
+#         "income_accno_$i", "expense_accno_$i", "listprice_$i", "assembly_$i",
+#         "taxaccounts_$i", "ordnumber_$i", "transdate_$i", "cusordnumber_$i",
+#         "longdescription_$i", "basefactor_$i", "marge_total_$i", "marge_percent_$i", "lastcost_$i",
+#         "marge_price_factor_$i"));
+#
+#########################################
+#    # Eintrag fuer Version 2.2.0 geaendert #
+#    # neue Optik im Rechnungsformular      #
+#########################################
+#
+#    my $row_style_attr =
+#      'style="display:none;"' if (!$form->{"show_details"});
+#
+#    # print second row
+#    print qq|
+#        <tr  class="listrow$j" $row_style_attr>
+#        <td colspan="$colspan">
+#|;
+#    if ($lizenzen && $form->{type} eq "invoice" && $form->{vc} eq "customer") {
+#      my $selected = $form->{"licensenumber_$i"};
+#      my $lizenzen_quoted;
+#      $form->{"lizenzen_$i"} =~ s/ selected//g;
+#      $form->{"lizenzen_$i"} =~
+#        s/value="${selected}"\>/value="${selected}" selected\>/;
+#      $lizenzen_quoted = $form->{"lizenzen_$i"};
+#      $lizenzen_quoted =~ s/\"/&quot;/g;
+#      print qq|
+#      <b>Lizenz\#</b>&nbsp;<select name="licensenumber_$i" size="1">
+#      $form->{"lizenzen_$i"}
+#        </select>
+#      <input type="hidden" name="lizenzen_$i" value="${lizenzen_quoted}">
+#|;
+#    }
+#    if ($form->{type} !~ /_quotation/) {
+#      print qq|
+#          <b>$serialnumber</b>&nbsp;<input name="serialnumber_$i" size="15" value="$form->{"serialnumber_$i"}">|;
+#    }
+#
+#    print qq|<b>$projectnumber</b>&nbsp;| .
+#      NTI($cgi->popup_menu('-name' => "project_id_$i",
+#                           '-values' => \@projectnumber_values,
+#                           '-labels' => \%projectnumber_labels,
+#                           '-default' => $form->{"project_id_$i"}));
+#
+#    if ($form->{type} eq 'invoice' or $form->{type} =~ /order/) {
+#      my $reqdate_term =
+#        ($form->{type} eq 'invoice')
+#        ? 'deliverydate'
+#        : 'reqdate';    # invoice uses a different term for the same thing.
+#      print qq|
+#        <b>${$reqdate_term}</b>&nbsp;<input name="${reqdate_term}_$i" size="11" onBlur="check_right_date_format(this)" value="$form->{"${reqdate_term}_$i"}">
+#|;
+#    }
+#    my $subtotalchecked = ($form->{"subtotal_$i"}) ? "checked" : "";
+#    print qq|
+#          <b>|.$locale->text('Subtotal').qq|</b>&nbsp;<input type="checkbox" name="subtotal_$i" value="1" $subtotalchecked>
+#|;
+#
+#    if ($form->{"id_$i"} && $is_sales) {
+#      my $marge_price_factor;
+#
+#      $form->{"marge_price_factor_$i"} *= 1;
+#
+#      if ($form->{"marge_price_factor_$i"} && (1 != $form->{"marge_price_factor_$i"})) {
+#        $marge_price_factor = '/' . $form->format_amount(\%myconfig, $form->{"marge_price_factor_$i"});
+#      }
+#
+#      print qq|
+#          ${marge_font_start}<b>| . $locale->text('Ertrag') . qq|</b>&nbsp;$form->{"marge_total_$i"}&nbsp;$form->{"marge_percent_$i"} % ${marge_font_end}|;
+#   }
+#   print qq|
+#          &nbsp;<b>| . $locale->text('LP') . qq|</b>&nbsp;| . $form->format_amount(\%myconfig, $form->{"listprice_$i"}, 2) . qq|
+#          &nbsp;<b>| . $locale->text('EK') . qq|</b>&nbsp;| . $form->format_amount(\%myconfig, $form->{"lastcost_$i"}, 2) . $marge_price_factor;
+#
+#
+#    print qq|
+#        </td>
+#      </tr>
+#|;
+#
+############### ENDE Neueintrag ##################
+#
+#    map { $form->{"${_}_base"} += $linetotal }
+#      (split(/ /, $form->{"taxaccounts_$i"}));
+#
+#    $form->{invsubtotal} += $linetotal;
+#  }
+#
+#  print qq|
+#      </table>
+#    </td>
+#  </tr>
+#|;
+#
+#  if (0 != ($form->{sellprice_total} * 1)) {
+#    $form->{marge_percent} = ($form->{sellprice_total} - $form->{lastcost_total}) / $form->{sellprice_total} * 100;
+#  }
+#
+#  $lxdebug->leave_sub();
+#}
 
 sub set_pricegroup {
   $lxdebug->enter_sub();
index 69d7951..118aac3 100644 (file)
@@ -90,6 +90,215 @@ use Data::Dumper;
 # Eintrag fuer Version 2.2.0 geaendert #
 # neue Optik im Rechnungsformular      #
 ########################################
+sub display_row {
+  $lxdebug->enter_sub();
+  my $numrows = shift;
+
+  # column_index
+  my @header_sort = qw(runningnumber partnumber description ship qty unit sellprice_pg sellprice discount linetotal);
+  my @HEADER = (
+    {  id => 'runningnumber', width => 5,     value => $locale->text('No.'),                  display => 1, },
+    {  id => 'partnumber',    width => 12,    value => $locale->text('Number'),               display => 1, },
+    {  id => 'description',   width => 30,    value => $locale->text('Part Description'),     display => 1, },
+    {  id => 'ship',          width => 5,     value => ($form->{type} eq 'purchase_order' ? $locale->text('Ship rcvd') : $locale->text('Ship')),                 
+       display => $form->{type} =~ /sales_order/ || ($form->{type} =~ /purchase_order/ && !($lizenzen && $form->{vc} eq "customer")) , },
+    {  id => 'qty',           width => 5,     value => $locale->text('Qty'),                  display => 1, },
+    {  id => 'unit',          width => 5,     value => $locale->text('Unit'),                 display => 1, },
+    {  id => 'license',       width => 10,    value => $locale->text('License'),              display => 0, },
+    {  id => 'serialnr',      width => 10,    value => $locale->text('Serial No.'),           display => 0, },
+    {  id => 'projectnr',     width => 10,    value => $locale->text('Project'),              display => 0, },
+    {  id => 'sellprice',     width => 15,    value => $locale->text('Price'),                display => 1, },
+    {  id => 'sellprice_pg',  width => 15,    value => $locale->text('Pricegroup'),           display => $form->{type} =~ /^sales_/,  },
+    {  id => 'discount',      width => 5,     value => $locale->text('Discount'),             display => $form->{vc} eq 'customer', },
+    {  id => 'linetotal',     width => 10,    value => $locale->text('Extended'),             display => 1, },
+    {  id => 'bin',           width => 10,    value => $locale->text('Bin'),                  display => 0, },
+  ); 
+  my @column_index = map { $_->{id} } grep { $_->{display} } @HEADER;
+
+  # cache units
+  my $dimension_units = AM->retrieve_units(\%myconfig, $form, "dimension");
+  my $service_units   = AM->retrieve_units(\%myconfig, $form, "service");
+  my $all_units       = AM->retrieve_units(\%myconfig, $form);
+
+  my $colspan = scalar @column_index;
+
+  $form->{invsubtotal} = 0;
+  map { $form->{"${_}_base"} = 0 } (split(/ /, $form->{taxaccounts}));
+
+  # about details 
+  $myconfig{show_form_details} = 1                            unless (defined($myconfig{show_form_details}));
+  $form->{show_details}        = $myconfig{show_form_details} unless (defined($form->{show_details}));
+  # /about details
+
+  # translations, unused commented out
+#  $runningnumber = $locale->text('No.');
+  $deliverydate  = $locale->text('Delivery Date');
+  $serialnumber  = $locale->text('Serial No.');
+  $projectnumber = $locale->text('Project');
+#  $partsgroup    = $locale->text('Group');
+  $reqdate       = $locale->text('Reqdate');
+  $deliverydate  = $locale->text('Required by');
+
+  # special alignings
+  my %align = map { $_ => 'right' } qw(qty ship right sellprice_pg discount linetotal);
+
+  $form->{marge_total}           = 0;
+  $form->{sellprice_total}       = 0;
+  $form->{lastcost_total}        = 0;
+  my %projectnumber_labels = ();
+  my @projectnumber_values = ("");
+
+  foreach my $item (@{ $form->{"ALL_PROJECTS"} }) {
+    push(@projectnumber_values, $item->{"id"});
+    $projectnumber_labels{$item->{"id"}} = $item->{"projectnumber"};
+  }
+
+  # rows
+  for $i (1 .. $numrows) {
+
+    # undo formatting
+    map { $form->{"${_}_$i"} = $form->parse_amount(\%myconfig, $form->{"${_}_$i"}) } qw(qty ship discount sellprice price_new price_old) unless ($form->{simple_save});
+
+# unit begin
+    $form->{"unit_old_$i"}      ||= $form->{"unit_$i"};
+    $form->{"selected_unit_$i"} ||= $form->{"unit_$i"};
+
+    my $local_units = $form->{"inventory_accno_$i"} || $form->{"assembly_$i"} ? $dimension_units 
+                    : $form->{"id_$i"}                                        ? $service_units 
+                    :                                                           $all_units;
+    if (   !$local_units->{$form->{"selected_unit_$i"}}                                          # Die ausgewaehlte Einheit ist fuer diesen Artikel nicht gueltig
+        || !AM->convert_unit($form->{"selected_unit_$i"}, $form->{"unit_old_$i"}, $all_units)) { # (z.B. Dimensionseinheit war ausgewaehlt, es handelt sich aber
+      $form->{"unit_old_$i"} = $form->{"selected_unit_$i"} = $form->{"unit_$i"};                 # um eine Dienstleistung). Dann keinerlei Umrechnung vornehmen.
+    }
+    # adjust prices by unit, ignore if pricegroup changed
+    if ((!$form->{"prices_$i"}) || ($form->{"new_pricegroup_$i"} == $form->{"old_pricegroup_$i"})) {
+        $form->{"sellprice_$i"} *= AM->convert_unit($form->{"selected_unit_$i"}, $form->{"unit_old_$i"}, $all_units) || 1;
+        $form->{"unit_old_$i"}   = $form->{"selected_unit_$i"};
+    }
+    my $this_unit = $form->{"unit_$i"};
+    $this_unit    = $form->{"selected_unit_$i"} if AM->convert_unit($this_unit, $form->{"selected_unit_$i"}, $all_units);
+    $this_unit  ||= "kg";
+
+    $column_data{"unit"} = AM->unit_select_html($local_units, "unit_$i", $this_unit, $form->{"id_$i"} ? $form->{"unit_$i"} : undef);
+# / unit ending
+
+    $form->{"sellprice_$i"} =~ /\.(\d+)/;
+    $decimalplaces = max 2, length $1;
+
+    $discount  = $form->round_amount($form->{"sellprice_$i"} * $form->{"discount_$i"} / 100, $decimalplaces);
+    $linetotal = $form->round_amount($form->{"sellprice_$i"} - $discount, $decimalplaces);
+    $linetotal = $form->round_amount($linetotal * $form->{"qty_$i"}, 2);
+
+    # convert " to &quot;
+    map { $form->{"${_}_$i"} =~ s/\"/&quot;/g } qw(partnumber description unit unit_old);
+
+    $column_data{runningnumber} = $cgi->textfield(-name => "runningnumber_$i", -size => 5,  -value => $i);    # HuT
+    $column_data{partnumber}    = $cgi->textfield(-name => "partnumber_$i",    -size => 12, -value => $form->{"partnumber_$i"});
+    $column_data{description} = ((($rows = $form->numtextrows($form->{"description_$i"}, 30, 6)) > 1) # if description is too large, use a textbox instead
+                                ? $cgi->textarea( -name => "description_$i", -default => H($form->{"description_$i"}), -rows => $rows, -columns => 30)
+                                : $cgi->textfield(-name => "description_$i",   -size => 30, -value => $form->quote($form->{"description_$i"})))
+                                . $cgi->button(-value => $locale->text('L'), -onClick => "set_longdescription_window('longdescription_$i')");
+
+    $form->{"qty_$i"} =~ /\.(\d+)/;
+    my $qty_dec = length $1;
+
+    $column_data{qty}  = $cgi->textfield(-name => "qty_$i", -size => 5, -value => $form->format_amount(\%myconfig, $form->{"qty_$i"}, $qty_dec));
+    $column_data{qty} .= $cgi->button(-onclick => "calculate_qty_selection_window('qty_$i','alu_$i', 'formel_$i', $i)", -value => $locale->text('*/'))
+                       . $cgi->hidden(-name => "formel_$i", -value => $form->{"formel_$i"}) . $cgi->hidden("-name" => "alu_$i", "-value" => $form->{"alu_$i"})
+      if $form->{"formel_$i"};
+    $column_data{ship} = $cgi->textfield(-name => "ship_$i", -size => 5, -value => $form->format_amount(\%myconfig, $form->{"ship_$i"}));
+
+    # build in drop down list for pricesgroups
+    if ($form->{"prices_$i"}) {
+      $column_data{sellprice_pg} = qq|<select name="sellprice_pg_$i">$form->{"prices_$i"}</select>|;
+      $column_data{sellprice}    = $cgi->textfield(-name => "sellprice_$i", -size => 10, -onBlur => 'check_right_number_format(this)', -value =>
+                                   (($form->{"new_pricegroup_$i"} != $form->{"old_pricegroup_$i"})
+                                      ? $form->format_amount(\%myconfig, $form->{"price_new_$i"}, $decimalplaces)
+                                      : $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces)));
+    } else {
+      # for last row and report
+      # set pricegroup drop down list from report menu
+      if ($form->{"sellprice_$i"} != 0) {
+        $form->{"pricegroup_old_$i"} = $form->{"pricegroup_id_$i"};
+        my $default_option           = $form->{"sellprice_$i"}.'--'.$form->{"pricegroup_id_$i"};
+        $column_data{sellprice_pg}   = NTI($cgi->popup_menu("sellpricepg_$i", [ $default_option ], $default_option, { $default_option => $form->{"pricegroup_$i"} || '' }));
+      } else {
+        $column_data{sellprice_pg} = qq|&nbsp;|;
+      }
+      $column_data{sellprice} = $cgi->textfield(-name => "sellprice_$i", -size => 10, -onBlur => "check_right_number_format(this)", -value =>
+                                                $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces));
+    }
+    $column_data{discount}    = $cgi->textfield(-name => "discount_$i", -size => 3, -value => $form->format_amount(\%myconfig, $form->{"discount_$i"}));
+    $column_data{linetotal}   = $form->format_amount(\%myconfig, $linetotal, 2);
+    $column_data{bin}         = $form->{"bin_$i"};
+
+    my @ROW1 = map { value => $column_data{$_}, align => $align{$_} }, @column_index;
+
+    # second row
+    my @ROW2 = ();
+    push @ROW2, { value => qq|<b>$serialnumber</b> <input name="serialnumber_$i" size="15" value="$form->{"serialnumber_$i"}">| } 
+      if $form->{type} !~ /_quotation/;
+    push @ROW2, { value => qq|<b>$projectnumber</b> | . NTI($cgi->popup_menu('-name'  => "project_id_$i",        '-values'  => \@projectnumber_values,
+                                                                             '-labels' => \%projectnumber_labels, '-default' => $form->{"project_id_$i"})) };
+    push @ROW2, { value => qq|<b>$reqdate</b> <input name="reqdate_$i" size="11" onBlur="check_right_date_format(this)" value="$form->{"reqdate_$i"}">| }
+      if $form->{type} =~ /order/;
+    push @ROW2, { value => sprintf qq|<b>%s</b>&nbsp;<input type="checkbox" name="subtotal_$i" value="1" %s>|, 
+                   $locale->text('Subtotal'), $form->{"subtotal_$i"} ? 'checked' : '' };
+
+# begin marge calculations
+    my $marge_color;
+    my $real_sellprice = $form->{"sellprice_$i"} - $discount;
+
+    $form->{"lastcost_$i"} *= 1;
+    $form->{"marge_percent_$i"} = 0;
+
+    if ($real_sellprice && ($form->{"qty_$i"} * 1)) {
+      $form->{"marge_percent_$i"}     = ($real_sellprice - $form->{"lastcost_$i"}) * 100 / $real_sellprice;
+      $myconfig{marge_percent_warn} ||= 15;
+      $marge_color                    = 'color="#ff0000"' if $form->{"id_$i"} && ($form->{"marge_percent_$i"} < (1 * $myconfig{marge_percent_warn}));
+    }
+
+    my $marge_adjust_credit_note = $form->{type} eq 'credit_note' ? -1 : 1;
+    $form->{"marge_absolut_$i"}  = ($real_sellprice - $form->{"lastcost_$i"}) * $form->{"qty_$i"} * $marge_adjust_credit_note;
+    $form->{"marge_total"}      += $form->{"marge_absolut_$i"};
+    $form->{"lastcost_total"}   += $form->{"lastcost_$i"} * $form->{"qty_$i"};
+    $form->{"sellprice_total"}  += $real_sellprice * $form->{"qty_$i"};
+
+    map { $form->{"${_}_$i"} = $form->format_amount(\%myconfig, $form->{"${_}_$i"}, 2) } qw(marge_absolut marge_percent);
+
+    push @ROW2, { value => sprintf qq|<font %s><b>%s</b> %s &nbsp;%s%% </font> &nbsp;<b>%s</b> %s &nbsp;<b>%s</b> %s|,
+                   $marge_color, $locale->text('Ertrag'),$form->{"marge_absolut_$i"}, $form->{"marge_percent_$i"},
+                   $locale->text('LP'), $form->format_amount(\%myconfig, $form->{"listprice_$i"}, 2),
+                   $locale->text('EK'), $form->format_amount(\%myconfig, $form->{"lastcost_$i"}, 2) }
+      if $form->{"id_$i"} && $form->{type} =~ /^sales_/;
+# / marge calculations ending
+
+    my @HIDDENS = map { value => $_}, (
+          $cgi->hidden("-name" => "unit_old_$i", "-value" => $form->{"selected_unit_$i"}),
+          $cgi->hidden("-name" => "price_new_$i", "-value" => $form->format_amount(\%myconfig, $form->{"price_new_$i"})),
+          map { ($cgi->hidden("-name" => $_, "-value" => $form->{$_})); } map { $_."_$i" } 
+            qw(orderitems_id bo pricegroup_old price_old id inventory_accno bin partsgroup partnotes
+               income_accno expense_accno listprice assembly taxaccounts ordnumber transdate cusordnumber
+               longdescription basefactor marge_absolut marge_percent lastcost)
+    );
+
+    map { $form->{"${_}_base"} += $linetotal } (split(/ /, $form->{"taxaccounts_$i"}));
+
+    $form->{invsubtotal} += $linetotal;
+
+    push @ROWS, { ROW1 => \@ROW1, ROW2 => \@ROW2, HIDDENS => \@HIDDENS, colspan => $colspan, };
+  }
+
+  print $form->parse_html_template('oe/sales_order', { ROWS   => \@ROWS,
+                                                       HEADER => \@HEADER,
+                                                     });
+
+  if (0 != ($form->{sellprice_total} * 1)) {
+    $form->{marge_percent} = ($form->{sellprice_total} - $form->{lastcost_total}) / $form->{sellprice_total} * 100;
+  }
+
+  $lxdebug->leave_sub();
+}
 
 ##################################################
 # build html-code for pricegroups in variable $form->{prices_$j}
index b515be1..c7d289f 100644 (file)
@@ -367,65 +367,18 @@ sub form_header {
                                         limit => $myconfig{vclimit} + 1 },
                    "price_factors" => "ALL_PRICE_FACTORS");
 
-  # contacts
-  @values = ("", map { $_->{cp_id} } @{ $form->{ALL_CONTACTS} });
-  %labels = map { $_->{cp_id} => $_->{"cp_name"} . ($_->{cp_abteilung} ? " ($_->{cp_abteilung})" : "") } @{ $form->{ALL_CONTACTS} };
-  $TMPL_VAR{contact} = NTI($cgi->popup_menu('-name' => 'cp_id', '-values' => \@values, '-style' => 'width: 250px',
-                                            '-labels' => \%labels, '-default' => $form->{"cp_id"})) if scalar @values > 1;
+  # label subs
+  $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 { $_[0]->{"cp_name"} . ($_[0]->{cp_abteilung} ? " ($_[0]->{cp_abteilung})" : "") };
 
   # vendor/customer
-  @values = map { "$_->{name}--$_->{id}" } @{ $form->{uc "all_$form->{vc}s" } };
-  %labels = map { +"$_->{name}--$_->{id}" => $_->{name} } @{ $form->{uc "all_$form->{vc}s" } };
+  $TMPL_VAR{vc_keys} = sub { "$_[0]->{name}--$_[0]->{id}" };
+  $TMPL_VAR{vclimit} = $myconfig{vclimit};
+  $TMPL_VAR{vc_select} = "customer_or_vendor_selection_window('$form->{vc}', '', @{[ $form->{vc} eq 'vendor' ? 1 : 0 ]}, 0)";
   push @custom_hiddens, "$form->{vc}_id";
   push @custom_hiddens, "old$form->{vc}";
   push @custom_hiddens, "select$form->{vc}";
-  $TMPL_VAR{vc} = sprintf qq|<th align="right">%s</th><td>%s<input type="button" value="?" onclick="show_vc_details('$form->{vc}')"></td>|,
-       $locale->text(ucfirst $form->{vc}), 
-       ($myconfig{vclimit} <=  scalar(@values)) 
-        ? $cgi->textfield(-value => H($form->{"old$form->{vc}"} =~ /^(.*)\-\-.*$/), -name => $form->{vc}) 
-        : NTI($cgi->popup_menu('-name' => "$form->{vc}", '-default' => $form->{"old$form->{vc}"}, 
-                               '-onChange' => "document.getElementById('update_button').click();",
-                               '-values' => \@values, '-labels' => \%labels, '-style' => 'width: 250px'));
-
-  # payments (for footer)
-  @values = ("", map { $_->{id} } @{ $form->{ALL_PAYMENTS} });
-  %labels = map { $_->{id} => $_->{description} } @{ $form->{ALL_PAYMENTS} };
-  $TMPL_VAR{payments} = NTI($cgi->popup_menu('-name' => 'payment_id', '-values' => \@values, '-style' => 'width: 250px',
-                                             '-labels' => \%labels, '-default' => $form->{payment_id}));
-
-  # shipto
-  @values = ("", map { $_->{shipto_id} } @{ $form->{ALL_SHIPTO} });
-  $TMPL_VAR{ALL_SHIPTO} = $form->{ALL_SHIPTO};
-  for my $item ( @{ $TMPL_VAR{ALL_SHIPTO} }) {
-     $item->{label} = join "; ", grep { $_ } map { $item->{"shipto${_}" } } qw(name department_1 street city);
-  }
-  %labels = map { my $item=$_; $_->{shipto_id} => join "; ", grep { $_ } map { $item->{"shipto${_}" } } qw(name department_1 street city) } @{ $form->{ALL_SHIPTO} };
-  $TMPL_VAR{shipto} = NTI($cgi->popup_menu('-name' => 'shipto_id', '-values' => \@values, '-style' => 'width: 250px',
-                                           '-labels' => \%labels, '-default' => $form->{"shipto_id"})) if scalar @values > 1;
-
-  # projects
-  @values = ("", map { $_->{id} } @{ $form->{ALL_PROJECTS} });
-  %labels = map { $_->{id} => $_->{projectnumber} } @{ $form->{ALL_PROJECTS} };
-  $TMPL_VAR{globalprojectnumber} = NTI($cgi->popup_menu('-name' => 'globalproject_id', '-values' => \@values,
-                                                        '-labels' => \%labels, '-default' => $form->{"globalproject_id"}));
-  
-  # salesmen
-  @values = map { $_->{id} } @{ $form->{ALL_SALESMEN} };
-  %labels = map { $_->{id} => ($_->{name} || $_->{login}) } @{ $form->{ALL_SALESMEN} };
-  $TMPL_VAR{salesmen} = NTI($cgi->popup_menu('-name' => 'salesman_id', '-default' => $form->{"salesman_id"} ? $form->{"salesman_id"} : $form->{"employee_id"},
-                                             '-values' => \@values, '-labels' => \%labels)) if $form->{type} =~ /^sales_/ && scalar @values;
-
-  # employees
-  @values = map { $_->{id} } @{ $form->{ALL_EMPLOYEES} };
-  %labels = map { $_->{id} => $_->{name} || $_->{login} } @{ $form->{ALL_EMPLOYEES} };
-  $TMPL_VAR{employee} = NTI($cgi->popup_menu('-name' => 'employee_id', '-default' => $form->{"employee_id"},
-                                             '-values' => \@values, '-labels' => \%labels));
-
-  # taxzone
-  @values = map { $_->{id} } @{ $form->{ALL_TAXZONES} };
-  %labels = map { $_->{id} => $_->{description} } @{ $form->{ALL_TAXZONES} };
-  $TMPL_VAR{taxzone} = NTI($cgi->popup_menu('-name' => 'taxzone_id', '-default' => $form->{"taxzone_id"},
-                                            '-values' => \@values, '-labels' => \%labels, '-style' => 'width: 250px'));
 
   # currencies and exchangerate
   @values = map { $_ } @{ $form->{ALL_CURRENCIES} };
@@ -2000,212 +1953,3 @@ sub display_form {
   $lxdebug->leave_sub();
 }
 
-sub display_row {
-  $lxdebug->enter_sub();
-  my $numrows = shift;
-
-  # column_index
-  my @header_sort = qw(runningnumber partnumber description ship qty unit sellprice_pg sellprice discount linetotal);
-  my @HEADER = (
-    {  id => 'runningnumber', width => 5,     value => $locale->text('No.'),                  display => 1, },
-    {  id => 'partnumber',    width => 12,    value => $locale->text('Number'),               display => 1, },
-    {  id => 'description',   width => 30,    value => $locale->text('Part Description'),     display => 1, },
-    {  id => 'ship',          width => 5,     value => ($form->{type} eq 'purchase_order' ? $locale->text('Ship rcvd') : $locale->text('Ship')),                 
-       display => $form->{type} =~ /sales_order/ || ($form->{type} =~ /purchase_order/ && !($lizenzen && $form->{vc} eq "customer")) , },
-    {  id => 'qty',           width => 5,     value => $locale->text('Qty'),                  display => 1, },
-    {  id => 'unit',          width => 5,     value => $locale->text('Unit'),                 display => 1, },
-    {  id => 'license',       width => 10,    value => $locale->text('License'),              display => 0, },
-    {  id => 'serialnr',      width => 10,    value => $locale->text('Serial No.'),           display => 0, },
-    {  id => 'projectnr',     width => 10,    value => $locale->text('Project'),              display => 0, },
-    {  id => 'sellprice',     width => 15,    value => $locale->text('Price'),                display => 1, },
-    {  id => 'sellprice_pg',  width => 15,    value => $locale->text('Pricegroup'),           display => $form->{type} =~ /^sales_/,  },
-    {  id => 'discount',      width => 5,     value => $locale->text('Discount'),             display => $form->{vc} eq 'customer', },
-    {  id => 'linetotal',     width => 10,    value => $locale->text('Extended'),             display => 1, },
-    {  id => 'bin',           width => 10,    value => $locale->text('Bin'),                  display => 0, },
-  ); 
-  my @column_index = map { $_->{id} } grep { $_->{display} } @HEADER;
-
-  # cache units
-  my $dimension_units = AM->retrieve_units(\%myconfig, $form, "dimension");
-  my $service_units   = AM->retrieve_units(\%myconfig, $form, "service");
-  my $all_units       = AM->retrieve_units(\%myconfig, $form);
-
-  my $colspan = scalar @column_index;
-
-  $form->{invsubtotal} = 0;
-  map { $form->{"${_}_base"} = 0 } (split(/ /, $form->{taxaccounts}));
-
-  # about details 
-  $myconfig{show_form_details} = 1                            unless (defined($myconfig{show_form_details}));
-  $form->{show_details}        = $myconfig{show_form_details} unless (defined($form->{show_details}));
-  # /about details
-
-  # translations, unused commented out
-#  $runningnumber = $locale->text('No.');
-  $deliverydate  = $locale->text('Delivery Date');
-  $serialnumber  = $locale->text('Serial No.');
-  $projectnumber = $locale->text('Project');
-#  $partsgroup    = $locale->text('Group');
-  $reqdate       = $locale->text('Reqdate');
-  $deliverydate  = $locale->text('Required by');
-
-  # special alignings
-  my %align = map { $_ => 'right' } qw(qty ship right sellprice_pg discount linetotal);
-
-  $form->{marge_total}           = 0;
-  $form->{sellprice_total}       = 0;
-  $form->{lastcost_total}        = 0;
-  my %projectnumber_labels = ();
-  my @projectnumber_values = ("");
-
-  foreach my $item (@{ $form->{"ALL_PROJECTS"} }) {
-    push(@projectnumber_values, $item->{"id"});
-    $projectnumber_labels{$item->{"id"}} = $item->{"projectnumber"};
-  }
-
-  # rows
-  for $i (1 .. $numrows) {
-
-    # undo formatting
-    map { $form->{"${_}_$i"} = $form->parse_amount(\%myconfig, $form->{"${_}_$i"}) } qw(qty ship discount sellprice price_new price_old) unless ($form->{simple_save});
-
-# unit begin
-    $form->{"unit_old_$i"}      ||= $form->{"unit_$i"};
-    $form->{"selected_unit_$i"} ||= $form->{"unit_$i"};
-
-    my $local_units = $form->{"inventory_accno_$i"} || $form->{"assembly_$i"} ? $dimension_units 
-                    : $form->{"id_$i"}                                        ? $service_units 
-                    :                                                           $all_units;
-    if (   !$local_units->{$form->{"selected_unit_$i"}}                                          # Die ausgewaehlte Einheit ist fuer diesen Artikel nicht gueltig
-        || !AM->convert_unit($form->{"selected_unit_$i"}, $form->{"unit_old_$i"}, $all_units)) { # (z.B. Dimensionseinheit war ausgewaehlt, es handelt sich aber
-      $form->{"unit_old_$i"} = $form->{"selected_unit_$i"} = $form->{"unit_$i"};                 # um eine Dienstleistung). Dann keinerlei Umrechnung vornehmen.
-    }
-    # adjust prices by unit, ignore if pricegroup changed
-    if ((!$form->{"prices_$i"}) || ($form->{"new_pricegroup_$i"} == $form->{"old_pricegroup_$i"})) {
-        $form->{"sellprice_$i"} *= AM->convert_unit($form->{"selected_unit_$i"}, $form->{"unit_old_$i"}, $all_units) || 1;
-        $form->{"unit_old_$i"}   = $form->{"selected_unit_$i"};
-    }
-    my $this_unit = $form->{"unit_$i"};
-    $this_unit    = $form->{"selected_unit_$i"} if AM->convert_unit($this_unit, $form->{"selected_unit_$i"}, $all_units);
-    $this_unit  ||= "kg";
-
-    $column_data{"unit"} = AM->unit_select_html($local_units, "unit_$i", $this_unit, $form->{"id_$i"} ? $form->{"unit_$i"} : undef);
-# / unit ending
-
-    $form->{"sellprice_$i"} =~ /\.(\d+)/;
-    $decimalplaces = max 2, length $1;
-
-    $discount  = $form->round_amount($form->{"sellprice_$i"} * $form->{"discount_$i"} / 100, $decimalplaces);
-    $linetotal = $form->round_amount($form->{"sellprice_$i"} - $discount, $decimalplaces);
-    $linetotal = $form->round_amount($linetotal * $form->{"qty_$i"}, 2);
-
-    # convert " to &quot;
-    map { $form->{"${_}_$i"} =~ s/\"/&quot;/g } qw(partnumber description unit unit_old);
-
-    $column_data{runningnumber} = $cgi->textfield(-name => "runningnumber_$i", -size => 5,  -value => $i);    # HuT
-    $column_data{partnumber}    = $cgi->textfield(-name => "partnumber_$i",    -size => 12, -value => $form->{"partnumber_$i"});
-    $column_data{description} = ((($rows = $form->numtextrows($form->{"description_$i"}, 30, 6)) > 1) # if description is too large, use a textbox instead
-                                ? $cgi->textarea( -name => "description_$i", -default => H($form->{"description_$i"}), -rows => $rows, -columns => 30)
-                                : $cgi->textfield(-name => "description_$i",   -size => 30, -value => $form->quote($form->{"description_$i"})))
-                                . $cgi->button(-value => $locale->text('L'), -onClick => "set_longdescription_window('longdescription_$i')");
-
-    $form->{"qty_$i"} =~ /\.(\d+)/;
-    my $qty_dec = length $1;
-
-    $column_data{qty}  = $cgi->textfield(-name => "qty_$i", -size => 5, -value => $form->format_amount(\%myconfig, $form->{"qty_$i"}, $qty_dec));
-    $column_data{qty} .= $cgi->button(-onclick => "calculate_qty_selection_window('qty_$i','alu_$i', 'formel_$i', $i)", -value => $locale->text('*/'))
-                       . $cgi->hidden(-name => "formel_$i", -value => $form->{"formel_$i"}) . $cgi->hidden("-name" => "alu_$i", "-value" => $form->{"alu_$i"})
-      if $form->{"formel_$i"};
-    $column_data{ship} = $cgi->textfield(-name => "ship_$i", -size => 5, -value => $form->format_amount(\%myconfig, $form->{"ship_$i"}));
-
-    # build in drop down list for pricesgroups
-    if ($form->{"prices_$i"}) {
-      $column_data{sellprice_pg} = qq|<select name="sellprice_pg_$i">$form->{"prices_$i"}</select>|;
-      $column_data{sellprice}    = $cgi->textfield(-name => "sellprice_$i", -size => 10, -onBlur => 'check_right_number_format(this)', -value =>
-                                   (($form->{"new_pricegroup_$i"} != $form->{"old_pricegroup_$i"})
-                                      ? $form->format_amount(\%myconfig, $form->{"price_new_$i"}, $decimalplaces)
-                                      : $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces)));
-    } else {
-      # for last row and report
-      # set pricegroup drop down list from report menu
-      if ($form->{"sellprice_$i"} != 0) {
-        $form->{"pricegroup_old_$i"} = $form->{"pricegroup_id_$i"};
-        my $default_option           = $form->{"sellprice_$i"}.'--'.$form->{"pricegroup_id_$i"};
-        $column_data{sellprice_pg}   = NTI($cgi->popup_menu("sellpricepg_$i", [ $default_option ], $default_option, { $default_option => $form->{"pricegroup_$i"} || '' }));
-      } else {
-        $column_data{sellprice_pg} = qq|&nbsp;|;
-      }
-      $column_data{sellprice} = $cgi->textfield(-name => "sellprice_$i", -size => 10, -onBlur => "check_right_number_format(this)", -value =>
-                                                $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces));
-    }
-    $column_data{discount}    = $cgi->textfield(-name => "discount_$i", -size => 3, -value => $form->format_amount(\%myconfig, $form->{"discount_$i"}));
-    $column_data{linetotal}   = $form->format_amount(\%myconfig, $linetotal, 2);
-    $column_data{bin}         = $form->{"bin_$i"};
-
-    my @ROW1 = map { value => $column_data{$_}, align => $align{$_} }, @column_index;
-
-    # second row
-    my @ROW2 = ();
-    push @ROW2, { value => qq|<b>$serialnumber</b> <input name="serialnumber_$i" size="15" value="$form->{"serialnumber_$i"}">| } 
-      if $form->{type} !~ /_quotation/;
-    push @ROW2, { value => qq|<b>$projectnumber</b> | . NTI($cgi->popup_menu('-name'  => "project_id_$i",        '-values'  => \@projectnumber_values,
-                                                                             '-labels' => \%projectnumber_labels, '-default' => $form->{"project_id_$i"})) };
-    push @ROW2, { value => qq|<b>$reqdate</b> <input name="reqdate_$i" size="11" onBlur="check_right_date_format(this)" value="$form->{"reqdate_$i"}">| }
-      if $form->{type} =~ /order/;
-    push @ROW2, { value => sprintf qq|<b>%s</b>&nbsp;<input type="checkbox" name="subtotal_$i" value="1" %s>|, 
-                   $locale->text('Subtotal'), $form->{"subtotal_$i"} ? 'checked' : '' };
-
-# begin marge calculations
-    my $marge_color;
-    my $real_sellprice = $form->{"sellprice_$i"} - $discount;
-
-    $form->{"lastcost_$i"} *= 1;
-    $form->{"marge_percent_$i"} = 0;
-
-    if ($real_sellprice && ($form->{"qty_$i"} * 1)) {
-      $form->{"marge_percent_$i"}     = ($real_sellprice - $form->{"lastcost_$i"}) * 100 / $real_sellprice;
-      $myconfig{marge_percent_warn} ||= 15;
-      $marge_color                    = 'color="#ff0000"' if $form->{"id_$i"} && ($form->{"marge_percent_$i"} < (1 * $myconfig{marge_percent_warn}));
-    }
-
-    my $marge_adjust_credit_note = $form->{type} eq 'credit_note' ? -1 : 1;
-    $form->{"marge_absolut_$i"}  = ($real_sellprice - $form->{"lastcost_$i"}) * $form->{"qty_$i"} * $marge_adjust_credit_note;
-    $form->{"marge_total"}      += $form->{"marge_absolut_$i"};
-    $form->{"lastcost_total"}   += $form->{"lastcost_$i"} * $form->{"qty_$i"};
-    $form->{"sellprice_total"}  += $real_sellprice * $form->{"qty_$i"};
-
-    map { $form->{"${_}_$i"} = $form->format_amount(\%myconfig, $form->{"${_}_$i"}, 2) } qw(marge_absolut marge_percent);
-
-    push @ROW2, { value => sprintf qq|<font %s><b>%s</b> %s &nbsp;%s%% </font> &nbsp;<b>%s</b> %s &nbsp;<b>%s</b> %s|,
-                   $marge_color, $locale->text('Ertrag'),$form->{"marge_absolut_$i"}, $form->{"marge_percent_$i"},
-                   $locale->text('LP'), $form->format_amount(\%myconfig, $form->{"listprice_$i"}, 2),
-                   $locale->text('EK'), $form->format_amount(\%myconfig, $form->{"lastcost_$i"}, 2) }
-      if $form->{"id_$i"} && $form->{type} =~ /^sales_/;
-# / marge calculations ending
-
-    my @HIDDENS = map { value => $_}, (
-          $cgi->hidden("-name" => "unit_old_$i", "-value" => $form->{"selected_unit_$i"}),
-          $cgi->hidden("-name" => "price_new_$i", "-value" => $form->format_amount(\%myconfig, $form->{"price_new_$i"})),
-          map { ($cgi->hidden("-name" => $_, "-value" => $form->{$_})); } map { $_."_$i" } 
-            qw(orderitems_id bo pricegroup_old price_old id inventory_accno bin partsgroup partnotes
-               income_accno expense_accno listprice assembly taxaccounts ordnumber transdate cusordnumber
-               longdescription basefactor marge_absolut marge_percent lastcost)
-    );
-
-    map { $form->{"${_}_base"} += $linetotal } (split(/ /, $form->{"taxaccounts_$i"}));
-
-    $form->{invsubtotal} += $linetotal;
-
-    push @ROWS, { ROW1 => \@ROW1, ROW2 => \@ROW2, HIDDENS => \@HIDDENS, colspan => $colspan, };
-  }
-
-  print $form->parse_html_template('oe/sales_order', { ROWS   => \@ROWS,
-                                                       HEADER => \@HEADER,
-                                                     });
-
-  if (0 != ($form->{sellprice_total} * 1)) {
-    $form->{marge_percent} = ($form->{sellprice_total} - $form->{lastcost_total}) / $form->{sellprice_total} * 100;
-  }
-
-  $lxdebug->leave_sub();
-}
diff --git a/js/customer_or_vendor_selection.js b/js/customer_or_vendor_selection.js
new file mode 100644 (file)
index 0000000..4d1bf8d
--- /dev/null
@@ -0,0 +1,16 @@
+function customer_or_vendor_selection_window(input_name, input_id, is_vendor, allow_both, action_on_cov_selected) {
+  var parm = centerParms(800,600) + ",width=800,height=600,status=yes,scrollbars=yes";
+  var name = document.getElementsByName(input_name)[0].value;
+  url = "common.pl?" +
+    "action=cov_selection_internal&" +
+    "login=" + escape(document.forms[0].login.value) + "&" +
+    "password=" + escape(document.forms[0].password.value) + "&" +
+    "name=" + escape_more(name) + "&" +
+    "input_name=" + escape(input_name) + "&" +
+    "input_id=" + escape(input_id) + "&" +
+    "is_vendor=" + (is_vendor ? "1" : "0") + "&" +
+    "allow_both=" + (allow_both ? "1" : "0") + "&" +
+    "action_on_cov_selected=" + (action_on_cov_selected ? escape(action_on_cov_selected) : "")
+  //alert(url);
+  window.open(url, "_new_cov_selection", parm);
+}
index 8363971..473edc5 100644 (file)
@@ -14,6 +14,7 @@ $self->{texts} = {
   'Cc'                          => 'Cc',
   'Change Admin Password'       => 'Administratorpasswort ändern',
   'Confirmation'                => 'Auftragsbestätigung',
+  'Contact'                     => 'Kontakt',
   'Create Dataset'              => 'Datenbank anlegen',
   'Credit Note'                 => 'Gutschrift',
   'Customer Number'             => 'Kundennummer',
@@ -50,13 +51,16 @@ $self->{texts} = {
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Database Drivers available!' => 'Kein Datenbanktreiber verfügbar!',
   'No Dataset selected!'        => 'Keine Datenbank ausgewählt!',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No backup file has been uploaded.' => 'Es wurde keine Sicherungsdatei hochgeladen.',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -82,9 +86,13 @@ $self->{texts} = {
   'SAVED FOR DUNNING'           => 'Gespeichert',
   'SCREENED'                    => 'Angezeigt',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
   'Subject'                     => 'Betreff',
@@ -96,6 +104,7 @@ $self->{texts} = {
   'The passwords do not match.' => 'Die Passw&ouml;rter stimmen nicht &uuml;berein.',
   'The pg_dump process could not be started.' => 'Der pg_dump-Prozess konnte nicht gestartet werden.',
   'The pg_restore process could not be started.' => 'Der pg_restore-Prozess konnte nicht gestartet werden.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
   'Unit'                        => 'Einheit',
@@ -108,6 +117,7 @@ $self->{texts} = {
   'Vendor details'              => 'Lieferantendetails',
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
+  'customer'                    => 'Kunde',
   'invoice'                     => 'Rechnung',
   'is already a member!'        => 'ist bereits ein Mitglied!',
   'no'                          => 'nein',
@@ -118,6 +128,7 @@ $self->{texts} = {
   'request_quotation'           => 'Angebotsanforderung',
   'sales_order'                 => 'Kundenauftrag',
   'sales_quotation'             => 'Verkaufsangebot',
+  'vendor'                      => 'Lieferant',
   'yes'                         => 'ja',
 };
 
@@ -136,8 +147,13 @@ $self->{subs} = {
   'call_sub'                    => 'call_sub',
   'change_admin_password'       => 'change_admin_password',
   'change_password'             => 'change_password',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'check_password'              => 'check_password',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'create_dataset'              => 'create_dataset',
   'dbcreate'                    => 'dbcreate',
   'dbdelete'                    => 'dbdelete',
@@ -163,8 +179,11 @@ $self->{subs} = {
   'restore_dataset'             => 'restore_dataset',
   'restore_dataset_start'       => 'restore_dataset_start',
   'save'                        => 'save',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
   'set_longdescription'         => 'set_longdescription',
index a5c3409..c030de5 100644 (file)
@@ -746,6 +746,7 @@ aktualisieren wollen?',
   'New vendor'                  => 'Neuer Lieferant',
   'Next Dunning Level'          => 'Nächste Mahnstufe',
   'No'                          => 'Nein',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Company Address given'    => 'Keine Firmenadresse hinterlegt!',
   'No Company Name given'       => 'Kein Firmenname hinterlegt!',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
@@ -754,12 +755,14 @@ aktualisieren wollen?',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No backup file has been uploaded.' => 'Es wurde keine Sicherungsdatei hochgeladen.',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No data was found.'          => 'Es wurden keine Daten gefunden.',
   'No databases have been found on this server.' => 'Auf diesem Server wurden keine Datenbanken gefunden.',
   'No datasets have been selected.' => 'Es wurden keine Datenbanken ausgew&auml;hlt.',
   'No dunnings have been selected for printing.' => 'Es wurden keine Mahnungen zum Drucken ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
   'No entries were found which had no unit assigned to them.' => 'Es wurden keine Eintr&auml;ge gefunden, denen keine Einheit zugeordnet war.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No licenses were found that match the search criteria.' => 'Es wurden keine Lizenzen gefunden, auf die die Suchkriterien zutreffen.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
@@ -1008,11 +1011,15 @@ aktualisieren wollen?',
   'Search Dunning'              => 'Mahnung suchen',
   'Select'                      => 'auswählen',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a period'             => 'Bitte Zeitraum auswählen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select all'                  => 'Alle auswählen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Select from one of the items below' => 'Wählen Sie einen der untenstehenden Einträge',
   'Select from one of the names below' => 'Wählen Sie einen der untenstehenden Namen',
   'Select from one of the projects below' => 'Wählen Sie eines der untenstehenden Projekte',
@@ -1166,6 +1173,7 @@ aktualisieren wollen?',
   'There are four tax zones.'   => 'Es gibt vier Steuerzonen.',
   'There are still entries in the database for which no unit has been assigned.' => 'Es gibt noch Eintr&auml;ge in der Datenbank, f&uuml;r die keine Einheit zugeordnet ist.',
   'There are usually three ways to install Perl modules.' => 'Es gibt normalerweise drei Arten, ein Perlmodul zu installieren.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'There is nothing to do in this step.' => 'In diesem Schritt gibt es nichts mehr zu tun.',
   'Therefore there\'s no need to create the same article more than once if it is sold or bought in/from another tax zone.' => 'Deswegen muss man den gleichen Artikel nicht mehr mehrmals anlegen, wenn er in verschiedenen Steuerzonen gehandelt werden soll.',
   'These units can be based on other units so that Lx-Office can convert prices when the user switches from one unit to another.' => 'Diese Einheiten k&ouml;nnen auf anderen Einheiten basieren, sodass Lx-Office Preise umrechnen kann, wenn der Benutzer von einer Einheit zu einer anderen Wechselt.',
@@ -1313,6 +1321,7 @@ aktualisieren wollen?',
   'choice part'                 => 'Artikel auswählen',
   'close'                       => 'schließen',
   'continue'                    => 'weiter',
+  'customer'                    => 'Kunde',
   'customer_list'               => 'kundenliste',
   'customernumber not unique!'  => 'Die Kundennummer ist schon vergeben',
   'debug'                       => 'Debug',
@@ -1393,6 +1402,7 @@ aktualisieren wollen?',
   'up'                          => 'hoch',
   'use program settings'        => 'benutze Programmeinstellungen',
   'valid from'                  => 'Gültig ab',
+  'vendor'                      => 'Lieferant',
   'vendor_list'                 => 'lieferantenliste',
   'wrongformat'                 => 'Falsches Format',
   'yes'                         => 'ja',
index 0d39367..14faf01 100644 (file)
@@ -79,6 +79,7 @@ $self->{texts} = {
   'Chart of Accounts'           => 'Kontenübersicht',
   'Close Books up to'           => 'Die Bücher abschließen bis zum',
   'Confirmation'                => 'Auftragsbestätigung',
+  'Contact'                     => 'Kontakt',
   'Continue'                    => 'Weiter',
   'Cost Center'                 => 'Kostenstelle',
   'Costs'                       => 'Kosten',
@@ -152,10 +153,13 @@ $self->{texts} = {
   'National Revenues'           => 'Erl&ouml;se Inland',
   'Netto Terms'                 => 'Zahlungsziel netto',
   'No'                          => 'Nein',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -204,9 +208,13 @@ $self->{texts} = {
   'Save'                        => 'Speichern',
   'Screen'                      => 'Bildschirm',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Skonto'                      => 'Skonto',
   'Skonto Terms'                => 'Zahlungsziel Skonto',
   'Storno Invoice'              => 'Stornorechnung',
@@ -236,6 +244,7 @@ $self->{texts} = {
   'The unit in row %d has been deleted in the meantime.' => 'Die Einheit in Zeile %d ist in der Zwischentzeit gel&ouml;scht worden.',
   'The unit in row %d has been used in the meantime and cannot be changed anymore.' => 'Die Einheit in Zeile %d wurde in der Zwischenzeit benutzt und kann nicht mehr ge&auml;ndert werden.',
   'The units have been saved.'  => 'Die Einheiten wurden gespeichert.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Transaction reversal enforced for all dates' => 'Fehleintragungen müssen für jeden Zeitraum mit einer Kontraeintragung ausgebessert werden',
   'Transaction reversal enforced up to' => 'Fehleintragungen können bis zu dem angegebenen Zeitraum nur mit einer Kontraeintragung ausgebessert werden!',
@@ -253,6 +262,7 @@ $self->{texts} = {
   'You can use the following strings in the long description and all translations. They will be replaced by their actual values by Lx-Office before they\'re output.' => 'Sie k&ouml;nnen im Langtext und allen Übersetzungen die folgenden Variablen benutzen, die vor der Ausgabe von Lx-Office automatisch ersetzt werden:',
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
+  'customer'                    => 'Kunde',
   'dimension units'             => 'Ma&szlig;einheiten',
   'down'                        => 'runter',
   'invoice'                     => 'Rechnung',
@@ -269,6 +279,7 @@ $self->{texts} = {
   'service units'               => 'Dienstleistungseinheiten',
   'up'                          => 'hoch',
   'use program settings'        => 'benutze Programmeinstellungen',
+  'vendor'                      => 'Lieferant',
   'yes'                         => 'ja',
 };
 
@@ -300,8 +311,13 @@ $self->{subs} = {
   'business_header'             => 'business_header',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'config'                      => 'config',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'delete'                      => 'delete',
   'delete_account'              => 'delete_account',
   'delete_buchungsgruppe'       => 'delete_buchungsgruppe',
@@ -364,8 +380,11 @@ $self->{subs} = {
   'save_printer'                => 'save_printer',
   'save_tax'                    => 'save_tax',
   'save_unit'                   => 'save_unit',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
   'set_longdescription'         => 'set_longdescription',
index b982c7c..31b0c32 100644 (file)
@@ -10,6 +10,7 @@ $self->{texts} = {
   'Cc'                          => 'Cc',
   'Check'                       => 'Scheck',
   'Confirmation'                => 'Auftragsbestätigung',
+  'Contact'                     => 'Kontakt',
   'Credit Note'                 => 'Gutschrift',
   'Customer Number'             => 'Kundennummer',
   'Customer details'            => 'Kundendetails',
@@ -37,10 +38,13 @@ $self->{texts} = {
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -66,14 +70,19 @@ $self->{texts} = {
   'SCREENED'                    => 'Angezeigt',
   'Saving the file \'%s\' failed. OS error message: %s' => 'Das Speichern der Datei \'%s\' schlug fehl. Fehlermeldung des Betriebssystems: %s',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Statement'                   => 'Sammelrechnung',
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
   'Subject'                     => 'Betreff',
   'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'Das Feld \'tag\' darf nur aus alphanumerischen Zeichen und den Zeichen - _ ( ) bestehen.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
   'USTVA'                       => 'USTVA',
@@ -89,6 +98,7 @@ $self->{texts} = {
   'You\'re not editing a file.' => 'Sie bearbeiten momentan keine Datei.',
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
+  'customer'                    => 'Kunde',
   'invoice'                     => 'Rechnung',
   'no'                          => 'nein',
   'packing_list'                => 'Versandliste',
@@ -98,6 +108,7 @@ $self->{texts} = {
   'request_quotation'           => 'Angebotsanforderung',
   'sales_order'                 => 'Kundenauftrag',
   'sales_quotation'             => 'Verkaufsangebot',
+  'vendor'                      => 'Lieferant',
   'yes'                         => 'ja',
 };
 
@@ -109,6 +120,11 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'delivery_customer_selection' => 'delivery_customer_selection',
   'display'                     => 'display',
   'display_template'            => 'display_template',
@@ -123,8 +139,11 @@ $self->{subs} = {
   'reformat_numbers'            => 'reformat_numbers',
   'save'                        => 'save',
   'save_template'               => 'save_template',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
   'set_longdescription'         => 'set_longdescription',
index 4bdd7d7..073f941 100644 (file)
@@ -28,6 +28,7 @@ $self->{texts} = {
   'Closed'                      => 'Geschlossen',
   'Confirm!'                    => 'Bestätigen Sie!',
   'Confirmation'                => 'Auftragsbestätigung',
+  'Contact'                     => 'Kontakt',
   'Continue'                    => 'Weiter',
   'Could not spawn html2ps or GhostScript.' => 'html2ps oder GhostScript konnte nicht gestartet werden.',
   'Could not spawn the printer command.' => 'Die Druckanwendung konnte nicht gestartet werden.',
@@ -100,10 +101,13 @@ $self->{texts} = {
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -148,9 +152,13 @@ $self->{texts} = {
   'Salesperson'                 => 'Verkäufer',
   'Save draft'                  => 'Entwurf speichern',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Select from one of the names below' => 'Wählen Sie einen der untenstehenden Namen',
   'Select from one of the projects below' => 'Wählen Sie eines der untenstehenden Projekte',
   'Sep'                         => 'Sep',
@@ -167,6 +175,7 @@ $self->{texts} = {
   'Taxkey'                      => 'Steuerschlüssel',
   '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 list has been printed.'  => 'Die Liste wurde ausgedruckt.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Total'                       => 'Summe',
   'Transaction %d cancelled.'   => 'Buchung %d erfolgreich storniert.',
@@ -192,6 +201,7 @@ $self->{texts} = {
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
   'button'                      => '?',
+  'customer'                    => 'Kunde',
   'history'                     => 'Historie',
   'invoice'                     => 'Rechnung',
   'invoice_list'                => 'debitorenbuchungsliste',
@@ -206,6 +216,7 @@ $self->{texts} = {
   'request_quotation'           => 'Angebotsanforderung',
   'sales_order'                 => 'Kundenauftrag',
   'sales_quotation'             => 'Verkaufsangebot',
+  'vendor'                      => 'Lieferant',
   'wrongformat'                 => 'Falsches Format',
   'yes'                         => 'ja',
 };
@@ -223,9 +234,14 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'check_name'                  => 'check_name',
   'check_project'               => 'check_project',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'create_links'                => 'create_links',
   'create_subtotal_row'         => 'create_subtotal_row',
   'delete'                      => 'delete',
@@ -261,8 +277,11 @@ $self->{subs} = {
   'sales_invoice'               => 'sales_invoice',
   'save_draft'                  => 'save_draft',
   'search'                      => 'search',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_name'                 => 'select_name',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
index 9ee14ac..c042fe4 100644 (file)
@@ -29,6 +29,7 @@ $self->{texts} = {
   'Closed'                      => 'Geschlossen',
   'Confirm!'                    => 'Bestätigen Sie!',
   'Confirmation'                => 'Auftragsbestätigung',
+  'Contact'                     => 'Kontakt',
   'Continue'                    => 'Weiter',
   'Could not spawn html2ps or GhostScript.' => 'html2ps oder GhostScript konnte nicht gestartet werden.',
   'Could not spawn the printer command.' => 'Die Druckanwendung konnte nicht gestartet werden.',
@@ -107,10 +108,13 @@ $self->{texts} = {
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -154,9 +158,13 @@ $self->{texts} = {
   'Salesperson'                 => 'Verkäufer',
   'Save draft'                  => 'Entwurf speichern',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Select from one of the names below' => 'Wählen Sie einen der untenstehenden Namen',
   'Select from one of the projects below' => 'Wählen Sie eines der untenstehenden Projekte',
   'Sep'                         => 'Sep',
@@ -176,6 +184,7 @@ $self->{texts} = {
   'Taxkey'                      => 'Steuerschlüssel',
   '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 list has been printed.'  => 'Die Liste wurde ausgedruckt.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Total'                       => 'Summe',
   'Transaction %d cancelled.'   => 'Buchung %d erfolgreich storniert.',
@@ -199,6 +208,7 @@ $self->{texts} = {
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
   'button'                      => '?',
+  'customer'                    => 'Kunde',
   'history'                     => 'Historie',
   'invoice'                     => 'Rechnung',
   'invoice_list'                => 'debitorenbuchungsliste',
@@ -213,6 +223,7 @@ $self->{texts} = {
   'request_quotation'           => 'Angebotsanforderung',
   'sales_order'                 => 'Kundenauftrag',
   'sales_quotation'             => 'Verkaufsangebot',
+  'vendor'                      => 'Lieferant',
   'wrongformat'                 => 'Falsches Format',
   'yes'                         => 'ja',
 };
@@ -232,9 +243,14 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'check_name'                  => 'check_name',
   'check_project'               => 'check_project',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'create_links'                => 'create_links',
   'create_subtotal_row'         => 'create_subtotal_row',
   'delete'                      => 'delete',
@@ -272,8 +288,11 @@ $self->{subs} = {
   'save_draft'                  => 'save_draft',
   'search'                      => 'search',
   'section_menu'                => 'section_menu',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_name'                 => 'select_name',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
index 883fbd5..724c469 100644 (file)
@@ -7,6 +7,7 @@ $self->{texts} = {
   'CANCELED'                    => 'Storniert',
   'Cc'                          => 'Cc',
   'Confirmation'                => 'Auftragsbestätigung',
+  'Contact'                     => 'Kontakt',
   'Continue'                    => 'Weiter',
   'Credit Note'                 => 'Gutschrift',
   'Customer Number'             => 'Kundennummer',
@@ -35,10 +36,13 @@ $self->{texts} = {
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -63,15 +67,20 @@ $self->{texts} = {
   'SAVED FOR DUNNING'           => 'Gespeichert',
   'SCREENED'                    => 'Angezeigt',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Select from one of the names below' => 'Wählen Sie einen der untenstehenden Namen',
   'Select from one of the projects below' => 'Wählen Sie eines der untenstehenden Projekte',
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
   'Subject'                     => 'Betreff',
   'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'Das Feld \'tag\' darf nur aus alphanumerischen Zeichen und den Zeichen - _ ( ) bestehen.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
   'Unit'                        => 'Einheit',
@@ -83,6 +92,7 @@ $self->{texts} = {
   'Vendor not on file!'         => 'Lieferant ist nicht in der Datenbank!',
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
+  'customer'                    => 'Kunde',
   'invoice'                     => 'Rechnung',
   'no'                          => 'nein',
   'packing_list'                => 'Versandliste',
@@ -92,6 +102,7 @@ $self->{texts} = {
   'request_quotation'           => 'Angebotsanforderung',
   'sales_order'                 => 'Kundenauftrag',
   'sales_quotation'             => 'Verkaufsangebot',
+  'vendor'                      => 'Lieferant',
   'yes'                         => 'ja',
 };
 
@@ -106,9 +117,14 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'check_name'                  => 'check_name',
   'check_project'               => 'check_project',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'delivery_customer_selection' => 'delivery_customer_selection',
   'employee_selection_internal' => 'employee_selection_internal',
   'format_dates'                => 'format_dates',
@@ -120,8 +136,11 @@ $self->{subs} = {
   'project_selection_internal'  => 'project_selection_internal',
   'reformat_numbers'            => 'reformat_numbers',
   'sales_invoice'               => 'sales_invoice',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_name'                 => 'select_name',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
index 5ebbba5..a5707c6 100644 (file)
@@ -13,6 +13,7 @@ $self->{texts} = {
   'Checks'                      => 'Schecks',
   'Confirm!'                    => 'Bestätigen Sie!',
   'Confirmation'                => 'Auftragsbestätigung',
+  'Contact'                     => 'Kontakt',
   'Continue'                    => 'Weiter',
   'Credit Note'                 => 'Gutschrift',
   'Customer'                    => 'Kunde',
@@ -43,10 +44,13 @@ $self->{texts} = {
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -85,15 +89,20 @@ $self->{texts} = {
   'Sales Invoices'              => 'Kundenrechnung',
   'Sales Orders'                => 'Aufträge',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select all'                  => 'Alle auswählen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Spoolfile'                   => 'Druckdatei',
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
   'Subject'                     => 'Betreff',
   'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'Das Feld \'tag\' darf nur aus alphanumerischen Zeichen und den Zeichen - _ ( ) bestehen.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To'                          => 'An',
   'To (email)'                  => 'An',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
@@ -107,6 +116,7 @@ $self->{texts} = {
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
   'button'                      => '?',
+  'customer'                    => 'Kunde',
   'done'                        => 'erledigt',
   'invoice'                     => 'Rechnung',
   'no'                          => 'nein',
@@ -117,6 +127,7 @@ $self->{texts} = {
   'request_quotation'           => 'Angebotsanforderung',
   'sales_order'                 => 'Kundenauftrag',
   'sales_quotation'             => 'Verkaufsangebot',
+  'vendor'                      => 'Lieferant',
   'wrongformat'                 => 'Falsches Format',
   'yes'                         => 'ja',
 };
@@ -129,7 +140,12 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'delivery_customer_selection' => 'delivery_customer_selection',
   'employee_selection_internal' => 'employee_selection_internal',
   'format_dates'                => 'format_dates',
@@ -142,8 +158,11 @@ $self->{subs} = {
   'remove'                      => 'remove',
   'search'                      => 'search',
   'select_all'                  => 'select_all',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
   'set_longdescription'         => 'set_longdescription',
index e268350..b55c0ba 100644 (file)
@@ -7,6 +7,7 @@ $self->{texts} = {
   'CANCELED'                    => 'Storniert',
   'Cc'                          => 'Cc',
   'Confirmation'                => 'Auftragsbestätigung',
+  'Contact'                     => 'Kontakt',
   'Credit Note'                 => 'Gutschrift',
   'Customer Number'             => 'Kundennummer',
   'Customer details'            => 'Kundendetails',
@@ -31,10 +32,13 @@ $self->{texts} = {
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -57,13 +61,18 @@ $self->{texts} = {
   'SAVED FOR DUNNING'           => 'Gespeichert',
   'SCREENED'                    => 'Angezeigt',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
   'Subject'                     => 'Betreff',
   'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'Das Feld \'tag\' darf nur aus alphanumerischen Zeichen und den Zeichen - _ ( ) bestehen.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
   'Unit'                        => 'Einheit',
@@ -73,6 +82,7 @@ $self->{texts} = {
   'Vendor details'              => 'Lieferantendetails',
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
+  'customer'                    => 'Kunde',
   'invoice'                     => 'Rechnung',
   'no'                          => 'nein',
   'packing_list'                => 'Versandliste',
@@ -82,6 +92,7 @@ $self->{texts} = {
   'request_quotation'           => 'Angebotsanforderung',
   'sales_order'                 => 'Kundenauftrag',
   'sales_quotation'             => 'Verkaufsangebot',
+  'vendor'                      => 'Lieferant',
   'yes'                         => 'ja',
 };
 
@@ -93,6 +104,11 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'delivery_customer_selection' => 'delivery_customer_selection',
   'employee_selection_internal' => 'employee_selection_internal',
   'format_dates'                => 'format_dates',
@@ -100,8 +116,11 @@ $self->{subs} = {
   'part_selection_internal'     => 'part_selection_internal',
   'project_selection_internal'  => 'project_selection_internal',
   'reformat_numbers'            => 'reformat_numbers',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
   'set_longdescription'         => 'set_longdescription',
index 4484726..8cdb6cb 100644 (file)
@@ -16,6 +16,7 @@ $self->{texts} = {
   'Cannot process payment for a closed period!' => 'Es kann keine Zahlung in einem abgeschlossenen Zeitraum verbucht werden!',
   'Cc'                          => 'Cc',
   'Confirmation'                => 'Auftragsbestätigung',
+  'Contact'                     => 'Kontakt',
   'Continue'                    => 'Weiter',
   'Credit Note'                 => 'Gutschrift',
   'Currency'                    => 'Währung',
@@ -55,10 +56,13 @@ $self->{texts} = {
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -96,9 +100,13 @@ $self->{texts} = {
   'Screen'                      => 'Bildschirm',
   'Select'                      => 'auswählen',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Select from one of the names below' => 'Wählen Sie einen der untenstehenden Namen',
   'Select from one of the projects below' => 'Wählen Sie eines der untenstehenden Projekte',
   'Source'                      => 'Beleg',
@@ -106,6 +114,7 @@ $self->{texts} = {
   'Storno Packing List'         => 'Stornolieferschein',
   'Subject'                     => 'Betreff',
   'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'Das Feld \'tag\' darf nur aus alphanumerischen Zeichen und den Zeichen - _ ( ) bestehen.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
   'Unit'                        => 'Einheit',
@@ -121,6 +130,7 @@ $self->{texts} = {
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
   'button'                      => '?',
+  'customer'                    => 'Kunde',
   'invoice'                     => 'Rechnung',
   'no'                          => 'nein',
   'packing_list'                => 'Versandliste',
@@ -130,6 +140,7 @@ $self->{texts} = {
   'request_quotation'           => 'Angebotsanforderung',
   'sales_order'                 => 'Kundenauftrag',
   'sales_quotation'             => 'Verkaufsangebot',
+  'vendor'                      => 'Lieferant',
   'wrongformat'                 => 'Falsches Format',
   'yes'                         => 'ja',
 };
@@ -145,10 +156,15 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'check_form'                  => 'check_form',
   'check_name'                  => 'check_name',
   'check_project'               => 'check_project',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'customer_details'            => 'customer_details',
   'delivery_customer_selection' => 'delivery_customer_selection',
   'employee_selection_internal' => 'employee_selection_internal',
@@ -167,8 +183,11 @@ $self->{subs} = {
   'project_selection_internal'  => 'project_selection_internal',
   'reformat_numbers'            => 'reformat_numbers',
   'sales_invoice'               => 'sales_invoice',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_name'                 => 'select_name',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
index 0c4125f..1012349 100644 (file)
@@ -79,10 +79,13 @@ $self->{texts} = {
   'Name'                        => 'Name',
   'Name missing!'               => 'Name fehlt!',
   'New contact'                 => 'Neuer Ansprechpartner',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -134,9 +137,13 @@ $self->{texts} = {
   'Save and Quotation'          => 'Speichern und Angebot',
   'Save and RFQ'                => 'Speichern und Lieferantenanfrage',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Sell Price'                  => 'Verkaufspreis',
   'Shipping Address'            => 'Lieferadresse',
   'Steuersatz'                  => 'Steuersatz',
@@ -148,6 +155,7 @@ $self->{texts} = {
   'Tax Number / SSN'            => 'Steuernummer',
   '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 list has been printed.'  => 'Die Liste wurde ausgedruckt.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'This customer number is already in use.' => 'Diese Kundennummer wird bereits verwendet.',
   'This vendor number is already in use.' => 'Diese Lieferantennummer wird bereits verwendet.',
   'Title'                       => 'Titel',
@@ -168,6 +176,7 @@ $self->{texts} = {
   'Zipcode'                     => 'PLZ',
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
+  'customer'                    => 'Kunde',
   'customer_list'               => 'kundenliste',
   'customernumber not unique!'  => 'Die Kundennummer ist schon vergeben',
   'history'                     => 'Historie',
@@ -182,6 +191,7 @@ $self->{texts} = {
   'request_quotation'           => 'Angebotsanforderung',
   'sales_order'                 => 'Kundenauftrag',
   'sales_quotation'             => 'Verkaufsangebot',
+  'vendor'                      => 'Lieferant',
   'vendor_list'                 => 'lieferantenliste',
   'yes'                         => 'ja',
 };
@@ -196,7 +206,12 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'delete'                      => 'delete',
   'delivery_customer_selection' => 'delivery_customer_selection',
   'display'                     => 'display',
@@ -227,8 +242,11 @@ $self->{subs} = {
   'save_and_quotation'          => 'save_and_quotation',
   'save_and_rfq'                => 'save_and_rfq',
   'search'                      => 'search',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
   'set_longdescription'         => 'set_longdescription',
index c22aa84..9240d49 100644 (file)
@@ -13,6 +13,7 @@ $self->{texts} = {
   'CANCELED'                    => 'Storniert',
   'Cc'                          => 'Cc',
   'Confirmation'                => 'Auftragsbestätigung',
+  'Contact'                     => 'Kontakt',
   'Continue'                    => 'Weiter',
   'Credit Note'                 => 'Gutschrift',
   'Customer Number'             => 'Kundennummer',
@@ -61,10 +62,13 @@ $self->{texts} = {
   'Monat'                       => 'Monat',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -92,14 +96,19 @@ $self->{texts} = {
   'SAVED FOR DUNNING'           => 'Gespeichert',
   'SCREENED'                    => 'Angezeigt',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'September'                   => 'September',
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
   'Subject'                     => 'Betreff',
   'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'Das Feld \'tag\' darf nur aus alphanumerischen Zeichen und den Zeichen - _ ( ) bestehen.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
   'Unit'                        => 'Einheit',
@@ -112,6 +121,7 @@ $self->{texts} = {
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
   'bis'                         => 'bis',
+  'customer'                    => 'Kunde',
   'invoice'                     => 'Rechnung',
   'no'                          => 'nein',
   'packing_list'                => 'Versandliste',
@@ -121,6 +131,7 @@ $self->{texts} = {
   'request_quotation'           => 'Angebotsanforderung',
   'sales_order'                 => 'Kundenauftrag',
   'sales_quotation'             => 'Verkaufsangebot',
+  'vendor'                      => 'Lieferant',
   'yes'                         => 'ja',
 };
 
@@ -132,7 +143,12 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'delivery_customer_selection' => 'delivery_customer_selection',
   'download'                    => 'download',
   'employee_selection_internal' => 'employee_selection_internal',
@@ -146,8 +162,11 @@ $self->{subs} = {
   'part_selection_internal'     => 'part_selection_internal',
   'project_selection_internal'  => 'project_selection_internal',
   'reformat_numbers'            => 'reformat_numbers',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
   'set_longdescription'         => 'set_longdescription',
index 96e9e0b..c19318a 100644 (file)
@@ -95,11 +95,14 @@ $self->{texts} = {
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No dunnings have been selected for printing.' => 'Es wurden keine Mahnungen zum Drucken ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -150,9 +153,13 @@ $self->{texts} = {
   'Screen'                      => 'Bildschirm',
   'Search Dunning'              => 'Mahnung suchen',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Select from one of the items below' => 'Wählen Sie einen der untenstehenden Einträge',
   'Select from one of the names below' => 'Wählen Sie einen der untenstehenden Namen',
   'Select from one of the projects below' => 'Wählen Sie eines der untenstehenden Projekte',
@@ -171,6 +178,7 @@ $self->{texts} = {
   '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 dunnings have been printed.' => 'Die Mahnung(en) wurden gedruckt.',
   'The list has been printed.'  => 'Die Liste wurde ausgedruckt.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Total Fees'                  => 'Kumulierte Gebühren',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
@@ -185,6 +193,7 @@ $self->{texts} = {
   'Zipcode'                     => 'PLZ',
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
+  'customer'                    => 'Kunde',
   'dunning_list'                => 'mahnungsliste',
   'emailed to'                  => 'gemailt an',
   'invoice'                     => 'Rechnung',
@@ -201,6 +210,7 @@ $self->{texts} = {
   'sales_quotation'             => 'Verkaufsangebot',
   'sent'                        => 'gesendet',
   'sent to printer'             => 'an Drucker geschickt',
+  'vendor'                      => 'Lieferant',
   'wrongformat'                 => 'Falsches Format',
   'yes'                         => 'ja',
 };
@@ -217,10 +227,15 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'check_form'                  => 'check_form',
   'check_name'                  => 'check_name',
   'check_project'               => 'check_project',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'customer_details'            => 'customer_details',
   'delivery_customer_selection' => 'delivery_customer_selection',
   'edit_config'                 => 'edit_config',
@@ -257,9 +272,12 @@ $self->{subs} = {
   'save'                        => 'save',
   'save_dunning'                => 'save_dunning',
   'search'                      => 'search',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
   'select_item'                 => 'select_item',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_name'                 => 'select_name',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
index 5971f6f..c75999d 100644 (file)
@@ -7,6 +7,7 @@ $self->{texts} = {
   'CANCELED'                    => 'Storniert',
   'Cc'                          => 'Cc',
   'Confirmation'                => 'Auftragsbestätigung',
+  'Contact'                     => 'Kontakt',
   'Credit Note'                 => 'Gutschrift',
   'Customer Number'             => 'Kundennummer',
   'Customer details'            => 'Kundendetails',
@@ -33,10 +34,13 @@ $self->{texts} = {
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -59,14 +63,19 @@ $self->{texts} = {
   'SAVED FOR DUNNING'           => 'Gespeichert',
   'SCREENED'                    => 'Angezeigt',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Skip'                        => 'Überspringen',
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
   'Subject'                     => 'Betreff',
   'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'Das Feld \'tag\' darf nur aus alphanumerischen Zeichen und den Zeichen - _ ( ) bestehen.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
   'Unit'                        => 'Einheit',
@@ -76,6 +85,7 @@ $self->{texts} = {
   'Vendor details'              => 'Lieferantendetails',
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
+  'customer'                    => 'Kunde',
   'invoice'                     => 'Rechnung',
   'no'                          => 'nein',
   'packing_list'                => 'Versandliste',
@@ -85,6 +95,7 @@ $self->{texts} = {
   'request_quotation'           => 'Angebotsanforderung',
   'sales_order'                 => 'Kundenauftrag',
   'sales_quotation'             => 'Verkaufsangebot',
+  'vendor'                      => 'Lieferant',
   'yes'                         => 'ja',
 };
 
@@ -96,6 +107,11 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'delete_drafts'               => 'delete_drafts',
   'delivery_customer_selection' => 'delivery_customer_selection',
   'dont_load_draft'             => 'dont_load_draft',
@@ -110,8 +126,11 @@ $self->{subs} = {
   'reformat_numbers'            => 'reformat_numbers',
   'remove_draft'                => 'remove_draft',
   'save_draft'                  => 'save_draft',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
   'set_longdescription'         => 'set_longdescription',
index 629c185..07e2f82 100644 (file)
@@ -29,6 +29,7 @@ $self->{texts} = {
   'Cc'                          => 'Cc',
   'Confirm!'                    => 'Bestätigen Sie!',
   'Confirmation'                => 'Auftragsbestätigung',
+  'Contact'                     => 'Kontakt',
   'Continue'                    => 'Weiter',
   'Contra'                      => 'gegen',
   'Could not spawn html2ps or GhostScript.' => 'html2ps oder GhostScript konnte nicht gestartet werden.',
@@ -102,10 +103,13 @@ $self->{texts} = {
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'MwSt. inkl.'                 => 'MwSt. inkl.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -144,9 +148,13 @@ $self->{texts} = {
   'SAVED FOR DUNNING'           => 'Gespeichert',
   'SCREENED'                    => 'Angezeigt',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Select from one of the names below' => 'Wählen Sie einen der untenstehenden Namen',
   'Select from one of the projects below' => 'Wählen Sie eines der untenstehenden Projekte',
   'Sep'                         => 'Sep',
@@ -162,6 +170,7 @@ $self->{texts} = {
   'Taxkey'                      => 'Steuerschlüssel',
   '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 list has been printed.'  => 'Die Liste wurde ausgedruckt.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'To (time)'                   => 'Bis',
   'Transaction %d cancelled.'   => 'Buchung %d erfolgreich storniert.',
@@ -182,6 +191,7 @@ $self->{texts} = {
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
   'button'                      => '?',
+  'customer'                    => 'Kunde',
   'general_ledger_list'         => 'buchungsjournal',
   'invoice'                     => 'Rechnung',
   'no'                          => 'nein',
@@ -194,6 +204,7 @@ $self->{texts} = {
   'request_quotation'           => 'Angebotsanforderung',
   'sales_order'                 => 'Kundenauftrag',
   'sales_quotation'             => 'Verkaufsangebot',
+  'vendor'                      => 'Lieferant',
   'wrongformat'                 => 'Falsches Format',
   'yes'                         => 'ja',
 };
@@ -210,9 +221,14 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'check_name'                  => 'check_name',
   'check_project'               => 'check_project',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'create_subtotal_row'         => 'create_subtotal_row',
   'delete'                      => 'delete',
   'delivery_customer_selection' => 'delivery_customer_selection',
@@ -242,8 +258,11 @@ $self->{subs} = {
   'report_generator_export_as_pdf' => 'report_generator_export_as_pdf',
   'sales_invoice'               => 'sales_invoice',
   'search'                      => 'search',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_name'                 => 'select_name',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
index 2234ef2..3417d4d 100644 (file)
@@ -131,10 +131,13 @@ aktualisieren wollen?',
   'Model'                       => 'Modell',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -211,9 +214,13 @@ aktualisieren wollen?',
   'Save as new'                 => 'als neu speichern',
   'Screen'                      => 'Bildschirm',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Select from one of the items below' => 'Wählen Sie einen der untenstehenden Einträge',
   'Select postscript or PDF!'   => 'Postscript oder PDF auswählen!',
   'Sell Price'                  => 'Verkaufspreis',
@@ -242,6 +249,7 @@ aktualisieren wollen?',
   '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 formula needs the following syntax:<br>For regular article:<br>Variablename= Variable Unit;<br>Variablename2= Variable2 Unit2;<br>...<br>###<br>Variable + ( Variable2 / Variable )<br><b>Please be beware of the spaces in the formula</b><br>' => 'Die Formeln m&uuml;ssen in der folgenden Syntax eingegeben werden:<br>Bei normalen Artikeln:<br>Variablenname= Variable Einheit;<br>Variablenname2= Variable2 Einheit2;<br>...<br>###<br>Variable + Variable2 * ( Variable - Variable2 )<br>Bitte achten Sie auf die Leerzeichen in der Formel<br>Es muss jeweils die Gesamte Zeile eingegeben werden',
   'The list has been printed.'  => 'Die Liste wurde ausgedruckt.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To'                          => 'An',
   'To (email)'                  => 'An',
   'To (time)'                   => 'Bis',
@@ -269,6 +277,7 @@ aktualisieren wollen?',
   'button'                      => '?',
   'choice'                      => 'auswählen',
   'choice part'                 => 'Artikel auswählen',
+  'customer'                    => 'Kunde',
   'deliverydate'                => 'Lieferdatum',
   'ea'                          => 'St.',
   'emailed to'                  => 'gemailt an',
@@ -293,6 +302,7 @@ aktualisieren wollen?',
   'sent to printer'             => 'an Drucker geschickt',
   'service_list'                => 'dienstleistungsliste',
   'soldtotal'                   => 'Verkaufte Anzahl',
+  'vendor'                      => 'Lieferant',
   'yes'                         => 'ja',
 };
 
@@ -308,10 +318,15 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'check_form'                  => 'check_form',
   'choice'                      => 'choice',
   'confirm_price_update'        => 'confirm_price_update',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'customer_details'            => 'customer_details',
   'delete'                      => 'delete',
   'delivery_customer_selection' => 'delivery_customer_selection',
@@ -357,9 +372,12 @@ $self->{subs} = {
   'search'                      => 'search',
   'search_update_prices'        => 'search_update_prices',
   'section_menu'                => 'section_menu',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
   'select_item'                 => 'select_item',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
   'send_email'                  => 'send_email',
index 418d1c3..bc4a8ec 100644 (file)
@@ -79,10 +79,13 @@ $self->{texts} = {
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -133,9 +136,13 @@ $self->{texts} = {
   'SCREENED'                    => 'Angezeigt',
   'Screen'                      => 'Bildschirm',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Select from one of the items below' => 'Wählen Sie einen der untenstehenden Einträge',
   'Select postscript or PDF!'   => 'Postscript oder PDF auswählen!',
   'Sep'                         => 'Sep',
@@ -152,6 +159,7 @@ $self->{texts} = {
   'Subject'                     => 'Betreff',
   'Subtotal'                    => 'Zwischensumme',
   'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'Das Feld \'tag\' darf nur aus alphanumerischen Zeichen und den Zeichen - _ ( ) bestehen.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
   'Unit'                        => 'Einheit',
@@ -163,6 +171,7 @@ $self->{texts} = {
   'Zipcode'                     => 'PLZ',
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
+  'customer'                    => 'Kunde',
   'emailed to'                  => 'gemailt an',
   'invoice'                     => 'Rechnung',
   'no'                          => 'nein',
@@ -176,6 +185,7 @@ $self->{texts} = {
   'sales_quotation'             => 'Verkaufsangebot',
   'sent'                        => 'gesendet',
   'sent to printer'             => 'an Drucker geschickt',
+  'vendor'                      => 'Lieferant',
   'yes'                         => 'ja',
 };
 
@@ -187,7 +197,12 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'check_form'                  => 'check_form',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'customer_details'            => 'customer_details',
   'delivery_customer_selection' => 'delivery_customer_selection',
   'display_form'                => 'display_form',
@@ -211,9 +226,12 @@ $self->{subs} = {
   'reformat_numbers'            => 'reformat_numbers',
   'relink_accounts'             => 'relink_accounts',
   'request_for_quotation'       => 'request_for_quotation',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
   'select_item'                 => 'select_item',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
   'send_email'                  => 'send_email',
index 48a51d4..ff3ef26 100644 (file)
@@ -114,10 +114,13 @@ $self->{texts} = {
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -182,9 +185,13 @@ $self->{texts} = {
   'Save draft'                  => 'Entwurf speichern',
   'Screen'                      => 'Bildschirm',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Select from one of the items below' => 'Wählen Sie einen der untenstehenden Einträge',
   'Select from one of the names below' => 'Wählen Sie einen der untenstehenden Namen',
   'Select from one of the projects below' => 'Wählen Sie eines der untenstehenden Projekte',
@@ -208,6 +215,7 @@ $self->{texts} = {
   '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.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Total'                       => 'Summe',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
@@ -228,6 +236,7 @@ $self->{texts} = {
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
   'button'                      => '?',
+  'customer'                    => 'Kunde',
   'emailed to'                  => 'gemailt an',
   'history'                     => 'Historie',
   'invoice'                     => 'Rechnung',
@@ -244,6 +253,7 @@ $self->{texts} = {
   'sales_quotation'             => 'Verkaufsangebot',
   'sent'                        => 'gesendet',
   'sent to printer'             => 'an Drucker geschickt',
+  'vendor'                      => 'Lieferant',
   'wrongformat'                 => 'Falsches Format',
   'yes'                         => 'ja',
 };
@@ -260,10 +270,15 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'check_form'                  => 'check_form',
   'check_name'                  => 'check_name',
   'check_project'               => 'check_project',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'customer_details'            => 'customer_details',
   'delete'                      => 'delete',
   'delete_drafts'               => 'delete_drafts',
@@ -307,9 +322,12 @@ $self->{subs} = {
   'request_for_quotation'       => 'request_for_quotation',
   'sales_invoice'               => 'sales_invoice',
   'save_draft'                  => 'save_draft',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
   'select_item'                 => 'select_item',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_name'                 => 'select_name',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
index c7b78c2..d92e8f7 100644 (file)
@@ -132,10 +132,13 @@ $self->{texts} = {
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -206,9 +209,13 @@ $self->{texts} = {
   'Save draft'                  => 'Entwurf speichern',
   'Screen'                      => 'Bildschirm',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Select from one of the items below' => 'Wählen Sie einen der untenstehenden Einträge',
   'Select from one of the names below' => 'Wählen Sie einen der untenstehenden Namen',
   'Select from one of the projects below' => 'Wählen Sie eines der untenstehenden Projekte',
@@ -234,6 +241,7 @@ $self->{texts} = {
   '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.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Total'                       => 'Summe',
   'Trade Discount'              => 'Rabatt',
@@ -254,6 +262,7 @@ $self->{texts} = {
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
   'button'                      => '?',
+  'customer'                    => 'Kunde',
   'emailed to'                  => 'gemailt an',
   'history'                     => 'Historie',
   'invoice'                     => 'Rechnung',
@@ -270,6 +279,7 @@ $self->{texts} = {
   'sales_quotation'             => 'Verkaufsangebot',
   'sent'                        => 'gesendet',
   'sent to printer'             => 'an Drucker geschickt',
+  'vendor'                      => 'Lieferant',
   'wrongformat'                 => 'Falsches Format',
   'yes'                         => 'ja',
 };
@@ -286,10 +296,15 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'check_form'                  => 'check_form',
   'check_name'                  => 'check_name',
   'check_project'               => 'check_project',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'credit_note'                 => 'credit_note',
   'customer_details'            => 'customer_details',
   'delete'                      => 'delete',
@@ -337,9 +352,12 @@ $self->{subs} = {
   'request_for_quotation'       => 'request_for_quotation',
   'sales_invoice'               => 'sales_invoice',
   'save_draft'                  => 'save_draft',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
   'select_item'                 => 'select_item',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_name'                 => 'select_name',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
index 5ac0ad4..b9e4383 100644 (file)
@@ -13,6 +13,7 @@ $self->{texts} = {
   'Comment'                     => 'Kommentar',
   'Company Name'                => 'Firmenname',
   'Confirmation'                => 'Auftragsbestätigung',
+  'Contact'                     => 'Kontakt',
   'Continue'                    => 'Weiter',
   'Credit Note'                 => 'Gutschrift',
   'Customer Number'             => 'Kundennummer',
@@ -46,10 +47,13 @@ $self->{texts} = {
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No licenses were found that match the search criteria.' => 'Es wurden keine Lizenzen gefunden, auf die die Suchkriterien zutreffen.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
@@ -78,9 +82,13 @@ $self->{texts} = {
   'SCREENED'                    => 'Angezeigt',
   'Save'                        => 'Speichern',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Select from one of the items below' => 'Wählen Sie einen der untenstehenden Einträge',
   'Select from one of the names below' => 'Wählen Sie einen der untenstehenden Namen',
   'Storno Invoice'              => 'Stornorechnung',
@@ -89,6 +97,7 @@ $self->{texts} = {
   'Subject'                     => 'Betreff',
   '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 licensing module has been deactivated in lx-erp.conf.' => 'Das Lizenzverwaltungsmodul wurde in lx-erp.conf deaktiviert.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
   'Unit'                        => 'Einheit',
@@ -102,6 +111,7 @@ $self->{texts} = {
   'Zipcode'                     => 'PLZ',
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
+  'customer'                    => 'Kunde',
   'invoice'                     => 'Rechnung',
   'no'                          => 'nein',
   'packing_list'                => 'Versandliste',
@@ -111,6 +121,7 @@ $self->{texts} = {
   'request_quotation'           => 'Angebotsanforderung',
   'sales_order'                 => 'Kundenauftrag',
   'sales_quotation'             => 'Verkaufsangebot',
+  'vendor'                      => 'Lieferant',
   'yes'                         => 'ja',
 };
 
@@ -123,7 +134,12 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'delivery_customer_selection' => 'delivery_customer_selection',
   'details'                     => 'details',
   'do_add'                      => 'do_add',
@@ -142,8 +158,11 @@ $self->{subs} = {
   'reformat_numbers'            => 'reformat_numbers',
   'save'                        => 'save',
   'search'                      => 'search',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
   'set_longdescription'         => 'set_longdescription',
index cbcfd02..e5d2d4c 100644 (file)
@@ -8,6 +8,7 @@ $self->{texts} = {
   'CANCELED'                    => 'Storniert',
   'Cc'                          => 'Cc',
   'Confirmation'                => 'Auftragsbestätigung',
+  'Contact'                     => 'Kontakt',
   'Credit Note'                 => 'Gutschrift',
   'Customer Number'             => 'Kundennummer',
   'Customer details'            => 'Kundendetails',
@@ -33,10 +34,13 @@ $self->{texts} = {
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -59,13 +63,18 @@ $self->{texts} = {
   'SAVED FOR DUNNING'           => 'Gespeichert',
   'SCREENED'                    => 'Angezeigt',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
   'Subject'                     => 'Betreff',
   'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'Das Feld \'tag\' darf nur aus alphanumerischen Zeichen und den Zeichen - _ ( ) bestehen.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
   'Unit'                        => 'Einheit',
@@ -78,6 +87,7 @@ $self->{texts} = {
   'You did not enter a name!'   => 'Sie haben keinen Namen eingegeben!',
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
+  'customer'                    => 'Kunde',
   'invoice'                     => 'Rechnung',
   'no'                          => 'nein',
   'packing_list'                => 'Versandliste',
@@ -87,6 +97,7 @@ $self->{texts} = {
   'request_quotation'           => 'Angebotsanforderung',
   'sales_order'                 => 'Kundenauftrag',
   'sales_quotation'             => 'Verkaufsangebot',
+  'vendor'                      => 'Lieferant',
   'yes'                         => 'ja',
 };
 
@@ -98,7 +109,12 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'company_logo'                => 'company_logo',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'delivery_customer_selection' => 'delivery_customer_selection',
   'employee_selection_internal' => 'employee_selection_internal',
   'format_dates'                => 'format_dates',
@@ -109,8 +125,11 @@ $self->{subs} = {
   'part_selection_internal'     => 'part_selection_internal',
   'project_selection_internal'  => 'project_selection_internal',
   'reformat_numbers'            => 'reformat_numbers',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
   'set_longdescription'         => 'set_longdescription',
index 1103528..2646253 100644 (file)
@@ -126,10 +126,13 @@ $self->{texts} = {
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
   'No'                          => 'Nein',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -198,9 +201,13 @@ $self->{texts} = {
   'Salesman'                    => 'Verkäufer/in',
   'Screen'                      => 'Bildschirm',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Select from one of the items below' => 'Wählen Sie einen der untenstehenden Einträge',
   'Select from one of the names below' => 'Wählen Sie einen der untenstehenden Namen',
   'Select from one of the projects below' => 'Wählen Sie eines der untenstehenden Projekte',
@@ -221,6 +228,7 @@ $self->{texts} = {
   'Tax'                         => 'Steuer',
   '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 list has been printed.'  => 'Die Liste wurde ausgedruckt.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Total'                       => 'Summe',
   'Transaction description'     => 'Vorgangsbezeichnung',
@@ -245,6 +253,7 @@ $self->{texts} = {
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
   'button'                      => '?',
+  'customer'                    => 'Kunde',
   'emailed to'                  => 'gemailt an',
   'invoice'                     => 'Rechnung',
   'no'                          => 'nein',
@@ -265,6 +274,7 @@ $self->{texts} = {
   'saved!'                      => 'gespeichert',
   'sent'                        => 'gesendet',
   'sent to printer'             => 'an Drucker geschickt',
+  'vendor'                      => 'Lieferant',
   'wrongformat'                 => 'Falsches Format',
   'yes'                         => 'ja',
 };
@@ -282,6 +292,8 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'check_delivered_flag'        => 'check_delivered_flag',
   'check_for_direct_delivery'   => 'check_for_direct_delivery',
   'check_for_direct_delivery_no' => 'check_for_direct_delivery_no',
@@ -290,6 +302,9 @@ $self->{subs} = {
   'check_name'                  => 'check_name',
   'check_project'               => 'check_project',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'create_backorder'            => 'create_backorder',
   'create_subtotal_row'         => 'create_subtotal_row',
   'customer_details'            => 'customer_details',
@@ -343,9 +358,12 @@ $self->{subs} = {
   'save_as_new'                 => 'save_as_new',
   'save_exchangerate'           => 'save_exchangerate',
   'search'                      => 'search',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
   'select_item'                 => 'select_item',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_name'                 => 'select_name',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
index 9fefe7c..37d10cb 100644 (file)
@@ -14,6 +14,7 @@ $self->{texts} = {
   'CANCELED'                    => 'Storniert',
   'Cc'                          => 'Cc',
   'Confirmation'                => 'Auftragsbestätigung',
+  'Contact'                     => 'Kontakt',
   'Continue'                    => 'Weiter',
   'Credit Note'                 => 'Gutschrift',
   'Customer Number'             => 'Kundennummer',
@@ -51,10 +52,13 @@ $self->{texts} = {
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
   'No'                          => 'Nein',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -90,13 +94,18 @@ $self->{texts} = {
   'SCREENED'                    => 'Angezeigt',
   'Save'                        => 'Speichern',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
   'Subject'                     => 'Betreff',
   'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'Das Feld \'tag\' darf nur aus alphanumerischen Zeichen und den Zeichen - _ ( ) bestehen.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
   'Unit'                        => 'Einheit',
@@ -107,6 +116,7 @@ $self->{texts} = {
   'Yes'                         => 'Ja',
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
+  'customer'                    => 'Kunde',
   'history'                     => 'Historie',
   'invoice'                     => 'Rechnung',
   'no'                          => 'nein',
@@ -117,6 +127,7 @@ $self->{texts} = {
   'request_quotation'           => 'Angebotsanforderung',
   'sales_order'                 => 'Kundenauftrag',
   'sales_quotation'             => 'Verkaufsangebot',
+  'vendor'                      => 'Lieferant',
   'yes'                         => 'ja',
 };
 
@@ -129,7 +140,12 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'delete'                      => 'delete',
   'delivery_customer_selection' => 'delivery_customer_selection',
   'edit'                        => 'edit',
@@ -150,8 +166,11 @@ $self->{subs} = {
   'reformat_numbers'            => 'reformat_numbers',
   'save'                        => 'save',
   'search'                      => 'search',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
   'set_longdescription'         => 'set_longdescription',
index 4ae0507..4b447bb 100644 (file)
@@ -10,6 +10,7 @@ $self->{texts} = {
   'Cc'                          => 'Cc',
   'Cleared Balance'             => 'abgeschlossen',
   'Confirmation'                => 'Auftragsbestätigung',
+  'Contact'                     => 'Kontakt',
   'Continue'                    => 'Weiter',
   'Credit Note'                 => 'Gutschrift',
   'Customer Number'             => 'Kundennummer',
@@ -44,10 +45,13 @@ $self->{texts} = {
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -73,16 +77,21 @@ $self->{texts} = {
   'SAVED FOR DUNNING'           => 'Gespeichert',
   'SCREENED'                    => 'Angezeigt',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select all'                  => 'Alle auswählen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Source'                      => 'Beleg',
   'Statement Balance'           => 'Sammelrechnungsbilanz',
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
   'Subject'                     => 'Betreff',
   'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'Das Feld \'tag\' darf nur aus alphanumerischen Zeichen und den Zeichen - _ ( ) bestehen.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
   'Unit'                        => 'Einheit',
@@ -94,6 +103,7 @@ $self->{texts} = {
   'Vendor details'              => 'Lieferantendetails',
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
+  'customer'                    => 'Kunde',
   'invoice'                     => 'Rechnung',
   'no'                          => 'nein',
   'packing_list'                => 'Versandliste',
@@ -103,6 +113,7 @@ $self->{texts} = {
   'request_quotation'           => 'Angebotsanforderung',
   'sales_order'                 => 'Kundenauftrag',
   'sales_quotation'             => 'Verkaufsangebot',
+  'vendor'                      => 'Lieferant',
   'yes'                         => 'ja',
 };
 
@@ -114,7 +125,12 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'delivery_customer_selection' => 'delivery_customer_selection',
   'display_form'                => 'display_form',
   'done'                        => 'done',
@@ -127,8 +143,11 @@ $self->{subs} = {
   'reconciliation'              => 'reconciliation',
   'reformat_numbers'            => 'reformat_numbers',
   'select_all'                  => 'select_all',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
   'set_longdescription'         => 'set_longdescription',
index 2face80..b288d9d 100644 (file)
@@ -24,6 +24,7 @@ $self->{texts} = {
   'Cc'                          => 'Cc',
   'Compare to'                  => 'Gegenüberstellen zu',
   'Confirmation'                => 'Auftragsbestätigung',
+  'Contact'                     => 'Kontakt',
   'Continue'                    => 'Weiter',
   'Copies'                      => 'Kopien',
   'Could not spawn html2ps or GhostScript.' => 'html2ps oder GhostScript konnte nicht gestartet werden.',
@@ -96,10 +97,13 @@ $self->{texts} = {
   'Monthly'                     => 'monatlich',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -144,9 +148,13 @@ $self->{texts} = {
   'SCREENED'                    => 'Angezeigt',
   'Screen'                      => 'Bildschirm',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Select from one of the names below' => 'Wählen Sie einen der untenstehenden Namen',
   'Select from one of the projects below' => 'Wählen Sie eines der untenstehenden Projekte',
   'Select postscript or PDF!'   => 'Postscript oder PDF auswählen!',
@@ -165,6 +173,7 @@ $self->{texts} = {
   'Tax paid'                    => 'Vorsteuer',
   '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 list has been printed.'  => 'Die Liste wurde ausgedruckt.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Total'                       => 'Summe',
   'Trial Balance'               => 'Saldenbilanz',
@@ -187,6 +196,7 @@ $self->{texts} = {
   'bin_list'                    => 'Lagerliste',
   'bis'                         => 'bis',
   'button'                      => '?',
+  'customer'                    => 'Kunde',
   'for Period'                  => 'für den Zeitraum',
   'invoice'                     => 'Rechnung',
   'list_of_payments'            => 'zahlungsausgaenge',
@@ -202,6 +212,7 @@ $self->{texts} = {
   'request_quotation'           => 'Angebotsanforderung',
   'sales_order'                 => 'Kundenauftrag',
   'sales_quotation'             => 'Verkaufsangebot',
+  'vendor'                      => 'Lieferant',
   'wrongformat'                 => 'Falsches Format',
   'yes'                         => 'ja',
 };
@@ -218,9 +229,14 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'check_name'                  => 'check_name',
   'check_project'               => 'check_project',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'create_aging_subtotal_row'   => 'create_aging_subtotal_row',
   'create_list_accounts_subtotal_row' => 'create_list_accounts_subtotal_row',
   'delivery_customer_selection' => 'delivery_customer_selection',
@@ -256,8 +272,11 @@ $self->{subs} = {
   'report_generator_export_as_pdf' => 'report_generator_export_as_pdf',
   'sales_invoice'               => 'sales_invoice',
   'select_all'                  => 'select_all',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_name'                 => 'select_name',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
index d3d2e24..a8c811d 100644 (file)
@@ -22,6 +22,7 @@ $self->{texts} = {
   'Choose Outputformat'         => 'Ausgabeformat auswählen...',
   'Choose a Tax Number'         => 'Bitte eine Steuernummer angeben',
   'Confirmation'                => 'Auftragsbestätigung',
+  'Contact'                     => 'Kontakt',
   'Continue'                    => 'Weiter',
   'Credit Note'                 => 'Gutschrift',
   'Customer Number'             => 'Kundennummer',
@@ -69,12 +70,15 @@ $self->{texts} = {
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
   'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'Es wurde kein %s gefunden, auf den die Suchparameter zutreffen.',
   'No Company Address given'    => 'Keine Firmenadresse hinterlegt!',
   'No Company Name given'       => 'Kein Firmenname hinterlegt!',
   'No Customer was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Endkunde gefunden',
   'No Vendor was found matching the search parameters.' => 'Zu dem Suchbegriff wurde kein Händler gefunden',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
+  'No customer has been selected.' => 'Es wurde kein Kunde ausgew&auml;hlt.',
   'No employee was found matching the search parameters.' => 'Es wurde kein Angestellter gefunden, auf den die Suchparameter zutreffen.',
+  'No item was found.'          => 'Es wurde kein Eintrag gefunden.',
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No project was found matching the search parameters.' => 'Es wurde kein Projekt gefunden, auf das die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
@@ -104,10 +108,14 @@ $self->{texts} = {
   'SAVED FOR DUNNING'           => 'Gespeichert',
   'SCREENED'                    => 'Angezeigt',
   'Select a Customer'           => 'Endkunde auswählen',
+  'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
   'Select a period'             => 'Bitte Zeitraum auswählen',
   'Select a project'            => 'Projekt ausw&auml;hlen',
+  'Select a vendor'             => 'Einen Lieferanten ausw&auml;hlen',
+  'Select a vendor or customer' => 'Kunden oder Lieferanten ausw&auml;hlen',
   'Select an employee'          => 'Angestellten ausw&auml;hlen',
+  'Select an entry'             => 'Eintrag ausw&auml;hlen',
   'Select from one of the names below' => 'Wählen Sie einen der untenstehenden Namen',
   'Select from one of the projects below' => 'Wählen Sie eines der untenstehenden Projekte',
   'Sep'                         => 'Sep',
@@ -117,6 +125,7 @@ $self->{texts} = {
   'Subject'                     => 'Betreff',
   'Tax Office Preferences'      => 'Finanzamt - Einstellungen',
   'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'Das Feld \'tag\' darf nur aus alphanumerischen Zeichen und den Zeichen - _ ( ) bestehen.',
+  'There is no %s whose name matches \'%s\'.' => 'Es gibt keinen %s, dessen Name \'%s\' enth&auml;lt.',
   'To (email)'                  => 'An',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
   'USTVA-Hint: Method'          => 'Wenn Sie Ist-Versteuert sind, wählen Sie die Einnahmen-/Überschuß-Rechnung aus. Sind Sie Soll-Versteuert und bilanzverpflichtet, dann wählen Sie Bilanz aus.',
@@ -138,6 +147,7 @@ $self->{texts} = {
   'accrual'                     => 'Bilanzierung (Soll-Versteuerung)',
   'bin_list'                    => 'Lagerliste',
   'cash'                        => 'E/Ü-Rechnung (Ist-Versteuerung)',
+  'customer'                    => 'Kunde',
   'for Period'                  => 'für den Zeitraum',
   'invoice'                     => 'Rechnung',
   'month'                       => 'Monatliche Abgabe',
@@ -152,6 +162,7 @@ $self->{texts} = {
   'sales_quotation'             => 'Verkaufsangebot',
   'saved'                       => 'gespeichert',
   'to (date)'                   => 'bis',
+  'vendor'                      => 'Lieferant',
   'yes'                         => 'ja',
 };
 
@@ -167,11 +178,16 @@ $self->{subs} = {
   'build_std_url'               => 'build_std_url',
   'calculate_qty'               => 'calculate_qty',
   'call_sub'                    => 'call_sub',
+  'check_cov2'                  => 'check_cov2',
+  'check_customer_or_vendor'    => 'check_customer_or_vendor',
   'check_name'                  => 'check_name',
   'check_project'               => 'check_project',
   'config_step1'                => 'config_step1',
   'config_step2'                => 'config_step2',
   'continue'                    => 'continue',
+  'cov_selected'                => 'cov_selected',
+  'cov_selected2'               => 'cov_selected2',
+  'cov_selection_internal'      => 'cov_selection_internal',
   'create_steuernummer'         => 'create_steuernummer',
   'debug'                       => 'debug',
   'delivery_customer_selection' => 'delivery_customer_selection',
@@ -190,8 +206,11 @@ $self->{subs} = {
   'report'                      => 'report',
   'sales_invoice'               => 'sales_invoice',
   'save'                        => 'save',
+  'select_cov_internal'         => 'select_cov_internal',
+  'select_customer_or_vendor'   => 'select_customer_or_vendor',
   'select_employee'             => 'select_employee',
   'select_employee_internal'    => 'select_employee_internal',
+  'select_item_selection_internal' => 'select_item_selection_internal',
   'select_name'                 => 'select_name',
   'select_part'                 => 'select_part',
   'select_part_internal'        => 'select_part_internal',
diff --git a/templates/webpages/generic/cov_selection_de.html b/templates/webpages/generic/cov_selection_de.html
new file mode 100644 (file)
index 0000000..0be4e1a
--- /dev/null
@@ -0,0 +1,103 @@
+[%- USE HTML %]
+<body[% IF onload %] onload="[% onload %]"[% END %]>
+
+ <form method="post">
+
+  <input type="hidden" name="input_name" value="[% HTML.escape(input_name) %]">
+  <input type="hidden" name="input_id" value="[% HTML.escape(input_id) %]">
+  <input type="hidden" name="is_vendor" value="[% HTML.escape(is_vendor) %]">
+  <input type="hidden" name="allow_both" value="[% HTML.escape(allow_both) %]">
+  <input type="hidden" name="action_on_cov_selected" value="[% HTML.escape(action_on_cov_selected) %]">
+
+  <table width="100%">
+   <tr>
+    <th class="listtop">[% title %]</th>
+   </tr>
+   <tr height="5"></tr>
+
+   <tr>
+    <td>
+     [%- IF !is_vendor %]
+      Bitte einen Endkunden aus der Liste auswählen
+     [%- ELSE %]
+      Bitte einen Händler aus der Liste auswählen
+     [%- END %]
+    </td>
+   </tr>
+
+   <tr>
+    <td>
+
+     <table>
+      <tr class="listheading">
+       <th class="listheading">&nbsp;</th>
+       [%- FOREACH row = HEADER %]
+        <th nowrap class="listheading"><a href="[% HTML.escape(row.callback) %]">[% row.column_title %]</a></th>
+       [%- END %]
+      </tr>
+
+      [%- FOREACH row = COVS %]
+       <tr class="listrow[% loop.count % 2 %]">
+        <td valign="top"><button type="button" onclick="cov_selected('[% loop.count %]')">Auswahl</button></td>
+        <td valign="top"><input type="hidden" id="id_[% loop.count %]" name="id_[% loop.count %]" value="[% HTML.escape(row.id) %]">
+         <input type="hidden" id="name_[% loop.count %]" name="name_[% loop.count %]" value="[% HTML.escape(row.name) %]">
+         <input type="hidden" id="customer_is_vendor_[% loop.count %]" name="customer_is_vendor_[% loop.count %]" value="[% HTML.escape(row.customer_is_vendor) %]">
+         [% HTML.escape(row.name) %]</td>
+        <td valign="top">[% HTML.escape(row.address) %]</td>
+        <td valign="top">[% HTML.escape(row.contact) %]</td>
+       </tr>
+      [% END %]
+     </table>
+
+    </td>
+   </tr>
+  </table>
+
+ </form>
+
+ <script type="text/javascript">
+  <!--
+      function cov_selected(selected) {
+        var name = document.getElementsByName("name_" + selected)[0].value
+        var id = document.getElementsByName("id_" + selected)[0].value
+        var customer_is_vendor = document.getElementsByName("customer_is_vendor_" + selected)[0].value
+        var cov_name = document.forms[0].input_name.value;
+        window.opener.document.getElementsByName(cov_name)[0].value = name;
+        if (document.forms[0].input_id.value != "") {
+          window.opener.document.getElementsByName(document.forms[0].input_id.value)[0].value = id;
+        }
+
+        var cov_is_vendor = cov_name + "_is_vendor";
+        var input = window.opener.document.getElementsByName(cov_is_vendor)[0];
+        if (input) {
+          input.value = customer_is_vendor;
+        }
+
+        var prefix = "";
+        if (cov_name.substr(0, 2) == "f_") {
+          prefix = "f_";
+          cov_name = cov_name.substr(2);
+        }
+        cov_name = prefix + "old_" + cov_name;
+        var input = window.opener.document.getElementsByName(cov_name)[0];
+        if (input) {
+          input.value = name;
+        }
+        cov_name = prefix + "old" + cov_name;
+        input = window.opener.document.getElementsByName(cov_name)[0];
+        if (input) {
+          input.value = name;
+        }
+
+        if (document.forms[0].action_on_cov_selected.value != "") {
+          window.opener.document.getElementsByName("action")[0].value = document.forms[0].action_on_cov_selected.value;
+          window.opener.document.forms[0].submit();
+        }
+
+        self.close();
+      }
+      //-->
+ </script>
+
+</body>
+</html>
diff --git a/templates/webpages/generic/cov_selection_master.html b/templates/webpages/generic/cov_selection_master.html
new file mode 100644 (file)
index 0000000..336587e
--- /dev/null
@@ -0,0 +1,103 @@
+[%- USE HTML %]
+<body[% IF onload %] onload="[% onload %]"[% END %]>
+
+ <form method="post">
+
+  <input type="hidden" name="input_name" value="[% HTML.escape(input_name) %]">
+  <input type="hidden" name="input_id" value="[% HTML.escape(input_id) %]">
+  <input type="hidden" name="is_vendor" value="[% HTML.escape(is_vendor) %]">
+  <input type="hidden" name="allow_both" value="[% HTML.escape(allow_both) %]">
+  <input type="hidden" name="action_on_cov_selected" value="[% HTML.escape(action_on_cov_selected) %]">
+
+  <table width="100%">
+   <tr>
+    <th class="listtop">[% title %]</th>
+   </tr>
+   <tr height="5"></tr>
+
+   <tr>
+    <td>
+     [%- IF !is_vendor %]
+      <translate>Please select a customer from the list below.</translate>
+     [%- ELSE %]
+      <translate>Please select a vendor from the list below.</translate>
+     [%- END %]
+    </td>
+   </tr>
+
+   <tr>
+    <td>
+
+     <table>
+      <tr class="listheading">
+       <th class="listheading">&nbsp;</th>
+       [%- FOREACH row = HEADER %]
+        <th nowrap class="listheading"><a href="[% HTML.escape(row.callback) %]">[% row.column_title %]</a></th>
+       [%- END %]
+      </tr>
+
+      [%- FOREACH row = COVS %]
+       <tr class="listrow[% loop.count % 2 %]">
+        <td valign="top"><button type="button" onclick="cov_selected('[% loop.count %]')">Auswahl</button></td>
+        <td valign="top"><input type="hidden" id="id_[% loop.count %]" name="id_[% loop.count %]" value="[% HTML.escape(row.id) %]">
+         <input type="hidden" id="name_[% loop.count %]" name="name_[% loop.count %]" value="[% HTML.escape(row.name) %]">
+         <input type="hidden" id="customer_is_vendor_[% loop.count %]" name="customer_is_vendor_[% loop.count %]" value="[% HTML.escape(row.customer_is_vendor) %]">
+         [% HTML.escape(row.name) %]</td>
+        <td valign="top">[% HTML.escape(row.address) %]</td>
+        <td valign="top">[% HTML.escape(row.contact) %]</td>
+       </tr>
+      [% END %]
+     </table>
+
+    </td>
+   </tr>
+  </table>
+
+ </form>
+
+ <script type="text/javascript">
+  <!--
+      function cov_selected(selected) {
+        var name = document.getElementsByName("name_" + selected)[0].value
+        var id = document.getElementsByName("id_" + selected)[0].value
+        var customer_is_vendor = document.getElementsByName("customer_is_vendor_" + selected)[0].value
+        var cov_name = document.forms[0].input_name.value;
+        window.opener.document.getElementsByName(cov_name)[0].value = name;
+        if (document.forms[0].input_id.value != "") {
+          window.opener.document.getElementsByName(document.forms[0].input_id.value)[0].value = id;
+        }
+
+        var cov_is_vendor = cov_name + "_is_vendor";
+        var input = window.opener.document.getElementsByName(cov_is_vendor)[0];
+        if (input) {
+          input.value = customer_is_vendor;
+        }
+
+        var prefix = "";
+        if (cov_name.substr(0, 2) == "f_") {
+          prefix = "f_";
+          cov_name = cov_name.substr(2);
+        }
+        cov_name = prefix + "old_" + cov_name;
+        var input = window.opener.document.getElementsByName(cov_name)[0];
+        if (input) {
+          input.value = name;
+        }
+        cov_name = prefix + "old" + cov_name;
+        input = window.opener.document.getElementsByName(cov_name)[0];
+        if (input) {
+          input.value = name;
+        }
+
+        if (document.forms[0].action_on_cov_selected.value != "") {
+          window.opener.document.getElementsByName("action")[0].value = document.forms[0].action_on_cov_selected.value;
+          window.opener.document.forms[0].submit();
+        }
+
+        self.close();
+      }
+      //-->
+ </script>
+
+</body>
+</html>
diff --git a/templates/webpages/generic/multibox.html b/templates/webpages/generic/multibox.html
new file mode 100644 (file)
index 0000000..5d8e863
--- /dev/null
@@ -0,0 +1,64 @@
+[%- USE HTML %]
+[%#-
+     Multibox
+
+  This template makes an input box for you,
+  decides wether it should be a text field or a drop down box,
+  generates the HTML code, and fixes everything just right.
+
+  call:  INCLUDE generic/multibox.html var = var, var2 = .... 
+
+  options and variables:
+    name       : name of the select/textfield
+    id         : id of the select/textfield, optional, defaults to name
+    default    : entered/selected value. defaults to a dereference of name, since it is usually set to that for update mechanisms
+    id_key     : key that holds the id in each row.
+    id_sub     : name of a perl sub that calculates the id for each row. will be called with a hashref.
+    label_key  : key that holds the label in each row.
+    label_sub  : name of a perl sub that calculates the label for each row. will be called with a hashref.
+    DATA       : the actual data, expected to be arrayref of hashrefs, usually what's returned by the all_vc routines.
+    limit      : defines the limit of entries, after which a textbox is generated. defaults to vclimit, or, failing to find that, 50.
+    show_empty : show an empty first line in select boxes. defaults to false
+    style      : additional style information
+    onChange   : java magic on change
+    select     : java function call for a selection popup or other magic
+-%]
+[%- DEFAULT 
+  limit      = limit != ''   ? limit   : 50
+  id         = id    != ''   ? id      : name
+  default    = default != '' ? default : $name
+-%]
+[%- FOREACH row = DATA %]
+  [%-
+       row.id       = row.$id_key     != ''  ? row.$id_key    : $id_sub(row)
+       row.label    = row.$label_key  != ''  ? row.$label_key 
+                    : $label_sub(row) != ''  ? $label_sub(row) 
+                    :                          row.id
+       row.selected = default == row.id
+  -%]
+[%- END -%]
+[%- IF DATA.size and limit < DATA.size %]
+<input type="text" 
+ [%~ IF name     %] name="[%     HTML.escape(name)     %]"[% END ~%]
+ [%~ IF id       %] id="[%       HTML.escape(id)       %]"[% END ~%]
+ [%~ IF default  %] value="[%    HTML.escape(default)  %]"[% END ~%]
+ [%~ IF style    %] style="[%    HTML.escape(style)    %]"[% END ~%]
+>
+[%~ IF select %]
+  <button type="button" onclick="[% select %]">?</button>
+[% END ~%]
+[%- ELSE %]
+<select 
+ [%~ IF name     %] name="[%     HTML.escape(name)     %]"[% END ~%]
+ [%~ IF id       %] id="[%       HTML.escape(id)       %]"[% END ~%]
+ [%~ IF style    %] style="[%    HTML.escape(style)    %]"[% END ~%]
+ [%~ IF onChange %] onChange="[% HTML.escape(onChange) %]"[% END ~%]
+>
+  [%- IF show_empty %]
+  <option value=""></option>
+  [%- END %]
+  [%- FOREACH row = DATA %]
+  <option value="[% row.id %]"[% IF row.selected %] selected[% END %]>[% HTML.escape(row.label) %]</option>
+  [%- END %]
+</select>
+[%- END %]
index c119f1c..68112fb 100644 (file)
              </tr>
               <tr>
                 <th align="right">Zahlungskonditionen</th>
-                <td>[% payments %]</td>
+                <td>
+                      [%- INCLUDE 'generic/multibox.html' 
+                           name       = 'payment_id', 
+                           style      = 'width: 250px', 
+                           DATA       = ALL_PAYMENTS, 
+                           id_key     = 'id', 
+                           label_key  = 'description',
+                           show_empty = 1 -%]
+                </td>
            </tr>
       </table>
          </td>
index 997396d..23b2cf2 100644 (file)
              </tr>
               <tr>
                 <th align="right"><translate>Payment Terms</translate></th>
-                <td>[% payments %]</td>
+                <td>
+                      [%- INCLUDE 'generic/multibox.html' 
+                           name       = 'payment_id', 
+                           style      = 'width: 250px', 
+                           DATA       = ALL_PAYMENTS, 
+                           id_key     = 'id', 
+                           label_key  = 'description',
+                           show_empty = 1 -%]
+                </td>
            </tr>
       </table>
          </td>
index 31f4c47..1e3ea8b 100644 (file)
@@ -8,14 +8,15 @@
     <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/customer_or_vendor_selection.js"></script>
 
 [%- FOREACH row = HIDDENS %]
-   <input type="hidden" name="[% row.name %]" value="[% HTML.escape(row.value) %]" > 
+   <input type="hidden" name="[% HTML.escape(row.name) %]" value="[% HTML.escape(row.value) %]" > 
 [%- END %]
 
     <table width=100%>
       <tr class=listtop>
-        <th class=listtop>[% title %]</th>
+        <th class=listtop>[% HTML.escape(title) %]</th>
       </tr>
       <tr height="5"></tr>
       <tr>
               <td width=50%>
                 <table width=100%>
                   <tr>
-                    [% vc %]
-[%- IF contact %]
+                    <th align="right">[% IF vc == 'customer' %]Kunde[% ELSE %]Lieferant[% END %]</th>
+                    <td>
+                      [%- INCLUDE 'generic/multibox.html' 
+                           name       = vc,
+                           style      = 'width: 250px', 
+                           DATA       = vc == 'customer' ? ALL_CUSTOMERS : ALL_VENDORS,
+                           id_sub     = 'vc_keys',
+                           label_key  = 'name',
+                           select     = vc_select,
+                           limit      = vclimit,
+                           onChange   = "document.getElementById('update_button').click();" -%]
+                      <input type="button" value="D" onclick="show_vc_details('[% vc %]')">
+                    </td>
+                  </tr>
+[%- IF ALL_CONTACTS.size %]
                   <tr>
                     <th align="right">Ansprechpartner</th>
-                    <td>[% contact %]</td>
+                    <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 shipto %]
+[%- IF ALL_SHIPTO %] 
                   <tr>
                     <th align="right">Lieferadresse</th>
-                    <td>[% shipto %]</td>
+                    <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 %]
 [%- IF is_order %]
 [%- IF business %]
                   <tr>
                     <th align="right">[% business_label %]</th>
-                    <td>[% business %]; Rabatt [% LxERP.format_percent(tradediscount) %] %</td>
+                    <td>[% HTML.escape(business) %]; Rabatt [% LxERP.format_percent(tradediscount) %] %</td>
                   </tr>
 [%- END %]
 [%- IF max_dunning_level %]
                   <tr>
                     <th align="right">höchste Mahnstufe:</th>
                     <td>
-                      <b>[% max_dunning_level %]</b>;
+                      <b>[% HTML.escape(max_dunning_level) %]</b>;
                       gemahnter Betrag: <b>[% LxERP.format_amount(dunning_amount, 2) %]</b>
                     </td>
                   </tr>
 [%- END %]
                   <tr>
                     <th align="right">Steuersatz</th>
-                    <td>[% taxzone %]</td>
+                    <td>
+                      [%- INCLUDE 'generic/multibox.html' 
+                           name       = 'taxzone_id', 
+                           style      = 'width: 250px', 
+                           DATA       = ALL_TAXZONES, 
+                           id_key     = 'id', 
+                           label_key  = 'description' -%]
+                    </td>
                   </tr>
 [%- IF selectdepartment %]
                   <tr>
                     <th align=right>Motiv</th>
                     <td style="font-weight:bold" colspan=3><input name=motiv size=35 value="[% HTML.escape(motiv) %]"></td>
                   </tr>
-[%- END -%]
+[%- END %]
                   <tr>
                     <th align=right>Versandort</th>
                     <td colspan=3><input name=shippingpoint size=35 value="[% HTML.escape(shippingpoint) %]"></td>
               [% openclosed %]
                   <tr>
                     <th align="right">Bearbeiter</th>
-                    <td>[% employee %]</td>
+                    <td>
+                      [%- INCLUDE 'generic/multibox.html' 
+                           name       = 'employee_id', 
+                           DATA       = ALL_EMPLOYEES, 
+                           id_key     = 'id', 
+                           label_sub  = 'sales_employee_labels' -%]
+                    </td>
                   </tr>
-[%- IF salesmen %]
+[%- IF is_sales and ALL_SALESMEN.size %]
                   <tr>
                     <th align="right">Verkäufer/in</th>
-                    <td>[% salesmen %]</td>
+                    <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_order %]
                   <tr>
                     <th width=70% align=right nowrap>Auftragsnummer</th>
-                    <td><input name=ordnumber size=11 value="[% ordnumber %]"></td>
+                    <td><input name=ordnumber size=11 value="[% HTML.escape(ordnumber) %]"></td>
                   </tr>
 [%- END %]
                   <tr>
                     <th width=70% align=right nowrap>[% IF is_req_quo %]Anfragenummer[% ELSE %]Angebotsnummer[% END %]</th>
-                    <td><input name=quonumber size=11 value="[% quonumber %]"></td>
+                    <td><input name=quonumber size=11 value="[% HTML.escape(quonumber) %]"></td>
                   </tr>
-[%- IF is_order %]<tr>
+[%- IF is_order %]
+                  <tr>
                     <th width=70% align=right nowrap>Bestellnummer des Kunden</th>
-                    <td><input name=cusordnumber size=11 value="[% cusordnumber %]"></td>
+                    <td><input name=cusordnumber size=11 value="[% HTML.escape(cusordnumber) %]"></td>
                   </tr>
 [%- END %]
                   <tr>
                   </tr>
                   <tr>
                     <th width="70%" align="right" nowrap>Projektnummer</th>
-                    <td>[% globalprojectnumber %]</td>
+                    <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>
index d0db272..682daf5 100644 (file)
@@ -8,14 +8,15 @@
     <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/customer_or_vendor_selection.js"></script>
 
 [%- FOREACH row = HIDDENS %]
-   <input type="hidden" name="[% row.name %]" value="[% HTML.escape(row.value) %]" > 
+   <input type="hidden" name="[% HTML.escape(row.name) %]" value="[% HTML.escape(row.value) %]" > 
 [%- END %]
 
     <table width=100%>
       <tr class=listtop>
-        <th class=listtop>[% title %]</th>
+        <th class=listtop>[% HTML.escape(title) %]</th>
       </tr>
       <tr height="5"></tr>
       <tr>
               <td width=50%>
                 <table width=100%>
                   <tr>
-                    [% vc %]
-[%- IF contact %]
+                    <th align="right">[% IF vc == 'customer' %]<translate>Customer</translate>[% ELSE %]<translate>Vendor</translate>[% END %]</th>
+                    <td>
+                      [%- INCLUDE 'generic/multibox.html' 
+                           name       = vc,
+                           style      = 'width: 250px', 
+                           DATA       = vc == 'customer' ? ALL_CUSTOMERS : ALL_VENDORS,
+                           id_sub     = 'vc_keys',
+                           label_key  = 'name',
+                           select     = vc_select,
+                           limit      = vclimit,
+                           onChange   = "document.getElementById('update_button').click();" -%]
+                      <input type="button" value="D" onclick="show_vc_details('[% vc %]')">
+                    </td>
+                  </tr>
+[%- IF ALL_CONTACTS.size %]
                   <tr>
                     <th align="right"><translate>Contact Person</translate></th>
-                    <td>[% contact %]</td>
+                    <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 shipto %]
+[%- IF ALL_SHIPTO %] 
                   <tr>
                     <th align="right"><translate>Shipping Address</translate></th>
-                    <td>[% shipto %]</td>
+                    <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 %]
 [%- IF is_order %]
 [%- IF business %]
                   <tr>
                     <th align="right">[% business_label %]</th>
-                    <td>[% business %]; <translate>Trade Discount</translate> [% LxERP.format_percent(tradediscount) %] %</td>
+                    <td>[% HTML.escape(business) %]; <translate>Trade Discount</translate> [% LxERP.format_percent(tradediscount) %] %</td>
                   </tr>
 [%- END %]
 [%- IF max_dunning_level %]
                   <tr>
                     <th align="right"><translate>Max. Dunning Level</translate>:</th>
                     <td>
-                      <b>[% max_dunning_level %]</b>;
+                      <b>[% HTML.escape(max_dunning_level) %]</b>;
                       <translate>Dunning Amount</translate>: <b>[% LxERP.format_amount(dunning_amount, 2) %]</b>
                     </td>
                   </tr>
 [%- END %]
                   <tr>
                     <th align="right"><translate>Steuersatz</translate></th>
-                    <td>[% taxzone %]</td>
+                    <td>
+                      [%- INCLUDE 'generic/multibox.html' 
+                           name       = 'taxzone_id', 
+                           style      = 'width: 250px', 
+                           DATA       = ALL_TAXZONES, 
+                           id_key     = 'id', 
+                           label_key  = 'description' -%]
+                    </td>
                   </tr>
 [%- IF selectdepartment %]
                   <tr>
                     <th align=right><translate>Motiv</translate></th>
                     <td style="font-weight:bold" colspan=3><input name=motiv size=35 value="[% HTML.escape(motiv) %]"></td>
                   </tr>
-[%- END -%]
+[%- END %]
                   <tr>
                     <th align=right><translate>Shipping Point</translate></th>
                     <td colspan=3><input name=shippingpoint size=35 value="[% HTML.escape(shippingpoint) %]"></td>
               [% openclosed %]
                   <tr>
                     <th align="right"><translate>Employee</translate></th>
-                    <td>[% employee %]</td>
+                    <td>
+                      [%- INCLUDE 'generic/multibox.html' 
+                           name       = 'employee_id', 
+                           DATA       = ALL_EMPLOYEES, 
+                           id_key     = 'id', 
+                           label_sub  = 'sales_employee_labels' -%]
+                    </td>
                   </tr>
-[%- IF salesmen %]
+[%- IF is_sales and ALL_SALESMEN.size %]
                   <tr>
                     <th align="right"><translate>Salesman</translate></th>
-                    <td>[% salesmen %]</td>
+                    <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_order %]
                   <tr>
                     <th width=70% align=right nowrap><translate>Order Number</translate></th>
-                    <td><input name=ordnumber size=11 value="[% ordnumber %]"></td>
+                    <td><input name=ordnumber size=11 value="[% HTML.escape(ordnumber) %]"></td>
                   </tr>
 [%- END %]
                   <tr>
                     <th width=70% align=right nowrap>[% IF is_req_quo %]<translate>RFQ Number</translate>[% ELSE %]<translate>Quotation Number</translate>[% END %]</th>
-                    <td><input name=quonumber size=11 value="[% quonumber %]"></td>
+                    <td><input name=quonumber size=11 value="[% HTML.escape(quonumber) %]"></td>
                   </tr>
-[%- IF is_order %]<tr>
+[%- IF is_order %]
+                  <tr>
                     <th width=70% align=right nowrap><translate>Customer Order Number</translate></th>
-                    <td><input name=cusordnumber size=11 value="[% cusordnumber %]"></td>
+                    <td><input name=cusordnumber size=11 value="[% HTML.escape(cusordnumber) %]"></td>
                   </tr>
 [%- END %]
                   <tr>
                   </tr>
                   <tr>
                     <th width="70%" align="right" nowrap><translate>Project Number</translate></th>
-                    <td>[% globalprojectnumber %]</td>
+                    <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>