Merge branch 'ir_templates'
authorSven Schöling <s.schoeling@linet-services.de>
Wed, 30 Dec 2009 15:26:04 +0000 (16:26 +0100)
committerSven Schöling <s.schoeling@linet-services.de>
Wed, 30 Dec 2009 15:26:04 +0000 (16:26 +0100)
Conflicts:
SL/OP.pm

165 files changed:
SL/CP.pm
SL/CVar.pm
SL/DBUtils.pm
SL/Form.pm
SL/IC.pm
SL/IR.pm
SL/IS.pm
SL/Locale.pm
SL/MoreCommon.pm
SL/OE.pm
SL/PE.pm
SL/RP.pm
SL/RecordLinks.pm
SL/Template/Plugin/MultiColumnIterator.pm
SL/USTVA.pm
SL/WH.pm
bin/mozilla/am.pl
bin/mozilla/ap.pl
bin/mozilla/ar.pl
bin/mozilla/arap.pl
bin/mozilla/bp.pl
bin/mozilla/ca.pl
bin/mozilla/common.pl
bin/mozilla/cp.pl
bin/mozilla/ct.pl
bin/mozilla/datev.pl
bin/mozilla/dn.pl
bin/mozilla/do.pl
bin/mozilla/gl.pl
bin/mozilla/ic.pl
bin/mozilla/invoice_io.pl
bin/mozilla/io.pl
bin/mozilla/ir.pl
bin/mozilla/is.pl
bin/mozilla/kopf.pl
bin/mozilla/menujs.pl
bin/mozilla/oe.pl
bin/mozilla/pe.pl
bin/mozilla/projects.pl
bin/mozilla/rc.pl
bin/mozilla/rp.pl
bin/mozilla/wh.pl
css/jquery.autocomplete.css [new file with mode: 0644]
js/jquery-autocomplete/jquery.autocomplete.pack.js [new file with mode: 0644]
js/jquery.autocomplete.js [new symlink]
locale/de/all
locale/de/ap
locale/de/ar
locale/de/ct
locale/de/do
locale/de/ic
locale/de/io
locale/de/ir
locale/de/is
locale/de/login
locale/de/oe
locale/de/todo
locale/en/all
locale/en/ap
locale/en/ar
locale/en/bankaccounts [new file with mode: 0644]
locale/en/cp_greeting_migration [new file with mode: 0644]
locale/en/ct
locale/en/dn
locale/en/do
locale/en/ic
locale/en/io
locale/en/ir
locale/en/is
locale/en/login
locale/en/lost
locale/en/menu
locale/en/menunew
locale/en/missing
locale/en/oe
locale/en/sepa [new file with mode: 0644]
locale/en/todo
sql/Pg-upgrade2/cp_greeting_migration.pl
t/002goodperl.t
t/005no_tabs.t
t/006spellcheck.t
templates/webpages/am/config_en.html
templates/webpages/am/edit_accounts_de.html
templates/webpages/am/edit_accounts_en.html
templates/webpages/am/edit_accounts_master.html
templates/webpages/amcvar/search_filter_en.html
templates/webpages/amcvar/search_include_en.html
templates/webpages/ap/search_de.html [new file with mode: 0644]
templates/webpages/ap/search_en.html [new file with mode: 0644]
templates/webpages/ap/search_master.html [new file with mode: 0644]
templates/webpages/ar/search_de.html [new file with mode: 0644]
templates/webpages/ar/search_en.html [new file with mode: 0644]
templates/webpages/ar/search_master.html [new file with mode: 0644]
templates/webpages/bankaccounts/bank_account_display_form_en.html [new file with mode: 0644]
templates/webpages/bankaccounts/bank_account_list_bottom_en.html [new file with mode: 0644]
templates/webpages/common/search_history_de.html
templates/webpages/common/search_history_en.html
templates/webpages/common/search_history_master.html
templates/webpages/common/show_history_de.html
templates/webpages/common/show_history_en.html
templates/webpages/common/show_history_master.html
templates/webpages/ct/ajax_autocomplete_de.html [new file with mode: 0644]
templates/webpages/ct/ajax_autocomplete_en.html [new file with mode: 0644]
templates/webpages/ct/ajax_autocomplete_master.html [new file with mode: 0644]
templates/webpages/ct/form_header_de.html
templates/webpages/ct/form_header_en.html
templates/webpages/ct/form_header_master.html
templates/webpages/ct/search_de.html
templates/webpages/ct/search_en.html
templates/webpages/ct/search_master.html
templates/webpages/dbupgrade/cp_greeting_update_form_en.html [new file with mode: 0644]
templates/webpages/do/form_header_de.html
templates/webpages/do/form_header_en.html
templates/webpages/do/form_header_master.html
templates/webpages/do/search_de.html
templates/webpages/do/search_en.html
templates/webpages/do/search_master.html
templates/webpages/dunning/search_en.html
templates/webpages/generic/autocomplete.html [new file with mode: 0644]
templates/webpages/ic/ajax_autocomplete_de.html [new file with mode: 0644]
templates/webpages/ic/ajax_autocomplete_en.html [new file with mode: 0644]
templates/webpages/ic/ajax_autocomplete_master.html [new file with mode: 0644]
templates/webpages/ic/form_footer_de.html
templates/webpages/ic/form_footer_en.html
templates/webpages/ic/form_footer_master.html
templates/webpages/ic/search_de.html
templates/webpages/ic/search_en.html
templates/webpages/ic/search_master.html
templates/webpages/ir/_payments_de.html [new file with mode: 0644]
templates/webpages/ir/_payments_en.html [new file with mode: 0644]
templates/webpages/ir/_payments_master.html [new file with mode: 0644]
templates/webpages/ir/form_footer_de.html [new file with mode: 0644]
templates/webpages/ir/form_footer_en.html [new file with mode: 0644]
templates/webpages/ir/form_footer_master.html [new file with mode: 0644]
templates/webpages/ir/form_header_de.html [new file with mode: 0644]
templates/webpages/ir/form_header_en.html [new file with mode: 0644]
templates/webpages/ir/form_header_master.html [new file with mode: 0644]
templates/webpages/is/_payments_en.html [new file with mode: 0644]
templates/webpages/is/form_footer_en.html [new file with mode: 0644]
templates/webpages/is/form_header_de.html
templates/webpages/is/form_header_en.html [new file with mode: 0644]
templates/webpages/is/form_header_master.html
templates/webpages/oe/form_footer_en.html
templates/webpages/oe/form_header_de.html
templates/webpages/oe/form_header_en.html
templates/webpages/oe/form_header_master.html
templates/webpages/oe/sales_order_de.html
templates/webpages/oe/sales_order_en.html
templates/webpages/oe/sales_order_master.html
templates/webpages/oe/search_de.html
templates/webpages/oe/search_en.html
templates/webpages/oe/search_master.html
templates/webpages/report_generator/html_report_en.html
templates/webpages/sepa/bank_transfer_add_en.html [new file with mode: 0644]
templates/webpages/sepa/bank_transfer_create_en.html [new file with mode: 0644]
templates/webpages/sepa/bank_transfer_created_en.html [new file with mode: 0644]
templates/webpages/sepa/bank_transfer_edit_en.html [new file with mode: 0644]
templates/webpages/sepa/bank_transfer_list_bottom_en.html [new file with mode: 0644]
templates/webpages/sepa/bank_transfer_list_top_en.html [new file with mode: 0644]
templates/webpages/sepa/bank_transfer_mark_as_closed_step1_en.html [new file with mode: 0644]
templates/webpages/sepa/bank_transfer_search_en.html [new file with mode: 0644]
templates/webpages/ustva/report_de.html
templates/webpages/ustva/report_en.html
templates/webpages/ustva/report_master.html
templates/webpages/webdav/_list_en.html [new file with mode: 0644]

index e29622f..b7e6241 100644 (file)
--- a/SL/CP.pm
+++ b/SL/CP.pm
@@ -164,9 +164,9 @@ sub get_openinvoices {
 
   my $query =
      qq|SELECT a.id, a.invnumber, a.transdate, a.amount, a.paid, a.curr | .
-          qq|FROM $arap a | .
+     qq|FROM $arap a | .
      qq|WHERE (a.${vc}_id = ?) AND (a.curr = ? $curr_null) AND NOT (a.amount = paid)| .
-                qq|ORDER BY a.id|;
+     qq|ORDER BY a.id|;
   my $sth = prepare_execute_query($form, $dbh, $query,
                                   conv_i($form->{"${vc}_id"}),
                                   $form->{currency});
@@ -304,7 +304,7 @@ sub process_payment {
           qq|INSERT INTO acc_trans (trans_id, chart_id, transdate, amount, | .
           qq|                       cleared, fx_transaction) | .
           qq|VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, ?, ?)|;
-                   @values = (conv_i($form->{"id_$i"}), $paymentaccno,
+        @values = (conv_i($form->{"id_$i"}), $paymentaccno,
                    conv_date($form->{datepaid}), ($amount * $ml * -1), '0',
                    '1');
         do_query($form, $dbh, $query, @values);
@@ -345,7 +345,7 @@ sub process_payment {
 
       # update AR/AP transaction
       $query = qq|UPDATE $arap SET $paid, datepaid = ? WHERE id = ?|;
-                 @values = (conv_date($form->{datepaid}), conv_i($form->{"id_$i"}));
+      @values = (conv_date($form->{datepaid}), conv_i($form->{"id_$i"}));
       do_query($form, $dbh, $query, @values);
       # saving the history
       $form->{id} = $form->{"id_$i"};
index 0099b7c..4d9b6a7 100644 (file)
@@ -606,18 +606,6 @@ sub get_field_format_list {
   return ($date_fields, $number_fields);
 }
 
-=head2 VALIDITY
-
-Suppose the following scenario:
-
-You have a lot of parts in your database, and a set of properties cofigured. Now not every part has every of these properties, some combinations will just make no sense. In order to clean up your inputs a bit, you want to mark certain combinations as invalid, blocking them from modification and possibly display.
-
-Validity is assumed. If you modify validity, you actually save B<invalidity>.
-iNvalidity is saved as a function of config_id, and the trans_id
-
-In the naive way, disable an attribute for a specific id (simple)
-
-=cut
 sub save_custom_variables_validity {
   $main::lxdebug->enter_sub();
 
@@ -683,3 +671,36 @@ sub get_custom_variables_validity {
 }
 
 1;
+
+__END__
+
+=head1 NAME
+
+SL::CVar.pm - Custom Variables module
+
+=head1 SYNOPSIS
+
+  # dealing with configs
+
+  my $all_configs = CVar->get_configs()
+  my $config      = CVar->get_config(id => '1234')
+
+  CVar->save_config($config);
+  CVar->delete->config($config)
+
+  # dealing with custom vars
+
+  CVar->get_custom_variables(module => 'ic')
+
+=head2 VALIDITY
+
+Suppose the following scenario:
+
+You have a lot of parts in your database, and a set of properties cofigured. Now not every part has every of these properties, some combinations will just make no sense. In order to clean up your inputs a bit, you want to mark certain combinations as invalid, blocking them from modification and possibly display.
+
+Validity is assumed. If you modify validity, you actually save B<invalidity>.
+Invalidity is saved as a function of config_id, and the trans_id
+
+In the naive way, disable an attribute for a specific id (simple)
+
+=cut
index 6d20a69..e041e10 100644 (file)
@@ -558,8 +558,6 @@ Dumps a query using LXDebug->message, using LEVEL for the debug-level of LXDebug
 
 =back
 
-=head1 SEE ALSO
-
 =head1 MODULE AUTHORS
 
 Moritz Bunkus E<lt>m.bunkus@linet-services.deE<gt>
index 579b1ef..a0c8ce1 100644 (file)
@@ -68,62 +68,6 @@ END {
   }
 }
 
-=item _store_value()
-
-parses a complex var name, and stores it in the form.
-
-syntax:
-  $form->_store_value($key, $value);
-
-keys must start with a string, and can contain various tokens.
-supported key structures are:
-
-1. simple access
-  simple key strings work as expected
-
-  id => $form->{id}
-
-2. hash access.
-  separating two keys by a dot (.) will result in a hash lookup for the inner value
-  this is similar to the behaviour of java and templating mechanisms.
-
-  filter.description => $form->{filter}->{description}
-
-3. array+hashref access
-
-  adding brackets ([]) before the dot will cause the next hash to be put into an array.
-  using [+] instead of [] will force a new array index. this is useful for recurring
-  data structures like part lists. put a [+] into the first varname, and use [] on the
-  following ones.
-
-  repeating these names in your template:
-
-    invoice.items[+].id
-    invoice.items[].parts_id
-
-  will result in:
-
-    $form->{invoice}->{items}->[
-      {
-        id       => ...
-        parts_id => ...
-      },
-      {
-        id       => ...
-        parts_id => ...
-      }
-      ...
-    ]
-
-4. arrays
-
-  using brackets at the end of a name will result in a pure array to be created.
-  note that you mustn't use [+], which is reserved for array+hash access and will
-  result in undefined behaviour in array context.
-
-  filter.status[]  => $form->{status}->[ val1, val2, ... ]
-
-=cut
 sub _store_value {
   $main::lxdebug->enter_sub(2);
 
@@ -692,6 +636,7 @@ sub header {
 
       $jsscript = qq|
         <script type="text/javascript" src="js/jquery.js"></script>
+        <script type='text/javascript' src='js/jquery.autocomplete.js'>
         <script type="text/javascript" src="js/common.js"></script>
         <style type="text/css">\@import url(js/jscalendar/calendar-win2k-1.css);</style>
         <script type="text/javascript" src="js/jscalendar/calendar.js"></script>
@@ -724,6 +669,8 @@ sub header {
 
   $fokus
 
+  <link rel="stylesheet" href="css/jquery.autocomplete.css" type="text/css" />
+
   <meta name="robots" content="noindex,nofollow" />
   <script type="text/javascript" src="js/highlight_input.js"></script>
 
@@ -3312,19 +3259,6 @@ sub update_defaults {
   return $var;
 }
 
-=item update_business
-
-PARAMS (not named):
- \%config,     - config hashref
- $business_id, - business id
- $dbh          - optional database handle
-
-handles business (thats customer/vendor types) sequences.
-
-special behaviour for empty strings in customerinitnumber field:
-will in this case not increase the value, and return undef.
-
-=cut
 sub update_business {
   $main::lxdebug->enter_sub();
 
@@ -3498,3 +3432,93 @@ sub restore_vars {
 }
 
 1;
+
+__END__
+
+=head1 NAME
+
+SL::Form.pm - main data object.
+
+=head1 SYNOPSIS
+
+This is the main data object of Lx-Office.
+Unfortunately it also acts as a god object for certain data retrieval procedures used in the entry points.
+Points of interest for a beginner are:
+
+ - $form->error            - renders a generic error in html. accepts an error message
+ - $form->get_standard_dbh - returns a database connection for the
+
+=head1 SPECIAL FUNCTIONS
+
+=over 4
+
+=item _store_value()
+
+parses a complex var name, and stores it in the form.
+
+syntax:
+  $form->_store_value($key, $value);
+
+keys must start with a string, and can contain various tokens.
+supported key structures are:
+
+1. simple access
+  simple key strings work as expected
+
+  id => $form->{id}
+
+2. hash access.
+  separating two keys by a dot (.) will result in a hash lookup for the inner value
+  this is similar to the behaviour of java and templating mechanisms.
+
+  filter.description => $form->{filter}->{description}
+
+3. array+hashref access
+
+  adding brackets ([]) before the dot will cause the next hash to be put into an array.
+  using [+] instead of [] will force a new array index. this is useful for recurring
+  data structures like part lists. put a [+] into the first varname, and use [] on the
+  following ones.
+
+  repeating these names in your template:
+
+    invoice.items[+].id
+    invoice.items[].parts_id
+
+  will result in:
+
+    $form->{invoice}->{items}->[
+      {
+        id       => ...
+        parts_id => ...
+      },
+      {
+        id       => ...
+        parts_id => ...
+      }
+      ...
+    ]
+
+4. arrays
+
+  using brackets at the end of a name will result in a pure array to be created.
+  note that you mustn't use [+], which is reserved for array+hash access and will
+  result in undefined behaviour in array context.
+
+  filter.status[]  => $form->{status}->[ val1, val2, ... ]
+
+=item update_business PARAMS
+
+PARAMS (not named):
+ \%config,     - config hashref
+ $business_id, - business id
+ $dbh          - optional database handle
+
+handles business (thats customer/vendor types) sequences.
+
+special behaviour for empty strings in customerinitnumber field:
+will in this case not increase the value, and return undef.
+
+=back
+
+=cut
index 9cd3ed7..080aedf 100644 (file)
--- a/SL/IC.pm
+++ b/SL/IC.pm
@@ -497,8 +497,8 @@ sub save {
       if (($form->{"make_$i"}) || ($form->{"model_$i"})) {
 
         $query = qq|INSERT INTO makemodel (parts_id, make, model) | .
-                            qq|VALUES (?, ?, ?)|;
-                   @values = (conv_i($form->{id}), conv_i($form->{"make_$i"}), $form->{"model_$i"});
+                 qq|VALUES (?, ?, ?)|;
+        @values = (conv_i($form->{id}), conv_i($form->{"make_$i"}), $form->{"model_$i"});
 
         do_query($form, $dbh, $query, @values);
       }
@@ -511,7 +511,7 @@ sub save {
       $query =
         qq|INSERT INTO partstax (parts_id, chart_id)
            VALUES (?, (SELECT id FROM chart WHERE accno = ?))|;
-                       @values = (conv_i($form->{id}), $item);
+      @values = (conv_i($form->{id}), $item);
       do_query($form, $dbh, $query, @values);
     }
   }
@@ -525,8 +525,8 @@ sub save {
       if ($form->{"qty_$i"} != 0) {
         $form->{"bom_$i"} *= 1;
         $query = qq|INSERT INTO assembly (id, parts_id, qty, bom) | .
-                            qq|VALUES (?, ?, ?, ?)|;
-                   @values = (conv_i($form->{id}), conv_i($form->{"id_$i"}), conv_i($form->{"qty_$i"}), $form->{"bom_$i"} ? 't' : 'f');
+                 qq|VALUES (?, ?, ?, ?)|;
+        @values = (conv_i($form->{id}), conv_i($form->{"id_$i"}), conv_i($form->{"qty_$i"}), $form->{"bom_$i"} ? 't' : 'f');
         do_query($form, $dbh, $query, @values);
       }
     }
@@ -937,7 +937,9 @@ sub all_parts {
 
   #my $order_clause = " ORDER BY $form->{sort} $sort_order";
 
-  my $limit_clause = " LIMIT 100" if $form->{top100};
+  my $limit_clause;
+  $limit_clause = " LIMIT 100"                   if $form->{top100};
+  $limit_clause = " LIMIT " . $form->{limit} * 1 if $form->{limit} * 1;
 
   #=== joins and complicated filters ========#
 
@@ -1060,6 +1062,8 @@ sub all_parts {
   }
 
   $main::lxdebug->leave_sub();
+
+  return wantarray ? @{ $form->{parts} } : $form->{parts};
 }
 
 sub _create_filter_for_priceupdate {
index 7e24d4e..a64869d 100644 (file)
--- a/SL/IR.pm
+++ b/SL/IR.pm
@@ -917,7 +917,7 @@ sub get_vendor {
   my $query =
     qq|SELECT
          v.id AS vendor_id, v.name AS vendor, v.discount as vendor_discount,
-        v.creditlimit, v.terms, v.notes AS intnotes,
+         v.creditlimit, v.terms, v.notes AS intnotes,
          v.email, v.cc, v.bcc, v.language_id, v.payment_id,
          v.street, v.zipcode, v.city, v.country, v.taxzone_id,
          $duedate + COALESCE(pt.terms_netto, 0) AS duedate,
index 7c923b0..a176b4d 100644 (file)
--- a/SL/IS.pm
+++ b/SL/IS.pm
@@ -1754,8 +1754,8 @@ sub retrieve_item {
 
   #Es soll auch nach EAN gesucht werden, ohne Einschränkung durch Beschreibung
   if ($form->{"partnumber_$i"} && !$form->{"description_$i"}) {
-       $where .= qq| OR (NOT p.obsolete = '1' AND p.ean = ? )|;
-       push @values, $form->{"partnumber_$i"};
+    $where .= qq| OR (NOT p.obsolete = '1' AND p.ean = ? )|;
+    push @values, $form->{"partnumber_$i"};
   }
 
   if ($form->{"description_$i"}) {
index b869587..d6ac181 100644 (file)
@@ -215,7 +215,7 @@ sub findsub {
   if (exists $self->{subs}{$text_rev}) {
     $text = $self->{subs}{$text_rev};
   } elsif ($self->{countrycode} && $self->{NLS_file}) {
-    Form->error("$text not defined in locale/$self->{countrycode}/$self->{NLS_file}");
+    $main::form->error("$text not defined in locale/$self->{countrycode}/$self->{NLS_file}");
   }
 
   $main::lxdebug->leave_sub();
index e93dd17..0d5413b 100644 (file)
@@ -88,24 +88,6 @@ sub any (&@) {
   return 0;
 }
 
-=item cross BLOCK ARRAY ARRAY
-
-Evaluates BLOCK for each combination of elements in ARRAY1 and ARRAY2
-and returns a new list consisting of BLOCK's return values.
-The two elements are set to $a and $b.
-Note that those two are aliases to the original value so changing them
-will modify the input arrays.
-
-  # append each to each
-  @a = qw/a b c/;
-  @b = qw/1 2 3/;
-  @x = cross { "$a$b" } @a, @b;
-  # returns a1, a2, a3, b1, b2, b3, c1, c2, c3
-
-As cross expects an array but returns a list it is not directly chainable
-at the moment. This will be corrected in the future.
-
-=cut
 sub cross(&\@\@) {
   my $op = shift;
   use vars qw/@A @B/;
@@ -167,3 +149,47 @@ sub listify {
 }
 
 1;
+
+__END__
+
+=head1 NAME
+
+SL::MoreCommon.pm - helper functions
+
+=head1 DESCRIPTION
+
+this is a collection of helper functions used in Lx-Office.
+Most of them are either obvious or too obscure to care about unless you really have to.
+The exceptions are documented here.
+
+=head2 FUNCTIONS
+
+=over 4
+
+=item save_form
+=item restore_form
+
+A lot of the old sql-ledger routines are strictly procedural. They search for params in the $form object, do stuff with it, and return a status code.
+
+Once in a while you'll want something from such a function without altering $form. Yeah, you could rewrite the routine from scratch... not. Just save you form, execute the routine, grab your results, and restore the previous form while you curse at the original design.
+
+=item cross BLOCK ARRAY ARRAY
+
+Evaluates BLOCK for each combination of elements in ARRAY1 and ARRAY2
+and returns a new list consisting of BLOCK's return values.
+The two elements are set to $a and $b.
+Note that those two are aliases to the original value so changing them
+will modify the input arrays.
+
+  # append each to each
+  @a = qw/a b c/;
+  @b = qw/1 2 3/;
+  @x = cross { "$a$b" } @a, @b;
+  # returns a1, a2, a3, b1, b2, b3, c1, c2, c3
+
+As cross expects an array but returns a list it is not directly chainable
+at the moment. This will be corrected in the future.
+
+=back
+
+=cut
index 3f7dbaa..b1e1f9f 100644 (file)
--- a/SL/OE.pm
+++ b/SL/OE.pm
@@ -43,20 +43,6 @@ use SL::IC;
 
 use strict;
 
-=head1 NAME
-
-OE.pm - Order entry module
-
-=head1 DESCRIPTION
-
-OE.pm is part of the OE module. OE is responsible for sales and purchase orders, as well as sales quotations and purchase requests. This file abstracts the database tables C<oe> and C<orderitems>.
-
-=head1 FUNCTIONS
-
-=over 4
-
-=cut
-
 sub transactions {
   $main::lxdebug->enter_sub();
 
@@ -957,22 +943,6 @@ sub retrieve {
   return $rc;
 }
 
-=item retrieve_simple PARAMS
-
-simple OE retrieval by id. does not look up customer, vendor, units or any other stuff. only oe and orderitems.
-
-  my $order = retrieve_simple(id => 2);
-
-  $order => {
-    %_OE_CONTENT,
-    orderitems => [
-      %_ORDERITEM_ROW_1,
-      %_ORDERITEM_ROW_2,
-      ...
-    ]
-  }
-
-=cut
 sub retrieve_simple {
   $main::lxdebug->enter_sub();
 
@@ -1227,13 +1197,13 @@ sub order_details {
         }
 
         $query = qq|SELECT p.partnumber, p.description, p.unit, a.qty, | .
-                      qq|pg.partsgroup | .
-                      qq|FROM assembly a | .
-                            qq|  JOIN parts p ON (a.parts_id = p.id) | .
-                            qq|    LEFT JOIN partsgroup pg ON (p.partsgroup_id = pg.id) | .
-                            qq|    WHERE a.bom = '1' | .
-                            qq|    AND a.id = ? | . $sortorder;
-                   @values = ($form->{"id_$i"});
+                 qq|pg.partsgroup | .
+                 qq|FROM assembly a | .
+                 qq|  JOIN parts p ON (a.parts_id = p.id) | .
+                 qq|    LEFT JOIN partsgroup pg ON (p.partsgroup_id = pg.id) | .
+                 qq|    WHERE a.bom = '1' | .
+                 qq|    AND a.id = ? | . $sortorder;
+        @values = ($form->{"id_$i"});
         $sth = $dbh->prepare($query);
         $sth->execute(@values) || $form->dberror($query);
 
@@ -1341,3 +1311,36 @@ SQL
 }
 
 1;
+
+__END__
+
+=head1 NAME
+
+OE.pm - Order entry module
+
+=head1 DESCRIPTION
+
+OE.pm is part of the OE module. OE is responsible for sales and purchase orders, as well as sales quotations and purchase requests. This file abstracts the database tables C<oe> and C<orderitems>.
+
+=head1 FUNCTIONS
+
+=over 4
+
+=item retrieve_simple PARAMS
+
+simple OE retrieval by id. does not look up customer, vendor, units or any other stuff. only oe and orderitems.
+
+  my $order = retrieve_simple(id => 2);
+
+  $order => {
+    %_OE_CONTENT,
+    orderitems => [
+      %_ORDERITEM_ROW_1,
+      %_ORDERITEM_ROW_2,
+      ...
+    ]
+  }
+
+=back
+
+=cut
index 31a8bd5..9906a72 100644 (file)
--- a/SL/PE.pm
+++ b/SL/PE.pm
@@ -96,7 +96,7 @@ sub save_partsgroup {
 
   if ($form->{id}) {
     $query = qq|UPDATE partsgroup SET partsgroup = ? WHERE id = ?|;
-               push(@values, $form->{id});
+    push(@values, $form->{id});
   } else {
     $query = qq|INSERT INTO partsgroup (partsgroup) VALUES (?)|;
   }
@@ -219,7 +219,7 @@ sub save_pricegroup {
 
   if ($form->{id}) {
     $query = qq|UPDATE pricegroup SET pricegroup = ? WHERE id = ? |;
-               push(@values, $form->{id});
+    push(@values, $form->{id});
   } else {
     $query = qq|INSERT INTO pricegroup (pricegroup) VALUES (?)|;
   }
index 80bd789..81637ca 100644 (file)
--- a/SL/RP.pm
+++ b/SL/RP.pm
@@ -215,8 +215,8 @@ sub get_accounts {
   }
 
   if ($form->{project_id}) {
-       # Diese Bedingung wird derzeit niemals wahr sein, da man in Bericht->Bilanz keine 
-       # Projekte auswählen kann
+    # Diese Bedingung wird derzeit niemals wahr sein, da man in Bericht->Bilanz keine
+    # Projekte auswählen kann
     $project = qq| AND (ac.project_id = | . conv_i($form->{project_id}, 'NULL') . qq|) |;
   }
 
@@ -278,7 +278,7 @@ sub get_accounts {
          GROUP BY c.accno, c.description, c.category |;
 
     if ($form->{project_id}) {
-               # s.o. keine Projektauswahl in Bilanz
+      # s.o. keine Projektauswahl in Bilanz
       $query .=
         qq|
          UNION ALL
@@ -328,8 +328,8 @@ sub get_accounts {
     }
 
   } else {                      # if ($form->{method} eq 'cash')
-       # ich sehe keinen sinn das nochmal explizit ohne conv_i aufzurufen
-       # bitte prüfen und löschen jan 15.11.2009
+    # ich sehe keinen sinn das nochmal explizit ohne conv_i aufzurufen
+    # bitte prüfen und löschen jan 15.11.2009
   #  if ($department_id) {
   #    $dpt_join = qq| JOIN dpt_trans t ON (t.trans_id = ac.trans_id) |;
   #    $dpt_where = qq| AND t.department_id = $department_id |;
@@ -347,7 +347,7 @@ sub get_accounts {
       GROUP BY c.accno, c.description, c.category |;
 
     if ($form->{project_id}) {
-               # s.o. keine Projektauswahl in Bilanz
+      # s.o. keine Projektauswahl in Bilanz
       $query .= qq|
       UNION ALL
 
@@ -579,10 +579,10 @@ sub get_accounts_g {
     }
 
   } else {                      # if ($form->{method} eq 'cash')
-               # s.o. jan 15.11.2009
-   # if ($department_id) {
-        #              ($dpt_join, $dpt_where) = sql_department($department_id);
-   # }
+    # s.o. jan 15.11.2009
+#    if ($department_id) {
+#      ($dpt_join, $dpt_where) = sql_department($department_id);
+#    }
 
     $query = qq|
         SELECT sum(ac.amount * chart_category_to_sgn(c.category)) AS amount, c.$category
@@ -1812,26 +1812,26 @@ sub ustva {
   &get_accounts_g($dbh, $last_period, $form->{fromdate}, $form->{todate}, $form, "pos_ustva");
 
   #   foreach $item (@categories_cent) {
-  #    if ($form->{$item}{"jetzt"} > 0) {
-  #            $form->{$item} = $form->{$item}{"jetzt"};
-  #            delete $form->{$item}{"jetzt"};
-  #    }
+  #     if ($form->{$item}{"jetzt"} > 0) {
+  #       $form->{$item} = $form->{$item}{"jetzt"};
+  #       delete $form->{$item}{"jetzt"};
+  #     }
   #   }
   #   foreach $item (@categories_euro) {
-  #    if ($form->{$item}{"jetzt"} > 0) {
-  #            $form->{$item} = $form->{$item}{"jetzt"};
-  #            delete $form->{$item}{"jetzt"};
-  #    }  foreach $item (@categories_cent) {
-  #    if ($form->{$item}{"jetzt"} > 0) {
-  #            $form->{$item} = $form->{$item}{"jetzt"};
-  #            delete $form->{$item}{"jetzt"};
-  #    }
+  #     if ($form->{$item}{"jetzt"} > 0) {
+  #       $form->{$item} = $form->{$item}{"jetzt"};
+  #       delete $form->{$item}{"jetzt"};
+  #     }  foreach $item (@categories_cent) {
+  #     if ($form->{$item}{"jetzt"} > 0) {
+  #       $form->{$item} = $form->{$item}{"jetzt"};
+  #       delete $form->{$item}{"jetzt"};
+  #     }
   #   }
   #   foreach $item (@categories_euro) {
-  #    if ($form->{$item}{"jetzt"} > 0) {
-  #            $form->{$item} = $form->{$item}{"jetzt"};
-  #            delete $form->{$item}{"jetzt"};
-  #    }
+  #     if ($form->{$item}{"jetzt"} > 0) {
+  #       $form->{$item} = $form->{$item}{"jetzt"};
+  #       delete $form->{$item}{"jetzt"};
+  #     }
   #   }
   #
   #    }
index ae61edd..54a0683 100644 (file)
@@ -241,8 +241,6 @@ SL::RecordLinks - Verlinkung von Lx-Office Objekten.
 
 =head1 DESCRIPTION
 
-=over 4
-
 Transitive RecordLinks mit get_links_via.
 
 get_links_via erwartet den zusätzlichen parameter via. via ist ein
@@ -279,6 +277,4 @@ finden, nicht aber:
 
   oe:11 -> ar:13 -> do:14
 
-=back
-
 =cut
index 717eae3..7ce3aeb 100644 (file)
@@ -111,7 +111,7 @@ sub get_all {
         # update counters and flags
         @$self{ qw( INDEX COUNT FIRST LAST ) } = ( $max, $max + 1, 0, 1 );
         $main::lxdebug->leave_sub();
-        return \@data;                                     ## RETURN ##
+        return \@data;                                      ## RETURN ##
     }
     else {
         $main::lxdebug->leave_sub();
index 88ed9ab..bfda202 100644 (file)
@@ -536,7 +536,7 @@ sub query_finanzamt {
   my @vars = (
     'FA_Land_Nr',             #  0
     'FA_BUFA_Nr',             #  1
-                              #'FA_Verteiler',                         #  2
+                              #'FA_Verteiler',                             #  2
     'FA_Name',                #  3
     'FA_Strasse',             #  4
     'FA_PLZ',                 #  5
@@ -549,20 +549,20 @@ sub query_finanzamt {
     'FA_BLZ_1',               # 12
     'FA_Kontonummer_1',       # 13
     'FA_Bankbezeichnung_1',   # 14
-                              #'FA_BankIBAN_1',                                # 15
-                              #'FA_BankBIC_1',                         # 16
-                              #'FA_BankInhaber_BUFA_Nr_1',                     # 17
+                              #'FA_BankIBAN_1',                            # 15
+                              #'FA_BankBIC_1',                             # 16
+                              #'FA_BankInhaber_BUFA_Nr_1',                 # 17
     'FA_BLZ_2',               # 18
     'FA_Kontonummer_2',       # 19
     'FA_Bankbezeichnung_2',   # 20
-                              #'FA_BankIBAN_2',                                # 21
-                              #'FA_BankBIC_2',                         # 22
-                              #'FA_BankInhaber_BUFA_Nr_2',                     # 23
+                              #'FA_BankIBAN_2',                            # 21
+                              #'FA_BankBIC_2',                             # 22
+                              #'FA_BankInhaber_BUFA_Nr_2',                 # 23
     'FA_Oeffnungszeiten',     # 24
     'FA_Email',               # 25
     'FA_Internet'             # 26
-                              #'FA_zustaendige_Hauptstelle_BUFA_Nr',           # 27
-                              #'FA_zustaendige_vorgesetzte_Finanzbehoerde'     # 28
+                              #'FA_zustaendige_Hauptstelle_BUFA_Nr',       # 27
+                              #'FA_zustaendige_vorgesetzte_Finanzbehoerde' # 28
   );
 
   my $field = join(', ', @vars);
index 1dab107..1972ce9 100644 (file)
--- a/SL/WH.pm
+++ b/SL/WH.pm
@@ -154,19 +154,19 @@ sub transfer_assembly {
 
 
   # my $query    = qq|select parts_id,qty from assembly where id = ?|;
-  my $query    = qq|select parts_id,qty from assembly inner join parts on assembly.parts_id = parts.id  where assembly.id = ? and (inventory_accno_id IS NOT NULL or parts.assembly = TRUE)|;
+  my $query = qq|select parts_id,qty from assembly inner join parts on assembly.parts_id = parts.id  where assembly.id = ? and (inventory_accno_id IS NOT NULL or parts.assembly = TRUE)|;
 
   my $sth_part_qty_assembly      = prepare_execute_query($form, $dbh, $query, $params{assembly_id});
 
   # Hier wird das prepared Statement für die Schleife über alle Lagerplätze vorbereitet
   my $transferPartSQL = qq|INSERT INTO inventory (parts_id, warehouse_id, bin_id, chargenumber, comment, employee_id, qty, trans_id, trans_type_id)
-                           VALUES (?, ?, ?, ?, ?,(SELECT id FROM employee WHERE login = ?), ?, nextval('id'),
-                                   (SELECT id FROM transfer_type WHERE direction = 'out' AND description = 'used'))|;
+                           VALUES (?, ?, ?, ?, ?,(SELECT id FROM employee WHERE login = ?), ?, nextval('id'),
+                           (SELECT id FROM transfer_type WHERE direction = 'out' AND description = 'used'))|;
   my $sthTransferPartSQL   = prepare_query($form, $dbh, $transferPartSQL);
 
-  my $kannNichtFertigen ="";   # der return-string für die fehlermeldung inkl. welche waren zum fertigen noch fehlen
+  my $kannNichtFertigen ="";  # der return-string für die fehlermeldung inkl. welche waren zum fertigen noch fehlen
 
-  while (my $hash_ref = $sth_part_qty_assembly->fetchrow_hashref()) {  # Schleife für $query=select parts_id,qty from assembly
+  while (my $hash_ref = $sth_part_qty_assembly->fetchrow_hashref()) {  # Schleife für $query=select parts_id,qty from assembly
 
     my $partsQTY = $hash_ref->{qty} * $params{qty}; # benötigte teile * anzahl erzeugnisse
     my $currentPart_ID = $hash_ref->{parts_id};
@@ -176,8 +176,8 @@ sub transfer_assembly {
 
     if ($partsQTY  > $max_parts){
       # Gibt es hier ein Problem mit nicht "escapten" Zeichen? 25.4.09 Antwort: Ja.  Aber erst wenn im Frontend die locales-Funktion aufgerufen wird
-      $kannNichtFertigen .= "Zum Fertigen fehlen:" . abs($partsQTY - $max_parts) . " Einheiten der Ware:" . get_part_description($self, parts_id => $currentPart_ID) . ", um das Erzeugnis herzustellen. <br>";        # Konnte die Menge nicht mit der aktuellen Anzahl der Waren fertigen
-      next;    # die weiteren Überprüfungen sind unnötig
+      $kannNichtFertigen .= "Zum Fertigen fehlen:" . abs($partsQTY - $max_parts) . " Einheiten der Ware:" . get_part_description($self, parts_id => $currentPart_ID) . ", um das Erzeugnis herzustellen. <br>"; # Konnte die Menge nicht mit der aktuellen Anzahl der Waren fertigen
+      next; # die weiteren Überprüfungen sind unnötig
     }
 
     # Eine kurze Vorabfrage, um den Lagerplatz und die Chargennummber zu bestimmen
@@ -187,31 +187,31 @@ sub transfer_assembly {
     # und lösen den Rest dann so wie bei xplace im Barcode-Programm
     # S.a. Kommentar im bin/mozilla-Code mb übernimmt und macht das in ordentlich
 
-    my $tempquery =    qq|SELECT SUM(qty), bin_id, chargenumber   FROM inventory  WHERE warehouse_id = ? AND parts_id = ?  GROUP BY bin_id, chargenumber having SUM(qty)>0|;
-    my $tempsth          =     prepare_execute_query($form, $dbh, $tempquery, $params{dst_warehouse_id}, $currentPart_ID);
+    my $tempquery = qq|SELECT SUM(qty), bin_id, chargenumber   FROM inventory  WHERE warehouse_id = ? AND parts_id = ?  GROUP BY bin_id, chargenumber having SUM(qty)>0|;
+    my $tempsth   = prepare_execute_query($form, $dbh, $tempquery, $params{dst_warehouse_id}, $currentPart_ID);
 
     # Alle Werte zu dem einzelnen Artikel, die wir später auslagern
     my $tmpPartsQTY = $partsQTY;
 
     while (my $temphash_ref = $tempsth->fetchrow_hashref()) {
-      my $temppart_bin_id      = $temphash_ref->{bin_id}; # kann man hier den quelllagerplatz beim verbauen angeben?
-      my $temppart_chargenumber        = $temphash_ref->{chargenumber};
-      my $temppart_qty = $temphash_ref->{sum};
-      if ($tmpPartsQTY > $temppart_qty) {      # wir haben noch mehr waren zum wegbuchen. Wir buchen den kompletten Lagerplatzbestand und zählen die Hilfsvariable runter
-       $tmpPartsQTY = $tmpPartsQTY - $temppart_qty;
-       $temppart_qty = $temppart_qty * -1;     # beim analyiseren des sql-trace, war dieser wert positiv, wenn * -1 als berechnung in der parameter-übergabe angegeben wird. Dieser Wert IST und BLEIBT positiv!! Hilfe. Liegt das daran, dass dieser Wert aus einem SQL-Statement stammt?
-       do_statement($form, $sthTransferPartSQL, $transferPartSQL, $currentPart_ID, $params{dst_warehouse_id}, $temppart_bin_id, $temppart_chargenumber, 'Verbraucht für ' . get_part_description($self, parts_id => $params{assembly_id}), $params{login}, $temppart_qty);
-
-       # hier ist noch ein fehler am besten mit definierten erzeugnissen debuggen 02/2009 jb
-       # idee: ausbuch algorithmus mit rekursion lösen und an- und abschaltbar machen
-       # das problem könnte sein, dass strict nicht an war und sth global eine andere zuweisung bekam
-       # auf jeden fall war der internal-server-error nach aktivierung von strict und warnings plus ein paar my-definitionen weg
-      }        else {  # okay, wir haben weniger oder gleich Waren die wir wegbuchen müssen, wir können also aufhören
-       $tmpPartsQTY *=-1;
+      my $temppart_bin_id       = $temphash_ref->{bin_id}; # kann man hier den quelllagerplatz beim verbauen angeben?
+      my $temppart_chargenumber = $temphash_ref->{chargenumber};
+      my $temppart_qty          = $temphash_ref->{sum};
+      if ($tmpPartsQTY > $temppart_qty) {  # wir haben noch mehr waren zum wegbuchen. Wir buchen den kompletten Lagerplatzbestand und zählen die Hilfsvariable runter
+        $tmpPartsQTY = $tmpPartsQTY - $temppart_qty;
+        $temppart_qty = $temppart_qty * -1; # beim analyiseren des sql-trace, war dieser wert positiv, wenn * -1 als berechnung in der parameter-übergabe angegeben wird. Dieser Wert IST und BLEIBT positiv!! Hilfe. Liegt das daran, dass dieser Wert aus einem SQL-Statement stammt?
+        do_statement($form, $sthTransferPartSQL, $transferPartSQL, $currentPart_ID, $params{dst_warehouse_id}, $temppart_bin_id, $temppart_chargenumber, 'Verbraucht für ' . get_part_description($self, parts_id => $params{assembly_id}), $params{login}, $temppart_qty);
+
+        # hier ist noch ein fehler am besten mit definierten erzeugnissen debuggen 02/2009 jb
+        # idee: ausbuch algorithmus mit rekursion lösen und an- und abschaltbar machen
+        # das problem könnte sein, dass strict nicht an war und sth global eine andere zuweisung bekam
+        # auf jeden fall war der internal-server-error nach aktivierung von strict und warnings plus ein paar my-definitionen weg
+      } else { # okay, wir haben weniger oder gleich Waren die wir wegbuchen müssen, wir können also aufhören
+        $tmpPartsQTY *=-1;
         do_statement($form, $sthTransferPartSQL, $transferPartSQL, $currentPart_ID, $params{dst_warehouse_id}, $temppart_bin_id, $temppart_chargenumber, 'Verbraucht für ' . get_part_description($self, parts_id => $params{assembly_id}), $params{login}, $tmpPartsQTY);
-        last;  # beendet die schleife (springt zum letzten element)
+        last; # beendet die schleife (springt zum letzten element)
       }
-    }  # ende while SELECT SUM(qty), bin_id, chargenumber   FROM inventory  WHERE warehouse_id
+    }  # ende while SELECT SUM(qty), bin_id, chargenumber   FROM inventory  WHERE warehouse_id
   } #ende while select parts_id,qty from assembly where id = ?
   if ($kannNichtFertigen) {
     return $kannNichtFertigen;
@@ -219,14 +219,14 @@ sub transfer_assembly {
 
   # soweit alles gut. Jetzt noch die wirkliche Lagerbewegung für das Erzeugnis ausführen ...
   my $transferAssemblySQL = qq|INSERT INTO inventory (parts_id, warehouse_id, bin_id, chargenumber, comment, employee_id, qty, trans_id, trans_type_id)
-                           VALUES (?, ?, ?, ?, ?, (SELECT id FROM employee WHERE login = ?), ?, nextval('id'),
-                                   (SELECT id FROM transfer_type WHERE direction = 'in' AND description = 'stock'))|;
+                               VALUES (?, ?, ?, ?, ?, (SELECT id FROM employee WHERE login = ?), ?, nextval('id'),
+                               (SELECT id FROM transfer_type WHERE direction = 'in' AND description = 'stock'))|;
   my $sthTransferAssemblySQL   = prepare_query($form, $dbh, $transferAssemblySQL);
   do_statement($form, $sthTransferAssemblySQL, $transferAssemblySQL, $params{assembly_id}, $params{dst_warehouse_id}, $params{dst_bin_id}, $params{chargenumber}, $params{comment}, $params{login}, $params{qty});
   $dbh->commit();
 
   $main::lxdebug->leave_sub();
-  return 1;    # Alles erfolgreich
+  return 1; # Alles erfolgreich
 }
 
 sub get_warehouse_journal {
@@ -489,7 +489,7 @@ SQL
 #  - partsid      - will return matches with this parts_id only
 #  - description  - will return only matches where the given string is a substring of the description
 #  - chargenumber - will return only matches where the given string is a substring of the chargenumber
-#  - ean         - will return only matches where the given string is a substring of the ean as stored in the table parts (article)
+#  - ean          - will return only matches where the given string is a substring of the ean as stored in the table parts (article)
 #  - charge_ids   - must be an arrayref. will return contents with these ids only
 #  - expires_in   - will only return matches that expire within the given number of days
 #                   will also add a column named 'has_expired' containing if the match has already expired or not
@@ -593,7 +593,7 @@ sub get_warehouse_report {
      "bindescription"       => "b.description",
      "binid"                => "b.id",
      "chargenumber"         => "i.chargenumber",
-     "ean"                 => "p.ean",
+     "ean"                  => "p.ean",
      "chargeid"             => "c.id",
      "warehousedescription" => "w.description",
      "partunit"             => "p.unit",
@@ -771,8 +771,8 @@ sub get_basic_bin_info {
   return map { $_->{bin_id} => $_ } @{ $result };
 }
 #
-# Eingabe:     Teilenummer, Lagernummer (warehouse)
-# Ausgabe:     Die maximale Anzahl der Teile in diesem Lager
+# Eingabe:  Teilenummer, Lagernummer (warehouse)
+# Ausgabe:  Die maximale Anzahl der Teile in diesem Lager
 #
 sub get_max_qty_parts {
 $main::lxdebug->enter_sub();
@@ -792,7 +792,7 @@ $main::lxdebug->enter_sub();
   my $sth_QTY      = prepare_execute_query($form, $dbh, $query, ,$params{parts_id}, $params{warehouse_id}); #info: aufruf an DBUtils.pm
 
   my $max_qty_parts = 0; #Initialisierung mit 0
-  while (my $ref = $sth_QTY->fetchrow_hashref()) {     # wir laufen über alle chargen und Lagerorte (s.a. SQL-Query oben)
+  while (my $ref = $sth_QTY->fetchrow_hashref()) {  # wir laufen über alle chargen und Lagerorte (s.a. SQL-Query oben)
     $max_qty_parts += $ref->{sum};
   }
 
@@ -802,8 +802,8 @@ $main::lxdebug->enter_sub();
 }
 
 #
-# Eingabe:     Teilenummer, Lagernummer (warehouse)
-# Ausgabe:     Die Beschreibung der Ware bzw. Erzeugnis
+# Eingabe:  Teilenummer, Lagernummer (warehouse)
+# Ausgabe:  Die Beschreibung der Ware bzw. Erzeugnis
 #
 sub get_part_description {
 $main::lxdebug->enter_sub();
index 27b18e4..3cb5ac3 100644 (file)
@@ -727,7 +727,7 @@ sub list_department {
     map { print "$column_data{$_}\n" } @column_index;
 
     print qq|
-       </tr>
+        </tr>
 |;
   }
 
@@ -929,7 +929,7 @@ sub list_lead {
   map { print "$column_header{$_}\n" } @column_index;
 
   print qq|
-        </tr>
+  </tr>
 |;
 
   my ($i, %column_data);
@@ -939,17 +939,17 @@ sub list_lead {
     $i %= 2;
 
     print qq|
-        <tr valign=top class=listrow$i>
+  <tr valign=top class=listrow$i>
 |;
 
-#      $lead = $ref->{lead};
+#    $lead = $ref->{lead};
 
     $column_data{description} = qq|<td><a href="am.pl?action=edit_lead&id=$ref->{id}&callback=$callback">$ref->{lead}</td>|;
 
     map { print "$column_data{$_}\n" } @column_index;
 
     print qq|
-       </tr>
+  </tr>
 |;
   }
 
@@ -1163,7 +1163,7 @@ sub list_business {
     map { print "$column_data{$_}\n" } @column_index;
 
     print qq|
-       </tr>
+        </tr>
 |;
   }
 
@@ -1417,7 +1417,7 @@ sub list_language {
     map { print "$column_data{$_}\n" } @column_index;
 
     print qq|
-       </tr>
+        </tr>
 |;
   }
 
@@ -1769,7 +1769,7 @@ sub list_buchungsgruppe {
     map { print "$column_data{$_}\n" } @column_index;
 
     print qq|
-       </tr>
+        </tr>
 |;
 
     $row++;
@@ -1853,10 +1853,10 @@ sub buchungsgruppe_header {
   if (!$main::eur) {
     $linkaccounts = qq|
                <tr>
-               <th align=right>| . $locale->text('Inventory') . qq|</th>
-               <td><select name=inventory_accno_id>$form->{selectIC}</select></td>
-               <input name=selectIC type=hidden value="$form->{selectIC}">
-             </tr>|;
+                <th align=right>| . $locale->text('Inventory') . qq|</th>
+                <td><select name=inventory_accno_id>$form->{selectIC}</select></td>
+                <input name=selectIC type=hidden value="$form->{selectIC}">
+              </tr>|;
   } else {
     $linkaccounts = qq|
                 <input type=hidden name=inventory_accno_id value=$form->{inventory_accno_id}>|;
@@ -1864,28 +1864,28 @@ sub buchungsgruppe_header {
 
 
   $linkaccounts .= qq|
-             <tr>
-               <th align=right>| . $locale->text('National Revenues') . qq|</th>
-               <td><select name=income_accno_id_0>$form->{selectIC_income}</select></td>
-             </tr>
-             <tr>
-               <th align=right>| . $locale->text('National Expenses') . qq|</th>
-               <td><select name=expense_accno_id_0>$form->{selectIC_expense}</select></td>
-             </tr>|;
+              <tr>
+                <th align=right>| . $locale->text('National Revenues') . qq|</th>
+                <td><select name=income_accno_id_0>$form->{selectIC_income}</select></td>
+              </tr>
+              <tr>
+                <th align=right>| . $locale->text('National Expenses') . qq|</th>
+                <td><select name=expense_accno_id_0>$form->{selectIC_expense}</select></td>
+              </tr>|;
   if ($form->{id}) {
     $form->{selectIC_income} =~ s/selected//g;
     $form->{selectIC_income} =~ s/ value=\Q$form->{income_accno_id_1}\E/  value=$form->{income_accno_id_1} selected/;
     $form->{selectIC_expense} =~ s/selected//g;
     $form->{selectIC_expense} =~ s/ value=\Q$form->{expense_accno_id_1}\E/  value=$form->{expense_accno_id_1} selected/;
   }
-  $linkaccounts .= qq|       <tr>
-               <th align=right>| . $locale->text('Revenues EU with UStId') . qq|</th>
-               <td><select name=income_accno_id_1>$form->{selectIC_income}</select></td>
-             </tr>
-             <tr>
-               <th align=right>| . $locale->text('Expenses EU with UStId') . qq|</th>
-               <td><select name=expense_accno_id_1>$form->{selectIC_expense}</select></td>
-             </tr>|;
+  $linkaccounts .= qq|              <tr>
+                <th align=right>| . $locale->text('Revenues EU with UStId') . qq|</th>
+                <td><select name=income_accno_id_1>$form->{selectIC_income}</select></td>
+              </tr>
+              <tr>
+                <th align=right>| . $locale->text('Expenses EU with UStId') . qq|</th>
+                <td><select name=expense_accno_id_1>$form->{selectIC_expense}</select></td>
+              </tr>|;
 
   if ($form->{id}) {
     $form->{selectIC_income} =~ s/selected//g;
@@ -1894,14 +1894,14 @@ sub buchungsgruppe_header {
     $form->{selectIC_expense} =~ s/ value=\Q$form->{expense_accno_id_2}\E/  value=$form->{expense_accno_id_2} selected/;
   }
 
-  $linkaccounts .= qq|       <tr>
-               <th align=right>| . $locale->text('Revenues EU without UStId') . qq|</th>
-               <td><select name=income_accno_id_2>$form->{selectIC_income}</select></td>
-             </tr>
-             <tr>
-               <th align=right>| . $locale->text('Expenses EU without UStId') . qq|</th>
-               <td><select name=expense_accno_id_2>$form->{selectIC_expense}</select></td>
-             </tr>|;
+  $linkaccounts .= qq|              <tr>
+                <th align=right>| . $locale->text('Revenues EU without UStId') . qq|</th>
+                <td><select name=income_accno_id_2>$form->{selectIC_income}</select></td>
+              </tr>
+              <tr>
+                <th align=right>| . $locale->text('Expenses EU without UStId') . qq|</th>
+                <td><select name=expense_accno_id_2>$form->{selectIC_expense}</select></td>
+              </tr>|;
 
   if ($form->{id}) {
     $form->{selectIC_income} =~ s/selected//g;
@@ -1910,14 +1910,14 @@ sub buchungsgruppe_header {
     $form->{selectIC_expense} =~ s/ value=\Q$form->{expense_accno_id_3}\E/  value=$form->{expense_accno_id_3} selected/;
   }
 
-  $linkaccounts .= qq|       <tr>
-               <th align=right>| . $locale->text('Foreign Revenues') . qq|</th>
-               <td><select name=income_accno_id_3>$form->{selectIC_income}</select></td>
-             </tr>
-             <tr>
-               <th align=right>| . $locale->text('Foreign Expenses') . qq|</th>
-               <td><select name=expense_accno_id_3>$form->{selectIC_expense}</select></td>
-             </tr>
+  $linkaccounts .= qq|              <tr>
+                <th align=right>| . $locale->text('Foreign Revenues') . qq|</th>
+                <td><select name=income_accno_id_3>$form->{selectIC_income}</select></td>
+              </tr>
+              <tr>
+                <th align=right>| . $locale->text('Foreign Expenses') . qq|</th>
+                <td><select name=expense_accno_id_3>$form->{selectIC_expense}</select></td>
+              </tr>
 |;
 
 
@@ -2106,7 +2106,7 @@ sub list_printer {
     map { print "$column_data{$_}\n" } @column_index;
 
     print qq|
-       </tr>
+        </tr>
 |;
   }
 
@@ -2393,7 +2393,7 @@ sub list_payment {
     map { print "$column_data{$_}\n" } @column_index;
 
     print qq|
-       </tr>
+       </tr>
 |;
     $row++;
   }
@@ -2787,10 +2787,10 @@ sub audit_control {
   <tr>
     <td>
       <table>
-       <tr>
-         <th>| . $locale->text('Close Books up to') . qq|</th>
-         <td><input name=closedto size=11 title="$myconfig{dateformat}" value=$form->{closedto}></td>
-       </tr>
+        <tr>
+          <th>| . $locale->text('Close Books up to') . qq|</th>
+          <td><input name=closedto size=11 title="$myconfig{dateformat}" value=$form->{closedto}></td>
+        </tr>
       </table>
     </td>
   </tr>
index e593083..bac1b81 100644 (file)
@@ -265,13 +265,13 @@ sub form_header {
     if ($form->{forex}) {
       $exchangerate .= qq|
             <tr>
-             <th align=right>| . $locale->text('Exchangerate') . qq|</th>
+              <th align=right>| . $locale->text('Exchangerate') . qq|</th>
               <td><input type=hidden name=exchangerate value=$form->{exchangerate}>$form->{exchangerate}</td>
            </tr>
 |;
     } else {
       $exchangerate .= qq|
-            <th align=right>| . $locale->text('Exchangerate') . qq|</th>
+             <th align=right>| . $locale->text('Exchangerate') . qq|</th>
              <td><input name=exchangerate size=10 value=$form->{exchangerate}></td>
 |;
     }
@@ -296,11 +296,11 @@ sub form_header {
 
   my $department = qq|
               <tr>
-               <th align="right" nowrap>| . $locale->text('Department') . qq|</th>
-               <td colspan=3><select name=department>$form->{selectdepartment}</select>
-               <input type=hidden name=selectdepartment value="$form->{selectdepartment}">
-               </td>
-             </tr>
+                <th align="right" nowrap>| . $locale->text('Department') . qq|</th>
+                <td colspan=3><select name=department>$form->{selectdepartment}</select>
+                <input type=hidden name=selectdepartment value="$form->{selectdepartment}">
+                </td>
+              </tr>
 | if $form->{selectdepartment};
 
   my $n = ($form->{creditremaining} =~ /-/) ? "0" : "1";
@@ -440,64 +440,64 @@ sub form_header {
     <td>
       <table width=100%>
         <tr valign=top>
-         <td>
-           <table>
-             <tr>
-               <th align=right nowrap>| . $locale->text('Vendor') . qq|</th>
-               <td colspan=3>$vendor <input type="button" value="D" onclick="show_vc_details('vendor')"></td>
-               <input type=hidden name=selectvendor value="| . H($form->{selectvendor}) . qq|">
-               <input type=hidden name=oldvendor value="| . H($form->{oldvendor}) . qq|">
-               <input type=hidden name=vendor_id value="| . H($form->{vendor_id}) . qq|">
-               <input type=hidden name=terms value="| . H($form->{terms}) . qq|">
-             </tr>
-             <tr>
-               <td></td>
-               <td colspan=3>
-                 <table width=100%>
-                   <tr>
-                     <th align=left nowrap>| . $locale->text('Credit Limit') . qq|</th>
-                     <td>$form->{creditlimit}</td>
-                     <th align=left nowrap>| . $locale->text('Remaining') . qq|</th>
-                     <td class="plus$n">$form->{creditremaining}</td>
-                     <input type=hidden name=creditlimit value=$form->{creditlimit}>
-                     <input type=hidden name=creditremaining value=$form->{creditremaining}>
-                   </tr>
-                 </table>
-               </td>
-             <tr>
-               <th align=right nowrap>| . $locale->text('Currency') . qq|</th>
-               <td><select name=currency>$form->{selectcurrency}</select></td>
-               <input type=hidden name=selectcurrency value="$form->{selectcurrency}">
-               <input type=hidden name=defaultcurrency value=$form->{defaultcurrency}>
-               <input type=hidden name=fxgain_accno value=$form->{fxgain_accno}>
-               <input type=hidden name=fxloss_accno value=$form->{fxloss_accno}>
-               $exchangerate
-             </tr>
-             $department
-             $taxincluded
-           </table>
-         </td>
-         <td align=right>
-           <table>
-             <tr>
-               <th align=right nowrap>| . $locale->text('Invoice Number') . qq|</th>
-               <td><input name=invnumber size=11 value="$form->{invnumber}" $readonly></td>
-             </tr>
-             <tr>
-               <th align=right nowrap>| . $locale->text('Order Number') . qq|</th>
-               <td><input name=ordnumber size=11 value="$form->{ordnumber}" $readonly></td>
-             </tr>
-             <tr>
-               <th align=right nowrap>| . $locale->text('Invoice Date') . qq|</th>
+          <td>
+            <table>
+              <tr>
+                <th align=right nowrap>| . $locale->text('Vendor') . qq|</th>
+                <td colspan=3>$vendor <input type="button" value="D" onclick="show_vc_details('vendor')"></td>
+                <input type=hidden name=selectvendor value="| . H($form->{selectvendor}) . qq|">
+                <input type=hidden name=oldvendor value="| . H($form->{oldvendor}) . qq|">
+                <input type=hidden name=vendor_id value="| . H($form->{vendor_id}) . qq|">
+                <input type=hidden name=terms value="| . H($form->{terms}) . qq|">
+              </tr>
+              <tr>
+                <td></td>
+                <td colspan=3>
+                  <table width=100%>
+                    <tr>
+                      <th align=left nowrap>| . $locale->text('Credit Limit') . qq|</th>
+                      <td>$form->{creditlimit}</td>
+                      <th align=left nowrap>| . $locale->text('Remaining') . qq|</th>
+                      <td class="plus$n">$form->{creditremaining}</td>
+                      <input type=hidden name=creditlimit value=$form->{creditlimit}>
+                      <input type=hidden name=creditremaining value=$form->{creditremaining}>
+                    </tr>
+                  </table>
+                </td>
+              <tr>
+                <th align=right nowrap>| . $locale->text('Currency') . qq|</th>
+                <td><select name=currency>$form->{selectcurrency}</select></td>
+                <input type=hidden name=selectcurrency value="$form->{selectcurrency}">
+                <input type=hidden name=defaultcurrency value=$form->{defaultcurrency}>
+                <input type=hidden name=fxgain_accno value=$form->{fxgain_accno}>
+                <input type=hidden name=fxloss_accno value=$form->{fxloss_accno}>
+                $exchangerate
+              </tr>
+              $department
+              $taxincluded
+            </table>
+          </td>
+          <td align=right>
+            <table>
+              <tr>
+                <th align=right nowrap>| . $locale->text('Invoice Number') . qq|</th>
+                <td><input name=invnumber size=11 value="$form->{invnumber}" $readonly></td>
+              </tr>
+              <tr>
+                <th align=right nowrap>| . $locale->text('Order Number') . qq|</th>
+                <td><input name=ordnumber size=11 value="$form->{ordnumber}" $readonly></td>
+              </tr>
+              <tr>
+                <th align=right nowrap>| . $locale->text('Invoice Date') . qq|</th>
                 $button1
-             </tr>
-             <tr>
-               <th align=right nowrap>| . $locale->text('Due Date') . qq|</th>
+              </tr>
+              <tr>
+                <th align=right nowrap>| . $locale->text('Due Date') . qq|</th>
                 $button2
-             </tr>
-           </table>
-         </td>
-       </tr>
+              </tr>
+            </table>
+          </td>
+        </tr>
       </table>
     </td>
   </tr>
@@ -507,20 +507,15 @@ sub form_header {
 $jsscript
   <input type=hidden name=rowcount value=$form->{rowcount}>
   <tr>
-      <td>
-          <table width=100%>
-          <tr class=listheading>
-         <th class=listheading style="width:15%">|
-    . $locale->text('Account') . qq|</th>
-         <th class=listheading style="width:10%">|
-    . $locale->text('Amount') . qq|</th>
-          <th class=listheading style="width:10%">|
-    . $locale->text('Tax') . qq|</th>
-          <th class=listheading style="width:10%">|
-    . $locale->text('Taxkey') . qq|</th>
-          <th class=listheading style="width:10%">|
-    . $locale->text('Project') . qq|</th>
-       </tr>
+    <td>
+      <table width=100%>
+        <tr class=listheading>
+          <th class=listheading style="width:15%">| . $locale->text('Account') . qq|</th>
+          <th class=listheading style="width:10%">| . $locale->text('Amount') . qq|</th>
+          <th class=listheading style="width:10%">| . $locale->text('Tax') . qq|</th>
+          <th class=listheading style="width:10%">| . $locale->text('Taxkey') . qq|</th>
+          <th class=listheading style="width:10%">| . $locale->text('Project') . qq|</th>
+        </tr>
 |;
 
   my $amount  = $locale->text('Amount');
@@ -578,13 +573,13 @@ $jsscript
                            '-default' => $form->{"project_id_$i"} ));
 
     print qq|
-       <tr>
+        <tr>
           <td>$selectAP_amount</td>
           <td><input name="amount_$i" size=10 value=$form->{"amount_$i"}></td>
           <td><input type="hidden" name="tax_$i" value="$form->{"tax_$i"}">$form->{"tax_$i"}</td>
           $tax
           <td>$projectnumber</td>
-       </tr>
+        </tr>
 |;
     $amount  = "";
     $project = "";
@@ -610,37 +605,37 @@ $jsscript
           </td>
         </tr>
         <tr>
-         <td>${APselected}</td>
-         <th align=left>$form->{invtotal}</th>
+          <td>${APselected}</td>
+          <th align=left>$form->{invtotal}</th>
 
-         <input type=hidden name=oldinvtotal value=$form->{oldinvtotal}>
-         <input type=hidden name=oldtotalpaid value=$form->{oldtotalpaid}>
+          <input type=hidden name=oldinvtotal value=$form->{oldinvtotal}>
+          <input type=hidden name=oldtotalpaid value=$form->{oldtotalpaid}>
 
-         <input type=hidden name=taxaccounts value="$form->{taxaccounts}">
+          <input type=hidden name=taxaccounts value="$form->{taxaccounts}">
 
-         <td colspan=4></td>
+          <td colspan=4></td>
 
 
         </tr>
-        </table>
-        </td>
+      </table>
+     </td>
     </tr>
     <tr>
       <td>
         <table width=100%>
         <tr>
-         <th align=left width=1%>| . $locale->text('Notes') . qq|</th>
-         <td align=left>$notes</td>
-       </tr>
+          <th align=left width=1%>| . $locale->text('Notes') . qq|</th>
+          <td align=left>$notes</td>
+        </tr>
       </table>
     </td>
   </tr>
   <tr>
     <td>
       <table width=100%>
-       <tr class=listheading>
-         <th class=listheading colspan=7>| . $locale->text('Payments') . qq|</th>
-       </tr>
+        <tr class=listheading>
+          <th class=listheading colspan=7>| . $locale->text('Payments') . qq|</th>
+        </tr>
 |;
 
   my @column_index;
@@ -1105,8 +1100,8 @@ sub post_as_new {
   # saving the history
   if(!exists $form->{addition} && $form->{id} ne "") {
     $form->{snumbers} = qq|invnumber_| . $form->{invnumber};
-       $form->{addition} = "POSTED AS NEW";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "POSTED AS NEW";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
   &post;
@@ -1188,7 +1183,7 @@ sub yes {
     # saving the history
     if(!exists $form->{addition}) {
       $form->{snumbers} = qq|invnumber_| . $form->{invnumber};
-         $form->{addition} = "DELETED";
+      $form->{addition} = "DELETED";
       $form->save_history($form->dbconnect(\%myconfig));
     }
     # /saving the history
@@ -1202,234 +1197,29 @@ sub yes {
 sub search {
   $main::lxdebug->enter_sub();
 
+  $main::auth->assert('general_ledger | invoice_edit');
+
   my $form     = $main::form;
   my %myconfig = %main::myconfig;
   my $locale   = $main::locale;
-  my $cgi      = $main::cgi;
-
-  $main::auth->assert('general_ledger | vendor_invoice_edit');
 
-  # setup vendor selection
+  # setup customer selection
   $form->all_vc(\%myconfig, "vendor", "AP");
 
-  my $vendor;
-  if (@{ $form->{all_vendor} || [] }) {
-    map { $vendor .= "<option>$_->{name}--$_->{id}\n" }
-      @{ $form->{all_vendor} };
-    $vendor = qq|<select name=vendor><option>\n$vendor\n</select>|;
-  } else {
-    $vendor = qq|<input name=vendor size=35>|;
-  }
-
-  # departments
-  if (@{ $form->{all_departments} || [] }) {
-    $form->{selectdepartment} = "<option>\n";
-
-    map {
-      $form->{selectdepartment} .=
-        "<option>$_->{description}--$_->{id}\n"
-    } (@{ $form->{all_departments} || [] });
-  }
-
-  my $department = qq|
-       <tr>
-         <th align=right nowrap>| . $locale->text('Department') . qq|</th>
-         <td colspan=3><select name=department>$form->{selectdepartment}</select></td>
-       </tr>
-| if $form->{selectdepartment};
-
-  $form->{title} = $locale->text('AP Transactions');
-
-  # use JavaScript Calendar or not
+  $form->{title}    = $locale->text('AP Transactions');
+  $form->{fokus}    = "search.vendor";
   $form->{jsscript} = 1;
-  my $jsscript = "";
-  my ($button1, $button2);
-  if ($form->{jsscript}) {
 
-    # with JavaScript Calendar
-    $button1 = qq|
-       <td><input name=transdatefrom id=transdatefrom size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\">
-       <input type=button name=transdatefrom id="trigger1" value=|
-      . $locale->text('button') . qq|></td>
-      |;
-    $button2 = qq|
-       <td><input name=transdateto id=transdateto size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\">
-       <input type=button name=transdateto name=transdateto id="trigger2" value=|
-      . $locale->text('button') . qq|></td>
-     |;
+  $form->get_lists("projects"     => { "key" => "ALL_PROJECTS", "all" => 1 },
+                   "departments"  => "ALL_DEPARTMENTS",
+                   "vendors"      => "ALL_VC");
 
-    #write Trigger
-    $jsscript =
-      Form->write_trigger(\%myconfig, "2", "transdatefrom", "BR", "trigger1",
-                          "transdateto", "BL", "trigger2");
-  } else {
+  # constants and subs for template
+  $form->{jsscript}  = 1;
+  $form->{vc_keys}   = sub { "$_[0]->{name}--$_[0]->{id}" };
 
-    # without JavaScript Calendar
-    $button1 = qq|
-                              <td><input name=transdatefrom id=transdatefrom size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\"></td>|;
-    $button2 = qq|
-                              <td><input name=transdateto id=transdateto size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\"></td>|;
-  }
-
-  $form->get_lists("projects" => { "key" => "ALL_PROJECTS",
-                                   "all" => 1 });
-
-  my %labels = ();
-  my @values = ("");
-  foreach my $item (@{ $form->{"ALL_PROJECTS"} }) {
-    push(@values, $item->{"id"});
-    $labels{$item->{"id"}} = $item->{"projectnumber"};
-  }
-  my $projectnumber =
-    NTI($cgi->popup_menu('-name' => 'project_id', '-values' => \@values,
-                         '-labels' => \%labels));
-  $form->{javascript} .= qq|<script type="text/javascript" src="js/common.js"></script>|;
   $form->header;
-  my $onload = qq|;setupDateFormat('|. $myconfig{dateformat} .qq|', '|. $locale->text("Falsches Datumsformat!") .qq|')|;
-  $onload .= qq|;setupPoints('|. $myconfig{numberformat} .qq|', '|. $locale->text("wrongformat") .qq|')|;
-  print qq|
-<body onLoad="$onload">
-
-<form method=post action=$form->{script}>
-
-<table width=100%>
-  <tr>
-    <th class=listtop>$form->{title}</th>
-  </tr>
-  <tr height="5"></tr>
-  <tr>
-    <td>
-      <table>
-       <tr>
-         <th align=right>| . $locale->text('Vendor') . qq|</th>
-         <td colspan=3>$vendor</td>
-       </tr>
-       $department
-       <tr>
-         <th align=right nowrap>| . $locale->text('Invoice Number') . qq|</th>
-         <td colspan=3><input name=invnumber size=20></td>
-       </tr>
-       <tr>
-         <th align=right nowrap>| . $locale->text('Order Number') . qq|</th>
-         <td colspan=3><input name=ordnumber size=20></td>
-       </tr>
-       <tr>
-         <th align=right nowrap>| . $locale->text('Notes') . qq|</th>
-         <td colspan=3><input name=notes size=40></td>
-       </tr>
-        <tr>
-          <th align="right">| . $locale->text("Project Number") . qq|</th>
-          <td colspan="3">$projectnumber</td>
-        </tr>
-       <tr>
-         <th align=right nowrap>| . $locale->text('From') . qq|</th>
-         $button1
-         <th align=right>| . $locale->text('Bis') . qq|</th>
-          $button2
-       </tr>
-        <input type=hidden name=sort value=transdate>
-      </table>
-    </td>
-  </tr>
-  <tr>
-    <td>
-      <table>
-       <tr>
-         <th align=right nowrap>| . $locale->text('Include in Report') . qq|</th>
-         <td>
-           <table width=100%>
-             <tr>
-               <td align=right><input name=open class=checkbox type=checkbox value=Y checked></td>
-               <td nowrap>| . $locale->text('Open') . qq|</td>
-               <td align=right><input name=closed class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Closed') . qq|</td>
-             </tr>
-             <tr>
-               <td align=right><input name="l_id" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('ID') . qq|</td>
-               <td align=right><input name="l_invnumber" class=checkbox type=checkbox value=Y checked></td>
-               <td nowrap>| . $locale->text('Invoice Number') . qq|</td>
-               <td align=right><input name="l_ordnumber" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Order Number') . qq|</td>
-             </tr>
-             <tr>
-               <td align=right><input name="l_name" class=checkbox type=checkbox value=Y checked></td>
-               <td nowrap>| . $locale->text('Vendor') . qq|</td>
-               <td align=right><input name="l_transdate" class=checkbox type=checkbox value=Y checked></td>
-               <td nowrap>| . $locale->text('Invoice Date') . qq|</td>
-               <td align=right><input name="l_netamount" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Amount') . qq|</td>
-             </tr>
-             <tr>
-               <td align=right><input name="l_tax" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Tax') . qq|</td>
-               <td align=right><input name="l_amount" class=checkbox type=checkbox value=Y checked></td>
-               <td nowrap>| . $locale->text('Total') . qq|</td>
-               <td align=right><input name="l_datepaid" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Date Paid') . qq|</td>
-             </tr>
-             <tr>
-               <td align=right><input name="l_paid" class=checkbox type=checkbox value=Y checked></td>
-               <td nowrap>| . $locale->text('Paid') . qq|</td>
-               <td align=right><input name="l_duedate" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Due Date') . qq|</td>
-               <td align=right><input name="l_due" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Amount Due') . qq|</td>
-             </tr>
-             <tr>
-               <td align=right><input name="l_notes" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Notes') . qq|</td>
-               <td align=right><input name="l_employee" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Employee') . qq|</td>
-             </tr>
-             <tr>
-               <td align=right><input name="l_subtotal" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Subtotal') . qq|</td>
-               <td align=right><input name="l_globalprojectnumber" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Project Number') . qq|</td>
-             </tr>
-          <tr>
-        <td colspan=4 align=left><b>| . $locale->text('Vendor') . qq| </td>
-          </tr>
-          <tr>
-               <td align=right><input name="l_vendornumber" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Vendor Number') . qq|</td>
-               <td align=right><input name="l_country" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Country') . qq|</td>
-               <td align=right><input name="l_ustid" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('USt-IdNr.') . qq|</td>
-               <td align=right><input name="l_taxzone" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Steuersatz') . qq|</td>
-          </tr>
-          <tr>
-               <td align=right><input name="l_payment_terms" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Payment Terms') . qq|</td>
-               <td align=right><input name="l_charts" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Buchungskonto') . qq|</td>
-          </tr>
-           </table>
-         </td>
-       </tr>
-      </table>
-    </td>
-  </tr>
-  <tr>
-    <td><hr size=3 noshade></td>
-  </tr>
-</table>
-
-$jsscript
-
-<br>
-<input type=hidden name=nextsub value=$form->{nextsub}>
-
-<input class=submit type=submit name=action value="|
-    . $locale->text('Continue') . qq|">
-</form>
-
-</body>
-</html>
-|;
+  print $form->parse_html_template('ap/search', { %myconfig });
 
   $main::lxdebug->leave_sub();
 }
index 2094ead..a740728 100644 (file)
@@ -91,8 +91,8 @@ sub add {
   # saving the history
   if(!exists $form->{addition} && ($form->{id} ne "")) {
     $form->{snumbers} = qq|invnumber_| . $form->{invnumber};
-       $form->{addition} = "ADDED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "ADDED";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
 
@@ -293,8 +293,8 @@ sub form_header {
   if ($form->{currency} ne $form->{defaultcurrency}) {
     if ($form->{forex}) {
       $exchangerate .= qq|
-       <th align=right>| . $locale->text('Exchangerate') . qq|</th>
-       <td><input type=hidden name=exchangerate value=$form->{exchangerate}>$form->{exchangerate}</td>
+        <th align=right>| . $locale->text('Exchangerate') . qq|</th>
+        <td><input type=hidden name=exchangerate value=$form->{exchangerate}>$form->{exchangerate}</td>
 |;
     } else {
       $exchangerate .= qq|
@@ -305,10 +305,10 @@ sub form_header {
   }
 
   $taxincluded = qq|
-             <tr>
-               <td align=right><input name=taxincluded class=checkbox type=checkbox value=1 $form->{taxincluded}></td>
-               <th align=left nowrap>| . $locale->text('Tax Included') . qq|</th>
-             </tr>
+              <tr>
+                <td align=right><input name=taxincluded class=checkbox type=checkbox value=1 $form->{taxincluded}></td>
+                <th align=left nowrap>| . $locale->text('Tax Included') . qq|</th>
+              </tr>
 |;
 
   if (($rows = $form->numtextrows($form->{notes}, 50)) < 2) {
@@ -318,12 +318,12 @@ sub form_header {
     qq|<textarea name=notes rows=$rows cols=50 wrap=soft>$form->{notes}</textarea>|;
 
   $department = qq|
-             <tr>
-               <th align="right" nowrap>| . $locale->text('Department') . qq|</th>
-               <td colspan=3><select name=department>$form->{selectdepartment}</select>
-               <input type=hidden name=selectdepartment value="$form->{selectdepartment}">
-               </td>
-             </tr>
+              <tr>
+                <th align="right" nowrap>| . $locale->text('Department') . qq|</th>
+                <td colspan=3><select name=department>$form->{selectdepartment}</select>
+                <input type=hidden name=selectdepartment value="$form->{selectdepartment}">
+                </td>
+              </tr>
 | if $form->{selectdepartment};
 
   my $n = ($form->{creditremaining} =~ /-/) ? "0" : "1";
@@ -338,11 +338,11 @@ sub form_header {
 
   if ($form->{selectemployee}) {
     $employee = qq|
-             <tr>
-               <th align=right nowrap>| . $locale->text('Salesperson') . qq|</th>
-               <td  colspan=2><select name=employee>$form->{selectemployee}</select></td>
-               <input type=hidden name=selectemployee value="$form->{selectemployee}">
-             </tr>
+              <tr>
+                <th align=right nowrap>| . $locale->text('Salesperson') . qq|</th>
+                <td  colspan=2><select name=employee>$form->{selectemployee}</select></td>
+                <input type=hidden name=selectemployee value="$form->{selectemployee}">
+              </tr>
 |;
   }
 
@@ -478,66 +478,66 @@ sub form_header {
     <td>
       <table width=100%>
         <tr valign=top>
-         <td>
-           <table>
-             <tr>
-               <th align="right" nowrap>| . $locale->text('Customer') . qq|</th>
-               <td colspan=3>$customer <input type="button" value="| . $locale->text('Details (one letter abbreviation)') . qq|" onclick="show_vc_details('customer')"></td>
-               <input type=hidden name=selectcustomer value="$form->{selectcustomer}">
-               <input type=hidden name=oldcustomer value="$form->{oldcustomer}">
-               <input type=hidden name=customer_id value="$form->{customer_id}">
-               <input type=hidden name=terms value=$form->{terms}>
-             </tr>
-             <tr>
-               <td></td>
-               <td colspan=3>
-                 <table width=100%>
-                   <tr>
-                     <th align=left nowrap>| . $locale->text('Credit Limit') . qq|</th>
-                     <td>$form->{creditlimit}</td>
-                     <th align=left nowrap>| . $locale->text('Remaining') . qq|</th>
-                     <td class="plus$n">$form->{creditremaining}</td>
-                     <input type=hidden name=creditlimit value=$form->{creditlimit}>
-                     <input type=hidden name=creditremaining value=$form->{creditremaining}>
-                   </tr>
-                 </table>
-               </td>
-             </tr>
-             <tr>
-               <th align=right>| . $locale->text('Currency') . qq|</th>
-               <td><select name=currency>$form->{selectcurrency}</select></td>
-               <input type=hidden name=selectcurrency value="$form->{selectcurrency}">
-               <input type=hidden name=defaultcurrency value=$form->{defaultcurrency}>
-               <input type=hidden name=fxgain_accno value=$form->{fxgain_accno}>
-               <input type=hidden name=fxloss_accno value=$form->{fxloss_accno}>
-               $exchangerate
-             </tr>
-             $department
-             $taxincluded
-           </table>
-         </td>
-         <td align=right>
-           <table>
-             $employee
-             <tr>
-               <th align=right nowrap>| . $locale->text('Invoice Number') . qq|</th>
-               <td><input name=invnumber size=11 value="$form->{invnumber}"></td>
-             </tr>
-             <tr>
-               <th align=right nowrap>| . $locale->text('Order Number') . qq|</th>
-               <td><input name=ordnumber size=11 value="$form->{ordnumber}"></td>
-             </tr>
-             <tr>
-               <th align=right nowrap>| . $locale->text('Invoice Date') . qq|</th>
+          <td>
+            <table>
+              <tr>
+                <th align="right" nowrap>| . $locale->text('Customer') . qq|</th>
+                <td colspan=3>$customer <input type="button" value="| . $locale->text('Details (one letter abbreviation)') . qq|" onclick="show_vc_details('customer')"></td>
+                <input type=hidden name=selectcustomer value="$form->{selectcustomer}">
+                <input type=hidden name=oldcustomer value="$form->{oldcustomer}">
+                <input type=hidden name=customer_id value="$form->{customer_id}">
+                <input type=hidden name=terms value=$form->{terms}>
+              </tr>
+              <tr>
+                <td></td>
+                <td colspan=3>
+                  <table width=100%>
+                    <tr>
+                      <th align=left nowrap>| . $locale->text('Credit Limit') . qq|</th>
+                      <td>$form->{creditlimit}</td>
+                      <th align=left nowrap>| . $locale->text('Remaining') . qq|</th>
+                      <td class="plus$n">$form->{creditremaining}</td>
+                      <input type=hidden name=creditlimit value=$form->{creditlimit}>
+                      <input type=hidden name=creditremaining value=$form->{creditremaining}>
+                    </tr>
+                  </table>
+                </td>
+              </tr>
+              <tr>
+                <th align=right>| . $locale->text('Currency') . qq|</th>
+                <td><select name=currency>$form->{selectcurrency}</select></td>
+                <input type=hidden name=selectcurrency value="$form->{selectcurrency}">
+                <input type=hidden name=defaultcurrency value=$form->{defaultcurrency}>
+                <input type=hidden name=fxgain_accno value=$form->{fxgain_accno}>
+                <input type=hidden name=fxloss_accno value=$form->{fxloss_accno}>
+                $exchangerate
+              </tr>
+              $department
+              $taxincluded
+            </table>
+          </td>
+          <td align=right>
+            <table>
+              $employee
+              <tr>
+                <th align=right nowrap>| . $locale->text('Invoice Number') . qq|</th>
+                <td><input name=invnumber size=11 value="$form->{invnumber}"></td>
+              </tr>
+              <tr>
+                <th align=right nowrap>| . $locale->text('Order Number') . qq|</th>
+                <td><input name=ordnumber size=11 value="$form->{ordnumber}"></td>
+              </tr>
+              <tr>
+                <th align=right nowrap>| . $locale->text('Invoice Date') . qq|</th>
                 $button1
-             </tr>
-             <tr>
-               <th align=right nowrap>| . $locale->text('Due Date') . qq|</th>
+              </tr>
+              <tr>
+                <th align=right nowrap>| . $locale->text('Due Date') . qq|</th>
                 $button2
-             </tr>
+              </tr>
      </table>
-         </td>
-       </tr>
+          </td>
+        </tr>
       </table>
     </td>
   </tr>
@@ -547,10 +547,10 @@ $jsscript
   <tr>
       <td>
           <table width=100%>
-          <tr class=listheading>
-         <th class=listheading style="width:15%">|
+           <tr class=listheading>
+          <th class=listheading style="width:15%">|
     . $locale->text('Account') . qq|</th>
-         <th class=listheading style="width:10%">|
+          <th class=listheading style="width:10%">|
     . $locale->text('Amount') . qq|</th>
           <th class=listheading style="width:10%">|
     . $locale->text('Tax') . qq|</th>
@@ -558,7 +558,7 @@ $jsscript
     . $locale->text('Taxkey') . qq|</th>
           <th class=listheading style="width:10%">|
     . $locale->text('Project') . qq|</th>
-       </tr>
+        </tr>
 |;
 
   $amount  = $locale->text('Amount');
@@ -622,13 +622,13 @@ $jsscript
                            '-default' => $form->{"project_id_$i"} ));
 
     print qq|
-       <tr>
+        <tr>
           <td>$selectAR_amount</td>
           <td><input name="amount_$i" size=10 value=$form->{"amount_$i"}></td>
           <td><input type="hidden" name="tax_$i" value="$form->{"tax_$i"}">$form->{"tax_$i"}</td>
           $tax
           <td>$projectnumber</td>
-       </tr>
+        </tr>
 |;
     $amount  = "";
     $project = "";
@@ -650,15 +650,15 @@ $jsscript
           </td>
         </tr>
         <tr>
-         <td>${ARselected}</td>
-         <th align=left>$form->{invtotal}</th>
+          <td>${ARselected}</td>
+          <th align=left>$form->{invtotal}</th>
 
-         <input type=hidden name=oldinvtotal value=$form->{oldinvtotal}>
-         <input type=hidden name=oldtotalpaid value=$form->{oldtotalpaid}>
+          <input type=hidden name=oldinvtotal value=$form->{oldinvtotal}>
+          <input type=hidden name=oldtotalpaid value=$form->{oldtotalpaid}>
 
-         <input type=hidden name=taxaccounts value="$form->{taxaccounts}">
+          <input type=hidden name=taxaccounts value="$form->{taxaccounts}">
 
-         <td colspan=4></td>
+          <td colspan=4></td>
 
 
         </tr>
@@ -669,19 +669,19 @@ $jsscript
       <td>
         <table width=100%>
         <tr>
-         <th align=left width=1%>| . $locale->text('Notes') . qq|</th>
-         <td align=left>$notes</td>
-       </tr>
+          <th align=left width=1%>| . $locale->text('Notes') . qq|</th>
+          <td align=left>$notes</td>
+        </tr>
       </table>
     </td>
   </tr>
   <tr>
     <td>
       <table width=100%>
-       <tr class=listheading>
-         <th colspan=7 class=listheading>|
+        <tr class=listheading>
+          <th colspan=7 class=listheading>|
     . $locale->text('Incoming Payments') . qq|</th>
-       </tr>
+        </tr>
 |;
 
   if ($form->{currency} eq $form->{defaultcurrency}) {
@@ -1159,8 +1159,8 @@ sub post_as_new {
   # saving the history
   if(!exists $form->{addition} && $form->{id} ne "") {
     $form->{snumbers} = qq|invnumber_| . $form->{invnumber};
-       $form->{addition} = "POSTED AS NEW";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "POSTED AS NEW";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
   &post;
@@ -1242,8 +1242,8 @@ sub yes {
     # saving the history
     if(!exists $form->{addition}) {
       $form->{snumbers} = qq|invnumber_| . $form->{invnumber};
-         $form->{addition} = "DELETED";
-         $form->save_history($form->dbconnect(\%myconfig));
+      $form->{addition} = "DELETED";
+      $form->save_history($form->dbconnect(\%myconfig));
     }
     # /saving the history
     $form->redirect($locale->text('Transaction deleted!'));
@@ -1269,243 +1269,20 @@ sub search {
   # setup customer selection
   $form->all_vc(\%myconfig, "customer", "AR");
 
-  if (@{ $form->{all_customer} || [] }) {
-    map { $customer .= "<option>$_->{name}--$_->{id}\n" }
-      @{ $form->{all_customer} };
-    $customer = qq|<select name=customer><option>\n$customer</select>|;
-  } else {
-    $customer = qq|<input name=customer size=35>|;
-  }
-
-  # departments
-  if (@{ $form->{all_departments} || [] }) {
-    $form->{selectdepartment} = "<option>\n";
-
-    map {
-      $form->{selectdepartment} .=
-        "<option>$_->{description}--$_->{id}\n"
-    } (@{ $form->{all_departments} || [] });
-  }
-
-  $department = qq|
-        <tr>
-         <th align=right nowrap>| . $locale->text('Department') . qq|</th>
-         <td colspan=3><select name=department>$form->{selectdepartment}</select></td>
-       </tr>
-| if $form->{selectdepartment};
-
-  $form->{title} = $locale->text('AR Transactions');
-
-  $form->{javascript} .= qq|<script type="text/javascript" src="js/common.js"></script>|;
-
-  # use JavaScript Calendar or not
+  $form->{title}    = $locale->text('AR Transactions');
+  $form->{fokus}    = "search.customer";
   $form->{jsscript} = 1;
-  $jsscript = "";
-  if ($form->{jsscript}) {
-
-    # with JavaScript Calendar
-    $button1 = qq|
-       <td><input name=transdatefrom id=transdatefrom size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\">
-       <input type=button name=transdatefrom id="trigger1" value=|
-      . $locale->text('button') . qq|></td>
-      |;
-    $button2 = qq|
-       <td><input name=transdateto id=transdateto size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\">
-       <input type=button name=transdateto name=transdateto id="trigger2" value=|
-      . $locale->text('button') . qq|></td>
-     |;
-
-    #write Trigger
-    $jsscript =
-      Form->write_trigger(\%myconfig, "2", "transdatefrom", "BR", "trigger1",
-                          "transdateto", "BL", "trigger2");
-  } else {
-
-    # without JavaScript Calendar
-    $button1 = qq|
-                              <td><input name=transdatefrom id=transdatefrom size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\"></td>|;
-    $button2 = qq|
-                              <td><input name=transdateto id=transdateto size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\"></td>|;
-  }
 
-  $form->get_lists("projects" => { "key" => "ALL_PROJECTS",
-                                   "all" => 1 });
+  $form->get_lists("projects"     => { "key" => "ALL_PROJECTS", "all" => 1 },
+                   "departments"  => "ALL_DEPARTMENTS",
+                   "customers"    => "ALL_VC");
 
-  my %labels = ();
-  my @values = ("");
-  foreach my $item (@{ $form->{"ALL_PROJECTS"} }) {
-    push(@values, $item->{"id"});
-    $labels{$item->{"id"}} = $item->{"projectnumber"};
-  }
-  my $projectnumber =
-    NTI($cgi->popup_menu('-name' => 'project_id', '-values' => \@values,
-                         '-labels' => \%labels));
+  # constants and subs for template
+  $form->{jsscript}  = 1;
+  $form->{vc_keys}   = sub { "$_[0]->{name}--$_[0]->{id}" };
 
-  $form->{fokus} = "search.customer";
   $form->header;
-  $onload = qq|focus()|;
-  $onload .= qq|;setupDateFormat('|. $myconfig{dateformat} .qq|', '|. $locale->text("Falsches Datumsformat!") .qq|')|;
-  $onload .= qq|;setupPoints('|. $myconfig{numberformat} .qq|', '|. $locale->text("wrongformat") .qq|')|;
-  print qq|
-<body onLoad="$onload">
-
-<form method=post name="search" action=$form->{script}>
-
-<table width=100%>
-  <tr><th class=listtop>$form->{title}</th></tr>
-  <tr height="5"></tr>
-  <tr>
-    <td>
-      <table>
-       <tr>
-         <th align=right>| . $locale->text('Customer') . qq|</th>
-         <td colspan=3>$customer</td>
-       </tr>
-       $department
-       <tr>
-         <th align=right nowrap>| . $locale->text('Invoice Number') . qq|</th>
-         <td colspan=3><input name=invnumber size=20></td>
-       </tr>
-       <tr>
-         <th align=right nowrap>| . $locale->text('Order Number') . qq|</th>
-         <td colspan=3><input name=ordnumber size=20></td>
-       </tr>
-       <tr>
-         <th align=right nowrap>| . $locale->text('Transaction description') . qq|</th>
-         <td colspan=3><input name=transaction_description size=40></td>
-       </tr>
-       <tr>
-         <th align=right nowrap>| . $locale->text('Notes') . qq|</th>
-         <td colspan=3><input name=notes size=40></td>
-       </tr>
-        <tr>
-          <th align="right">| . $locale->text("Project Number") . qq|</th>
-          <td colspan="3">$projectnumber</td>
-        </tr>
-       <tr>
-         <th align=right nowrap>| . $locale->text('From') . qq|</th>
-          $button1
-         <th align=right>| . $locale->text('Bis') . qq|</th>
-          $button2
-       </tr>
-       <input type=hidden name=sort value=transdate>
-      </table>
-    </td>
-  </tr>
-  <tr>
-    <td>
-      <table>
-       <tr>
-         <th align=right nowrap>| . $locale->text('Include in Report') . qq|</th>
-         <td>
-           <table width=100%>
-             <tr>
-               <td align=right><input name=open class=checkbox type=checkbox value=Y checked></td>
-               <td nowrap>| . $locale->text('Open') . qq|</td>
-               <td align=right><input name=closed class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Closed') . qq|</td>
-             </tr>
-             <tr>
-               <td align=right><input name="l_id" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('ID') . qq|</td>
-               <td align=right><input name="l_invnumber" class=checkbox type=checkbox value=Y checked></td>
-               <td nowrap>| . $locale->text('Invoice Number') . qq|</td>
-               <td align=right><input name="l_ordnumber" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Order Number') . qq|</td>
-               <td align=right><input name="l_transdate" class=checkbox type=checkbox value=Y checked></td>
-               <td nowrap>| . $locale->text('Invoice Date') . qq|</td>
-             </tr>
-             <tr>
-               <td align=right><input name="l_name" class=checkbox type=checkbox value=Y checked></td>
-               <td nowrap>| . $locale->text('Customer') . qq|</td>
-               <td align=right><input name="l_netamount" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Amount') . qq|</td>
-               <td align=right><input name="l_tax" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Tax') . qq|</td>
-               <td align=right><input name="l_amount" class=checkbox type=checkbox value=Y checked></td>
-               <td nowrap>| . $locale->text('Total') . qq|</td>
-             </tr>
-             <tr>
-               <td align=right><input name="l_datepaid" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Date Paid') . qq|</td>
-               <td align=right><input name="l_paid" class=checkbox type=checkbox value=Y checked></td>
-               <td nowrap>| . $locale->text('Paid') . qq|</td>
-               <td align=right><input name="l_duedate" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Due Date') . qq|</td>
-               <td align=right><input name="l_due" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Amount Due') . qq|</td>
-             </tr>
-             <tr>
-               <td align=right><input name="l_notes" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Notes') . qq|</td>
-               <td align=right><input name="l_salesman" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Salesperson') . qq|</td>
-               <td align=right><input name="l_shippingpoint" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Shipping Point') . qq|</td>
-               <td align=right><input name="l_shipvia" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Ship via') . qq|</td>
-             </tr>
-             <tr>
-               <td align=right><input name="l_marge_total" class=checkbox type=checkbox value=Y></td>
-                <td nowrap> | . $locale->text('Ertrag') . qq|</td>
-               <td align=right><input name="l_marge_percent" class=checkbox type=checkbox value=Y></td>
-                <td nowrap> | . $locale->text('Ertrag prozentual') . qq|</td>
-               <td align=right><input name="l_employee" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Employee') . qq|</td>
-             </tr>
-             <tr>
-               <td align=right><input name="l_subtotal" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Subtotal') . qq|</td>
-               <td align=right><input name="l_globalprojectnumber" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Project Number') . qq|</td>
-               <td align=right><input name="l_transaction_description" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Transaction description') . qq|</td>
-             </tr>
-          <tr>
-        <td colspan=4 align=left><b>| . $locale->text('Customer') . qq| </td>
-          </tr>
-          <tr>
-               <td align=right><input name="l_customernumber" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Customer Number') . qq|</td>
-               <td align=right><input name="l_country" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Country') . qq|</td>
-               <td align=right><input name="l_ustid" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('USt-IdNr.') . qq|</td>
-               <td align=right><input name="l_taxzone" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Steuersatz') . qq|</td>
-          </tr>
-          <tr>
-               <td align=right><input name="l_payment_terms" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Payment Terms') . qq|</td>
-               <td align=right><input name="l_charts" class=checkbox type=checkbox value=Y></td>
-               <td nowrap>| . $locale->text('Buchungskonto') . qq|</td>
-          </tr>
-
-           </table>
-         </td>
-       </tr>
-      </table>
-    </td>
-  </tr>
-  <tr>
-    <td><hr size=3 noshade></td>
-  </tr>
-</table>
-
-<input type=hidden name=nextsub value=$form->{nextsub}>
-
-<br>
-<input class=submit type=submit name=action value="|
-    . $locale->text('Continue') . qq|">
-
-</form>
-
-</body>
-
-$jsscript
-
-</html>
-|;
+  print $form->parse_html_template('ar/search', { %myconfig });
 
   $main::lxdebug->leave_sub();
 }
index 7612166..0278aa5 100644 (file)
@@ -173,12 +173,12 @@ sub select_name {
   <tr>
     <td>
       <table width=100%>
-       <tr class=listheading>|;
+        <tr class=listheading>|;
 
   map { print "\n$column_data{$_}" } @column_index;
 
   print qq|
-       </tr>
+        </tr>
 |;
 
   my $i = 0;
@@ -197,12 +197,12 @@ sub select_name {
     $j++;
     $j %= 2;
     print qq|
-       <tr class=listrow$j>|;
+        <tr class=listrow$j>|;
 
     map { print "\n$column_data{$_}" } @column_index;
 
     print qq|
-       </tr>
+        </tr>
 
 <input name="new_id_$i" type=hidden value=$ref->{id}>
 
@@ -371,7 +371,7 @@ sub select_project {
   <tr>
     <td>
       <table width=100%>
-       <tr class=listheading>|;
+        <tr class=listheading>|;
 
   map { print "\n$column_data{$_}" } @column_index;
 
index 421667d..1445eba 100644 (file)
@@ -123,29 +123,29 @@ sub search {
        receipt => { title => 'Receipts', name => 'Customer' });
 
   $label{invoice}{invnumber} = qq|
-       <tr>
-         <th align=right nowrap>| . $locale->text('Invoice Number') . qq|</th>
-         <td colspan=3><input name=invnumber size=20></td>
-       </tr>
+        <tr>
+          <th align=right nowrap>| . $locale->text('Invoice Number') . qq|</th>
+          <td colspan=3><input name=invnumber size=20></td>
+        </tr>
 |;
   $label{invoice}{ordnumber} = qq|
-       <tr>
-         <th align=right nowrap>| . $locale->text('Order Number') . qq|</th>
-         <td colspan=3><input name=ordnumber size=20></td>
-       </tr>
+        <tr>
+          <th align=right nowrap>| . $locale->text('Order Number') . qq|</th>
+          <td colspan=3><input name=ordnumber size=20></td>
+        </tr>
 |;
   $label{sales_quotation}{quonumber} = qq|
-       <tr>
-         <th align=right nowrap>| . $locale->text('Quotation Number') . qq|</th>
-         <td colspan=3><input name=quonumber size=20></td>
-       </tr>
+        <tr>
+          <th align=right nowrap>| . $locale->text('Quotation Number') . qq|</th>
+          <td colspan=3><input name=quonumber size=20></td>
+        </tr>
 |;
 
   $label{check}{chknumber} = qq|
-       <tr>
-         <th align=right nowrap>| . $locale->text('Reference') . qq|</th>
-         <td colspan=3><input name=chknumber size=20></td>
-       </tr>
+          <tr>
+          <th align=right nowrap>| . $locale->text('Reference') . qq|</th>
+          <td colspan=3><input name=chknumber size=20></td>
+        </tr>
 |;
 
   $label{packing_list}{invnumber}      = $label{invoice}{invnumber};
@@ -164,12 +164,12 @@ sub search {
     if (BP->payment_accounts(\%myconfig, \%$form)) {
       $account = qq|
         <tr>
-         <th align=right>| . $locale->text('Account') . qq|</th>
+          <th align=right>| . $locale->text('Account') . qq|</th>
 |;
 
       if ($form->{accounts}) {
         $account .= qq|
-         <td colspan=3><select name=account>
+          <td colspan=3><select name=account>
 |;
         foreach my $ref (@{ $form->{accounts} }) {
           $account .= qq|
@@ -182,13 +182,13 @@ sub search {
 |;
       } else {
         $account .= qq|
-         <td colspan=3><input name=account></td>
+          <td colspan=3><input name=account></td>
 |;
 
       }
 
       $account .= qq|
-       </tr>
+         </tr>
 |;
 
     }
@@ -243,23 +243,23 @@ sub search {
   <tr>
     <td>
       <table>
-       <tr>
-         <th align=right>Kunde</th>
-         <td colspan=3>$name</td>
-       </tr>
-       $account
-       $label{$form->{type}}{invnumber}
-       $label{$form->{type}}{ordnumber}
-       $label{$form->{type}}{quonumber}
-       $label{$form->{type}}{chknumber}
-       $label{$form->{type}}{rctnumber}
-       <tr>
-         <th align=right nowrap>| . $locale->text('From') . qq|</th>
+        <tr>
+          <th align=right>Kunde</th>
+          <td colspan=3>$name</td>
+        </tr>
+        $account
+        $label{$form->{type}}{invnumber}
+        $label{$form->{type}}{ordnumber}
+        $label{$form->{type}}{quonumber}
+        $label{$form->{type}}{chknumber}
+        $label{$form->{type}}{rctnumber}
+        <tr>
+          <th align=right nowrap>| . $locale->text('From') . qq|</th>
           $button1
-         <th align=right>| . $locale->text('Bis') . qq|</th>
+          <th align=right>| . $locale->text('Bis') . qq|</th>
           $button2
-       </tr>
-       <input type=hidden name=sort value=transdate>
+        </tr>
+        <input type=hidden name=sort value=transdate>
       </table>
     </td>
   </tr>
@@ -535,13 +535,13 @@ sub list_spool {
   <tr>
     <td>
       <table width=100%>
-       <tr class=listheading>
+        <tr class=listheading>
 |;
 
   map { print "\n$column_header{$_}" } @column_index;
 
   print qq|
-       </tr>
+        </tr>
 |;
 
   # add sort and escape callback, this one we use for the add sub
index b35b664..e4185ab 100644 (file)
@@ -172,9 +172,9 @@ sub list {
 
   my $department = qq|
         <tr>
-         <th align=right nowrap>| . $locale->text('Department') . qq|</th>
-         <td colspan=3><select name=department>$form->{selectdepartment}</select></td>
-       </tr>
+          <th align=right nowrap>| . $locale->text('Department') . qq|</th>
+          <td colspan=3><select name=department>$form->{selectdepartment}</select></td>
+        </tr>
 | if $form->{selectdepartment};
   my $accrual = ($main::eur) ? ""        : "checked";
   my $cash    = ($main::eur) ? "checked" : "";
@@ -263,107 +263,86 @@ sub list {
 
 </table>
 <table>
-       <tr>
-         <th align=left><input name=reporttype class=radio type=radio value="custom" checked> |
+        <tr>
+          <th align=left><input name=reporttype class=radio type=radio value="custom" checked> |
       . $locale->text('Customized Report') . qq|</th>
-       </tr>
-       <tr>
-         <th colspan=1>| . $locale->text('Year') . qq|</th>
-         <td><input name=year size=11 title="|
+        </tr>
+        <tr>
+          <th colspan=1>| . $locale->text('Year') . qq|</th>
+          <td><input name=year size=11 title="|
       . $locale->text('YYYY') . qq|" value="$year"></td>
-       </tr>
+        </tr>
 |;
 
     our $checked;
     print qq|
-       <tr>
-               <td align=right>
+        <tr>
+                <td align=right>
 <b> | . $locale->text('Yearly') . qq|</b> </td>
-               <th align=left>| . $locale->text('Quarterly') . qq|</th>
-               <th align=left colspan=3>| . $locale->text('Monthly') . qq|</th>
-       </tr>
-       <tr>
-               <td align=right>&nbsp; <input name=duetyp class=radio type=radio value="13"
+                <th align=left>| . $locale->text('Quarterly') . qq|</th>
+                <th align=left colspan=3>| . $locale->text('Monthly') . qq|</th>
+        </tr>
+        <tr>
+                <td align=right>&nbsp; <input name=duetyp class=radio type=radio value="13"
 $checked></td>
-               <td><input name=duetyp class=radio type=radio value="A" $checked >&nbsp;1. |
-      . $locale->text('Quarter') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="A" $checked >&nbsp;1. | . $locale->text('Quarter') . qq|</td>
 |;
     $checked = "checked";
     print qq|
-               <td><input name=duetyp class=radio type=radio value="1" $checked >&nbsp;|
-      . $locale->text('January') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="1" $checked >&nbsp;| . $locale->text('January') . qq|</td>
 |;
     $checked = "";
     print qq|
-               <td><input name=duetyp class=radio type=radio value="5" $checked >&nbsp;|
-      . $locale->text('May') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="9" $checked >&nbsp;|
-      . $locale->text('September') . qq|</td>
-
-       </tr>
-       <tr>
-               <td align= right>&nbsp;</td>
-               <td><input name=duetyp class=radio type=radio value="B" $checked>&nbsp;2. |
-      . $locale->text('Quarter') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="2" $checked >&nbsp;|
-      . $locale->text('February') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="6" $checked >&nbsp;|
-      . $locale->text('June') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="10" $checked >&nbsp;|
-      . $locale->text('October') . qq|</td>
-       </tr>
-       <tr>
-               <td> &nbsp;</td>
-               <td><input name=duetyp class=radio type=radio value="C" $checked>&nbsp;3. |
-      . $locale->text('Quarter') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="3" $checked >&nbsp;|
-      . $locale->text('March') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="7" $checked >&nbsp;|
-      . $locale->text('July') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="11" $checked >&nbsp;|
-      . $locale->text('November') . qq|</td>
-
-       </tr>
-       <tr>
-               <td> &nbsp;</td>
-               <td><input name=duetyp class=radio type=radio value="D" $checked>&nbsp;4. |
-      . $locale->text('Quarter') . qq|&nbsp;</td>
-               <td><input name=duetyp class=radio type=radio value="4" $checked >&nbsp;|
-      . $locale->text('April') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="8" $checked >&nbsp;|
-      . $locale->text('August') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="12" $checked >&nbsp;|
-      . $locale->text('December') . qq|</td>
-
-       </tr>
-       <tr>
-               <td colspan=5><hr size=3 noshade></td>
-       </tr>
-       <tr>
-          <th align=left><input name=reporttype class=radio type=radio value="free" $checked> |
-      . $locale->text('Free report period') . qq|</th>
-         <td align=left colspan=4>| . $locale->text('From') . qq|&nbsp;
-             $button1
+                <td><input name=duetyp class=radio type=radio value="5" $checked >&nbsp;| . $locale->text('May') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="9" $checked >&nbsp;| . $locale->text('September') . qq|</td>
+
+        </tr>
+        <tr>
+                <td align= right>&nbsp;</td>
+                <td><input name=duetyp class=radio type=radio value="B" $checked>&nbsp;2. | . $locale->text('Quarter') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="2" $checked >&nbsp;| . $locale->text('February') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="6" $checked >&nbsp;| . $locale->text('June') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="10" $checked >&nbsp;| . $locale->text('October') . qq|</td>
+        </tr>
+        <tr>
+                <td> &nbsp;</td>
+                <td><input name=duetyp class=radio type=radio value="C" $checked>&nbsp;3. | . $locale->text('Quarter') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="3" $checked >&nbsp;| . $locale->text('March') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="7" $checked >&nbsp;| . $locale->text('July') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="11" $checked >&nbsp;| . $locale->text('November') . qq|</td>
+
+        </tr>
+        <tr>
+                <td> &nbsp;</td>
+                <td><input name=duetyp class=radio type=radio value="D" $checked>&nbsp;4. | . $locale->text('Quarter') . qq|&nbsp;</td>
+                <td><input name=duetyp class=radio type=radio value="4" $checked >&nbsp;| . $locale->text('April') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="8" $checked >&nbsp;| . $locale->text('August') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="12" $checked >&nbsp;| . $locale->text('December') . qq|</td>
+
+        </tr>
+        <tr>
+                   <td colspan=5><hr size=3 noshade></td>
+        </tr>
+        <tr>
+          <th align=left><input name=reporttype class=radio type=radio value="free" $checked> | . $locale->text('Free report period') . qq|</th>
+          <td align=left colspan=4>| . $locale->text('From') . qq|&nbsp;
+              $button1
               $button1_2&nbsp;
-             | . $locale->text('Bis') . qq|&nbsp;
-             $button2
+              | . $locale->text('Bis') . qq|&nbsp;
+              $button2
               $button2_2
           </td>
         </tr>
-       <tr>
-               <td colspan=5><hr size=3 noshade></td>
-       </tr>
-       <tr>
-         <th align=leftt>| . $locale->text('Method') . qq|</th>
-         <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>|
-      . $locale->text('Accrual') . qq|
-         &nbsp;<input name=method class=radio type=radio value=cash $cash>|
-      . $locale->text('EUR') . qq|</td>
-       </tr>
         <tr>
-         <th align=right colspan=4>|
-      . $locale->text('Decimalplaces')
-      . qq|</th>
+                   <td colspan=5><hr size=3 noshade></td>
+        </tr>
+        <tr>
+          <th align=leftt>| . $locale->text('Method') . qq|</th>
+          <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>| . $locale->text('Accrual') . qq|
+          &nbsp;<input name=method class=radio type=radio value=cash $cash>| . $locale->text('EUR') . qq|</td>
+        </tr>
+        <tr>
+         <th align=right colspan=4>| . $locale->text('Decimalplaces') . qq|</th>
              <td><input name=decimalplaces size=3 value="2"></td>
          </tr>
          <tr>
index 2b2016f..17dac99 100644 (file)
@@ -92,7 +92,7 @@ sub select_part {
                                      "nextsub"          => "select_part_internal",
                                      "callback_sub"     => $callback_sub,
                                      "has_charge"       => $has_charge,
-                                     "has_ean"         => $has_ean,
+                                     "has_ean"          => $has_ean,
                                      "remap_parts_id"   => $remap_parts_id,
                                      "remap_partnumber" => $remap_partnumber });
 
@@ -477,27 +477,27 @@ sub reformat_numbers {
 # -------------------------------------------------------------------------
 
 sub show_history {
-       $main::lxdebug->enter_sub();
+  $main::lxdebug->enter_sub();
 
   my $form     = $main::form;
   my %myconfig = %main::myconfig;
   my $locale   = $main::locale;
 
-       my $dbh = $form->dbconnect(\%myconfig);
-       my ($sort, $sortby) = split(/\-\-/, $form->{order});
+  my $dbh = $form->dbconnect(\%myconfig);
+  my ($sort, $sortby) = split(/\-\-/, $form->{order});
   $sort =~ s/.*\.(.*)/$1/;
 
-       $form->{title} = $locale->text("History");
-    $form->header();
-    print $form->parse_html_template( "common/show_history", {
-       "DATEN" => $form->get_history($dbh,$form->{input_name},"",$form->{order}),
-       "SUCCESS" => ($form->get_history($dbh,$form->{input_name}) ne "0"),
-      uc($sort) => 1,
-      uc($sort)."BY" => $sortby
-       } );
-
-       $dbh->disconnect();
-       $main::lxdebug->leave_sub();
+  $form->{title} = $locale->text("History");
+  $form->header();
+  print $form->parse_html_template( "common/show_history", {
+    "DATEN"        => $form->get_history($dbh,$form->{input_name},"",$form->{order}),
+    "SUCCESS"      => ($form->get_history($dbh,$form->{input_name}) ne "0"),
+    uc($sort)      => 1,
+    uc($sort)."BY" => $sortby
+  } );
+
+  $dbh->disconnect();
+  $main::lxdebug->leave_sub();
 }
 
 # -------------------------------------------------------------------------
@@ -531,7 +531,7 @@ sub call_sub {
 # -------------------------------------------------------------------------
 
 sub show_vc_details {
-       $main::lxdebug->enter_sub();
+  $main::lxdebug->enter_sub();
 
   my $form     = $main::form;
   my %myconfig = %main::myconfig;
@@ -550,7 +550,7 @@ sub show_vc_details {
   $form->header();
   print $form->parse_html_template("common/show_vc_details", { "is_customer" => $form->{vc} eq "customer" });
 
-       $main::lxdebug->leave_sub();
+  $main::lxdebug->leave_sub();
 }
 
 # -------------------------------------------------------------------------
index e0c5679..5162433 100644 (file)
@@ -144,17 +144,17 @@ sub form_header {
       $form->format_amount(\%myconfig, $form->{exchangerate});
     if ($form->{forex}) {
       $exchangerate = qq|
-             <tr>
-               <th align=right nowrap>| . $locale->text('Exchangerate') . qq|</th>
-               <td colspan=3><input type=hidden name=exchangerate size=10 value=$form->{exchangerate}>$form->{exchangerate}</td>
-             </tr>
+              <tr>
+                <th align=right nowrap>| . $locale->text('Exchangerate') . qq|</th>
+                <td colspan=3><input type=hidden name=exchangerate size=10 value=$form->{exchangerate}>$form->{exchangerate}</td>
+              </tr>
 |;
     } else {
       $exchangerate = qq|
-             <tr>
-               <th align=right nowrap>| . $locale->text('Exchangerate') . qq|</th>
-               <td colspan=3><input name=exchangerate size=10 value=$form->{exchangerate}></td>
-             </tr>
+               <tr>
+                <th align=right nowrap>| . $locale->text('Exchangerate') . qq|</th>
+                <td colspan=3><input name=exchangerate size=10 value=$form->{exchangerate}></td>
+              </tr>
 |;
     }
   }
@@ -339,9 +339,9 @@ sub list_invoices {
   <tr>
     <td>
       <table width=100%>
-       <tr>
-         <th class=listheading colspan=$colspan>$invoice</th>
-       </tr>
+        <tr>
+          <th class=listheading colspan=$colspan>$invoice</th>
+        </tr>
 |;
 
   $column_data{invnumber} =
@@ -404,7 +404,7 @@ sub list_invoices {
     $j++;
     $j %= 2;
     print qq|
-       <tr class=listrow$j>
+        <tr class=listrow$j>
 |;
     map { print "$column_data{$_}\n" } @column_index;
     print qq|
@@ -465,7 +465,7 @@ sub form_footer {
     $format .= qq|
             <option value=postscript $form->{DF}{postscript}>|
       . $locale->text('Postscript') . qq|
-           <option value=pdf $form->{DF}{pdf}>| . $locale->text('PDF');
+            <option value=pdf $form->{DF}{pdf}>| . $locale->text('PDF');
   }
 
   print qq|
index 10ff706..c3d0955 100644 (file)
@@ -347,8 +347,8 @@ sub add_transaction {
 
 #  # saving the history
 #  if(!exists $form->{addition}) {
-#      $form->{addition} = "ADD TRANSACTION";
-#      $form->save_history($form->dbconnect(\%myconfig));
+#    $form->{addition} = "ADD TRANSACTION";
+#    $form->save_history($form->dbconnect(\%myconfig));
 #  }
 #  # /saving the history
 
@@ -381,8 +381,8 @@ sub save_and_ap_transaction {
   # saving the history
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|invnumber_| . $form->{invnumber};
-       $form->{addition} = "SAVED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "SAVED";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
   &add_transaction;
@@ -401,8 +401,8 @@ sub save_and_ar_transaction {
   # saving the history
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|invnumber_| . $form->{invnumber};
-       $form->{addition} = "SAVED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "SAVED";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
   &add_transaction;
@@ -426,8 +426,8 @@ sub save_and_invoice {
   # saving the history
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|invnumber_| . $form->{invnumber};
-       $form->{addition} = "SAVED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "SAVED";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
   &add_transaction;
@@ -447,8 +447,8 @@ sub save_and_rfq {
   # saving the history
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber};
-       $form->{addition} = "SAVED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "SAVED";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
   &add_transaction;
@@ -468,8 +468,8 @@ sub save_and_quotation {
   # saving the history
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber};
-       $form->{addition} = "SAVED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "SAVED";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
   &add_transaction;
@@ -494,8 +494,8 @@ sub save_and_order {
   # saving the history
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber};
-       $form->{addition} = "SAVED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "SAVED";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
   &add_transaction;
@@ -528,7 +528,7 @@ sub save_and_close {
   if(!exists $form->{addition}) {
     $form->{snumbers} = ($form->{"db"} eq "customer" ? qq|customernumber_| . $form->{customernumber} : qq|vendornumber_| . $form->{vendornumber});
     $form->{addition} = "SAVED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
   $form->redirect($locale->text($msg));
@@ -567,8 +567,8 @@ sub save {
   # saving the history
   if(!exists $form->{addition}) {
     $form->{snumbers} = ($form->{"db"} eq "customer" ? qq|customernumber_| . $form->{customernumber} : qq|vendornumber_| . $form->{vendornumber});
-       $form->{addition} = "SAVED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "SAVED";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
   &edit;
@@ -592,8 +592,8 @@ sub delete {
   # saving the history
   if(!exists $form->{addition}) {
     $form->{snumbers} = ($form->{"db"} eq "customer" ? qq|customernumber_| . $form->{customernumber} : qq|vendornumber_| . $form->{vendornumber});
-       $form->{addition} = "DELETED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "DELETED";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
   $form->redirect($locale->text($msg));
@@ -714,4 +714,25 @@ sub delete_contact {
   $main::lxdebug->leave_sub();
 }
 
+sub ajax_autocomplete {
+  $main::lxdebug->enter_sub();
+
+  my $form     = $main::form;
+  my %myconfig = %main::myconfig;
+
+  $form->{column}          = 'name'     unless $form->{column} =~ /^name$/;
+  $form->{vc}              = 'customer' unless $form->{vc} =~ /^customer|vendor$/;
+  $form->{db}              = $form->{vc}; # CT expects this
+  $form->{$form->{column}} = $form->{q}           || '';
+  $form->{limit}           = ($form->{limit} * 1) || 10;
+  $form->{searchitems}   ||= '';
+
+  CT->search(\%myconfig, $form);
+
+  print $form->ajax_response_header(),
+        $form->parse_html_template('ct/ajax_autocomplete');
+
+  $main::lxdebug->leave_sub();
+}
+
 sub continue { call_sub($main::form->{nextsub}); }
index 8f0bdd8..9f758b0 100644 (file)
@@ -72,45 +72,45 @@ sub export {
   <tr valign=top>
     <td>
       <table>
-       <tr>
-         <td align=left nowrap>| . $locale->text("Beraternummer") . qq|</td>
-         <td><input name=beraternr size=10 maxlength=7 value="$form->{beraternr}"></td>
-
-         <td align=left nowrap>| . $locale->text("DFV-Kennzeichen") . qq|</td>
-         <td><input name=dfvkz size=5 maxlength=2 value="$form->{dfvkz}"></td>
-       </tr>
-       <tr>
-         <td align=left nowrap>| . $locale->text("Beratername") . qq|</td>
-         <td><input name=beratername size=10 maxlength=9 value="$form->{beratername}"></td>
-
-         <td align=left nowrap>| . $locale->text("Password") . qq|</td>
-         <td><input name=passwort size=5 maxlength=4 value="$form->{passwort}"></td>
-       </tr>
-       <tr>
-         <td align=left nowrap>| . $locale->text("Mandantennummer") . qq|</td>
-         <td><input name=mandantennr size=10 maxlength=5 value="$form->{mandantennr}"></td>
-
-         <td align=left nowrap>| . $locale->text("Medium Number") . qq|</td>
-         <td><input name=datentraegernr size=5 maxlength=3 value="$form->{datentraegernr}"></td>
-       </tr>
-       <tr>
-         | . # OBE-Export noch nicht implementiert! <td><input checked name=kne type=checkbox class=checkbox value=1> | . $locale->text("Kontonummernerweiterung (KNE)") . qq|</td>
+        <tr>
+          <td align=left nowrap>| . $locale->text("Beraternummer") . qq|</td>
+          <td><input name=beraternr size=10 maxlength=7 value="$form->{beraternr}"></td>
+
+          <td align=left nowrap>| . $locale->text("DFV-Kennzeichen") . qq|</td>
+          <td><input name=dfvkz size=5 maxlength=2 value="$form->{dfvkz}"></td>
+        </tr>
+        <tr>
+          <td align=left nowrap>| . $locale->text("Beratername") . qq|</td>
+          <td><input name=beratername size=10 maxlength=9 value="$form->{beratername}"></td>
+
+          <td align=left nowrap>| . $locale->text("Password") . qq|</td>
+          <td><input name=passwort size=5 maxlength=4 value="$form->{passwort}"></td>
+        </tr>
+        <tr>
+          <td align=left nowrap>| . $locale->text("Mandantennummer") . qq|</td>
+          <td><input name=mandantennr size=10 maxlength=5 value="$form->{mandantennr}"></td>
+
+          <td align=left nowrap>| . $locale->text("Medium Number") . qq|</td>
+          <td><input name=datentraegernr size=5 maxlength=3 value="$form->{datentraegernr}"></td>
+        </tr>
+        <tr>
+          | . # OBE-Export noch nicht implementiert! <td><input checked name=kne type=checkbox class=checkbox value=1> | . $locale->text("Kontonummernerweiterung (KNE)") . qq|</td>
     qq|<td><input type="hidden" name="kne" value="1"></td>
           <td></td>
 
-         <td align=left nowrap>| . $locale->text("Abrechnungsnummer") . qq|</td>
-         <td><input name=abrechnungsnr size=5 maxlength=3 value="$form->{abrechnungsnr}"></td>
-       </tr>
+          <td align=left nowrap>| . $locale->text("Abrechnungsnummer") . qq|</td>
+          <td><input name=abrechnungsnr size=5 maxlength=3 value="$form->{abrechnungsnr}"></td>
+        </tr>
 
         <tr>
           <td><input name=exporttype type=radio class=radio value=0 checked> |
     . $locale->text("Export Buchungsdaten") . qq|</td>
           <td></td>
 
-         <td><input name=exporttype type=radio class=radio value=1> |
+          <td><input name=exporttype type=radio class=radio value=1> |
     . $locale->text("Export Stammdaten") . qq|</td>
           <td></td>
-       </td>
+        </td>
       </table>
     </td>
   </tr>
@@ -214,17 +214,17 @@ sub export_bewegungsdaten {
   <tr valign=top>
     <td>
       <table>
-       <tr>
+        <tr>
           <td align=left><input checked name=zeitraum class=radio type=radio value=monat>&nbsp;</td><td align=left>|
     . $locale->text('Monat') . qq|</td>
           <td align=left></td>
-         <td align=left></td>
+          <td align=left></td>
           <td align=left><select name=monat>$form->{allemonate}</select></td>
         </tr>
         <tr>
           <td align=left><input name=zeitraum class=radio type=radio value=quartal>&nbsp;</td><td align=left>|
     . $locale->text('Quartal') . qq|</td>
-         <td align=left></td>
+          <td align=left></td>
           <td align=left></td>
           <td align=left><select name=quartal>$form->{allequartale}</select></td>
         </tr>
@@ -233,10 +233,10 @@ sub export_bewegungsdaten {
     . $locale->text('Datum von') . qq|</td>
           <td align=left><input id=transdatefrom name=transdatefrom size=10>
             <input type="button" name="transdatefrom" id="trigger_transdatefrom" value="?"></td>
-         <td align=left>| . $locale->text('bis') . qq|</td>
+          <td align=left>| . $locale->text('bis') . qq|</td>
           <td align=left><input id=transdateto name=transdateto size=10>
             <input type="button" name="transdateto" id="trigger_transdateto" value="?"></td>
-       </tr>
+        </tr>
       </table>
     </td>
   </tr>
@@ -302,11 +302,11 @@ sub export_stammdaten {
     <td>
       <table>
         <tr>
-         <td align=left>| . $locale->text('Von Konto: ') . qq|</td>
+          <td align=left>| . $locale->text('Von Konto: ') . qq|</td>
           <td align=left><input name=accnofrom size=8 maxlength=8></td>
         </tr>
         <tr>
-         <td align=left>| . $locale->text('Bis Konto: ') . qq|</td>
+          <td align=left>| . $locale->text('Bis Konto: ') . qq|</td>
           <td align=left><input name=accnoto size=8 maxlength=8></td>
         </tr>
       </table>
index a72ab89..cf85bf5 100644 (file)
@@ -176,9 +176,9 @@ sub save {
   DN->save_config(\%myconfig, \%$form);
   # saving the history
   if(!exists $form->{addition} && $form->{id} ne "") {
-       $form->{snumbers} = qq|dunning_id_| . $form->{"dunning_id"};
+    $form->{snumbers} = qq|dunning_id_| . $form->{"dunning_id"};
     $form->{addition} = "SAVED FOR DUNNING";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
   $form->redirect($locale->text('Dunning Process Config saved!'));
@@ -245,9 +245,9 @@ sub save_dunning {
 
   # saving the history
   if(!exists $form->{addition} && $form->{id} ne "") {
-       $form->{snumbers} = qq|dunning_id_| . $form->{"dunning_id"};
+    $form->{snumbers} = qq|dunning_id_| . $form->{"dunning_id"};
     $form->{addition} = "DUNNING STARTED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
 
index fd8482b..8ba48d6 100644 (file)
@@ -624,8 +624,8 @@ sub save {
   # saving the history
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|donumber_| . $form->{donumber};
-       $form->{addition} = "SAVED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "SAVED";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
 
@@ -670,8 +670,8 @@ sub delete_delivery_order {
     # saving the history
     if(!exists $form->{addition}) {
       $form->{snumbers} = qq|donumber_| . $form->{donumber};
-         $form->{addition} = "DELETED";
-         $form->save_history($form->dbconnect(\%myconfig));
+      $form->{addition} = "DELETED";
+      $form->save_history($form->dbconnect(\%myconfig));
     }
     # /saving the history
 
@@ -799,7 +799,7 @@ sub invoice_multi {
   # zwischenspeichern (DO.pm) und als ' '-separierte Liste wieder zurueckschreiben
   # Hinweis: delete gibt den wert zurueck und loescht danach das element (nett und einfach)
   # $shell: perldoc perlunc; /delete EXPR
-  $form->{donumber}           = delete $form->{donumber_array};
+  $form->{donumber}            = delete $form->{donumber_array};
   $form->{deliverydate}        = $form->{transdate};
   $form->{transdate}           = $form->current_date(\%myconfig);
   $form->{duedate}             = $form->current_date(\%myconfig, $form->{invdate}, $form->{terms} * 1);
@@ -829,9 +829,9 @@ sub invoice_multi {
     $ref->{reqdate} ||= $ref->{dord_transdate}; # copy transdates into each invoice row
     map { $form->{"${_}_$form->{rowcount}"} = $ref->{$_} } keys %{ $ref };
     map { $form->{"${_}_$form->{rowcount}"} = $form->format_amount(\%myconfig, $ref->{$_}) } qw(qty sellprice discount lastcost);
-               $form->{"discount_$form->{rowcount}"}   = $form->{"discount_$form->{rowcount}"}  * 100; #s.a. Bug 1151
-               # Anm.: Eine Änderung des discounts in der SL/DO.pm->retrieve (select (doi.discount * 100) as discount) ergibt in psql einen
-               # Wert von 10.0000001490116. Ferner ist der Rabatt in der Rechnung dann bei 1.0 (?). Deswegen lasse ich das hier. jb 10.10.09
+    $form->{"discount_$form->{rowcount}"}   = $form->{"discount_$form->{rowcount}"}  * 100; #s.a. Bug 1151
+    # Anm.: Eine Änderung des discounts in der SL/DO.pm->retrieve (select (doi.discount * 100) as discount) ergibt in psql einen
+    # Wert von 10.0000001490116. Ferner ist der Rabatt in der Rechnung dann bei 1.0 (?). Deswegen lasse ich das hier. jb 10.10.09
   }
   delete $form->{form_details};
 
index 4b34a50..f5f8460 100644 (file)
@@ -250,10 +250,10 @@ sub search {
   }
 
   my $department = qq|
-       <tr>
-         <th align=right nowrap>| . $locale->text('Department') . qq|</th>
-         <td colspan=3><select name=department>$form->{selectdepartment}</select></td>
-       </tr>
+        <tr>
+          <th align=right nowrap>| . $locale->text('Department') . qq|</th>
+          <td colspan=3><select name=department>$form->{selectdepartment}</select></td>
+        </tr>
 | if $form->{selectdepartment};
 
   $form->get_lists("projects" => { "key" => "ALL_PROJECTS",
@@ -321,83 +321,83 @@ sub search {
   <tr>
     <td>
       <table>
-       <tr>
-         <th align=right>| . $locale->text('Reference') . qq|</th>
-         <td><input name=reference size=20></td>
-         <th align=right>| . $locale->text('Source') . qq|</th>
-         <td><input name=source size=20></td>
-       </tr>
-       $department
-       <tr>
-         <th align=right>| . $locale->text('Description') . qq|</th>
-         <td colspan=3><input name=description size=40></td>
-       </tr>
-       <tr>
-         <th align=right>| . $locale->text('Notes') . qq|</th>
-         <td colspan=3><input name=notes size=40></td>
-       </tr>
-       <tr>
-         <th align=right>| . $locale->text('Project Number') . qq|</th>
-         <td colspan=3>$projectnumber</td>
-       </tr>
-       <tr>
-         <th align=right>| . $locale->text('From') . qq|</th>
+        <tr>
+          <th align=right>| . $locale->text('Reference') . qq|</th>
+          <td><input name=reference size=20></td>
+          <th align=right>| . $locale->text('Source') . qq|</th>
+          <td><input name=source size=20></td>
+        </tr>
+        $department
+        <tr>
+          <th align=right>| . $locale->text('Description') . qq|</th>
+          <td colspan=3><input name=description size=40></td>
+        </tr>
+        <tr>
+          <th align=right>| . $locale->text('Notes') . qq|</th>
+          <td colspan=3><input name=notes size=40></td>
+        </tr>
+        <tr>
+          <th align=right>| . $locale->text('Project Number') . qq|</th>
+          <td colspan=3>$projectnumber</td>
+        </tr>
+        <tr>
+          <th align=right>| . $locale->text('From') . qq|</th>
           $button1
-         <th align=right>| . $locale->text('To (time)') . qq|</th>
+          <th align=right>| . $locale->text('To (time)') . qq|</th>
           $button2
-       </tr>
-       <tr>
-         <th align=right>| . $locale->text('Include in Report') . qq|</th>
-         <td colspan=3>
-           <table>
-             <tr>
-               <td>
-                 <input name="category" class=radio type=radio value=X checked>&nbsp;|
+        </tr>
+        <tr>
+          <th align=right>| . $locale->text('Include in Report') . qq|</th>
+          <td colspan=3>
+            <table>
+              <tr>
+                <td>
+                  <input name="category" class=radio type=radio value=X checked>&nbsp;|
     . $locale->text('All') . qq|
-                 <input name="category" class=radio type=radio value=A>&nbsp;|
+                  <input name="category" class=radio type=radio value=A>&nbsp;|
     . $locale->text('Asset') . qq|
-                 <input name="category" class=radio type=radio value=L>&nbsp;|
+                  <input name="category" class=radio type=radio value=L>&nbsp;|
     . $locale->text('Liability') . qq|
-                 <input name="category" class=radio type=radio value=I>&nbsp;|
+                  <input name="category" class=radio type=radio value=I>&nbsp;|
     . $locale->text('Revenue') . qq|
-                 <input name="category" class=radio type=radio value=E>&nbsp;|
+                  <input name="category" class=radio type=radio value=E>&nbsp;|
     . $locale->text('Expense') . qq|
-               </td>
-             </tr>
-             <tr>
-               <table>
-                 <tr>
-                   <td align=right><input name="l_id" class=checkbox type=checkbox value=Y></td>
-                   <td>| . $locale->text('ID') . qq|</td>
-                   <td align=right><input name="l_transdate" class=checkbox type=checkbox value=Y checked></td>
-                   <td>| . $locale->text('Date') . qq|</td>
-                   <td align=right><input name="l_reference" class=checkbox type=checkbox value=Y checked></td>
-                   <td>| . $locale->text('Reference') . qq|</td>
-                   <td align=right><input name="l_description" class=checkbox type=checkbox value=Y checked></td>
-                   <td>| . $locale->text('Description') . qq|</td>
-                   <td align=right><input name="l_notes" class=checkbox type=checkbox value=Y></td>
-                   <td>| . $locale->text('Notes') . qq|</td>
-                 </tr>
-                 <tr>
-                   <td align=right><input name="l_debit" class=checkbox type=checkbox value=Y checked></td>
-                   <td>| . $locale->text('Debit') . qq|</td>
-                   <td align=right><input name="l_credit" class=checkbox type=checkbox value=Y checked></td>
-                   <td>| . $locale->text('Credit') . qq|</td>
-                   <td align=right><input name="l_source" class=checkbox type=checkbox value=Y checked></td>
-                   <td>| . $locale->text('Source') . qq|</td>
-                   <td align=right><input name="l_accno" class=checkbox type=checkbox value=Y checked></td>
-                   <td>| . $locale->text('Account') . qq|</td>
-                 </tr>
-                 <tr>
-                   <td align=right><input name="l_subtotal" class=checkbox type=checkbox value=Y></td>
-                   <td>| . $locale->text('Subtotal') . qq|</td>
-                   <td align=right><input name="l_projectnumbers" class=checkbox type=checkbox value=Y></td>
-                   <td>| . $locale->text('Project Number') . qq|</td>
-                 </tr>
-               </table>
-             </tr>
-           </table>
-       </tr>
+                </td>
+              </tr>
+              <tr>
+                <table>
+                  <tr>
+                    <td align=right><input name="l_id" class=checkbox type=checkbox value=Y></td>
+                    <td>| . $locale->text('ID') . qq|</td>
+                    <td align=right><input name="l_transdate" class=checkbox type=checkbox value=Y checked></td>
+                    <td>| . $locale->text('Date') . qq|</td>
+                    <td align=right><input name="l_reference" class=checkbox type=checkbox value=Y checked></td>
+                    <td>| . $locale->text('Reference') . qq|</td>
+                    <td align=right><input name="l_description" class=checkbox type=checkbox value=Y checked></td>
+                    <td>| . $locale->text('Description') . qq|</td>
+                    <td align=right><input name="l_notes" class=checkbox type=checkbox value=Y></td>
+                    <td>| . $locale->text('Notes') . qq|</td>
+                  </tr>
+                  <tr>
+                    <td align=right><input name="l_debit" class=checkbox type=checkbox value=Y checked></td>
+                    <td>| . $locale->text('Debit') . qq|</td>
+                    <td align=right><input name="l_credit" class=checkbox type=checkbox value=Y checked></td>
+                    <td>| . $locale->text('Credit') . qq|</td>
+                    <td align=right><input name="l_source" class=checkbox type=checkbox value=Y checked></td>
+                    <td>| . $locale->text('Source') . qq|</td>
+                    <td align=right><input name="l_accno" class=checkbox type=checkbox value=Y checked></td>
+                    <td>| . $locale->text('Account') . qq|</td>
+                  </tr>
+                  <tr>
+                    <td align=right><input name="l_subtotal" class=checkbox type=checkbox value=Y></td>
+                    <td>| . $locale->text('Subtotal') . qq|</td>
+                    <td align=right><input name="l_projectnumbers" class=checkbox type=checkbox value=Y></td>
+                    <td>| . $locale->text('Project Number') . qq|</td>
+                  </tr>
+                </table>
+              </tr>
+            </table>
+        </tr>
       </table>
     </td>
   </tr>
@@ -1085,11 +1085,11 @@ sub form_header {
 
   my $department;
   $department = qq|
-       <tr>
-         <th align=right nowrap>| . $locale->text('Department') . qq|</th>
-         <td colspan=3><select name=department>$form->{selectdepartment}</select></td>
-         <input type=hidden name=selectdepartment value="$form->{selectdepartment}">
-       </tr>
+        <tr>
+          <th align=right nowrap>| . $locale->text('Department') . qq|</th>
+          <td colspan=3><select name=department>$form->{selectdepartment}</select></td>
+          <input type=hidden name=selectdepartment value="$form->{selectdepartment}">
+        </tr>
 | if $form->{selectdepartment};
   if ($init) {
     $form->{fokus} = "gl.reference";
@@ -1161,71 +1161,71 @@ sub form_header {
     . " $form->{previous_gldate}"
     . qq|</td>
         </tr>
-       <tr>
-         <th align=right>| . $locale->text('Reference') . qq|</th>
-         <td><input name=reference size=20 value="$form->{reference}" $readonly></td>
-         <td align=left>
-           <table>
-             <tr>
-               <th align=right nowrap>| . $locale->text('Date') . qq|</th>
+        <tr>
+          <th align=right>| . $locale->text('Reference') . qq|</th>
+          <td><input name=reference size=20 value="$form->{reference}" $readonly></td>
+          <td align=left>
+            <table>
+              <tr>
+                <th align=right nowrap>| . $locale->text('Date') . qq|</th>
                 $button1
-             </tr>
-           </table>
-         </td>
-       </tr>|;
+              </tr>
+            </table>
+          </td>
+        </tr>|;
   if ($form->{id}) {
     print qq|
-       <tr>
-         <th align=right>| . $locale->text('Belegnummer') . qq|</th>
-         <td><input name=id size=20 value="$form->{id}" $readonly></td>
-         <td align=left>
-         <table>
-             <tr>
-               <th align=right width=50%>| . $locale->text('Buchungsdatum') . qq|</th>
-               <td align=left><input name=gldate size=11 title="$myconfig{dateformat}" value=$form->{gldate} $readonly onBlur=\"check_right_date_format(this)\"></td>
-             </tr>
-           </table>
-         </td>
-       </tr>|;
+        <tr>
+          <th align=right>| . $locale->text('Belegnummer') . qq|</th>
+          <td><input name=id size=20 value="$form->{id}" $readonly></td>
+          <td align=left>
+          <table>
+              <tr>
+                <th align=right width=50%>| . $locale->text('Buchungsdatum') . qq|</th>
+                <td align=left><input name=gldate size=11 title="$myconfig{dateformat}" value=$form->{gldate} $readonly onBlur=\"check_right_date_format(this)\"></td>
+              </tr>
+            </table>
+          </td>
+        </tr>|;
   }
   print qq|
-       $department|;
+        $department|;
   if ($form->{id}) {
     print qq|
-       <tr>
-         <th align=right width=1%>| . $locale->text('Description') . qq|</th>
-         <td width=1%>$description</td>
+        <tr>
+          <th align=right width=1%>| . $locale->text('Description') . qq|</th>
+          <td width=1%>$description</td>
           <td>
-           <table>
-             <tr>
-               <th align=left>| . $locale->text('MwSt. inkl.') . qq|</th>
-               <td><input type=checkbox name=taxincluded value=1 $taxincluded></td>
-             </tr>
-           </table>
-        </td>
-         <td align=left>
-           <table width=100%>
-             <tr>
-               <th align=right width=50%>| . $locale->text('Mitarbeiter') . qq|</th>
-               <td align=left><input name=employee size=20  value="| . H($form->{employee}) . qq|" readonly></td>
-             </tr>
-           </table>
-         </td>
-       </tr>|;
+            <table>
+              <tr>
+                <th align=left>| . $locale->text('MwSt. inkl.') . qq|</th>
+                <td><input type=checkbox name=taxincluded value=1 $taxincluded></td>
+              </tr>
+            </table>
+         </td>
+          <td align=left>
+            <table width=100%>
+              <tr>
+                <th align=right width=50%>| . $locale->text('Mitarbeiter') . qq|</th>
+                <td align=left><input name=employee size=20  value="| . H($form->{employee}) . qq|" readonly></td>
+              </tr>
+            </table>
+          </td>
+        </tr>|;
   } else {
     print qq|
-       <tr>
-         <th align=left width=1%>| . $locale->text('Description') . qq|</th>
-         <td width=1%>$description</td>
-         <td>
-           <table>
-             <tr>
-               <th align=left>| . $locale->text('MwSt. inkl.') . qq|</th>
-               <td><input type=checkbox name=taxincluded value=1 $taxincluded></td>
-             </tr>
-           </table>
-        </td>
-       </tr>|;
+        <tr>
+          <th align=left width=1%>| . $locale->text('Description') . qq|</th>
+          <td width=1%>$description</td>
+          <td>
+            <table>
+              <tr>
+                <th align=left>| . $locale->text('MwSt. inkl.') . qq|</th>
+                <td><input type=checkbox name=taxincluded value=1 $taxincluded></td>
+              </tr>
+            </table>
+         </td>
+        </tr>|;
   }
 
   print qq|
@@ -1247,13 +1247,13 @@ sub form_header {
       <tr>
       <td colspan=4>
           <table width=100%>
-          <tr class=listheading>
-         <th class=listheading style="width:15%">|
+           <tr class=listheading>
+          <th class=listheading style="width:15%">|
     . $locale->text('Account') . qq|</th>
-         <th class=listheading style="width:10%">| . $locale->text('Chart balance') . qq|</th>
-         <th class=listheading style="width:10%">|
+          <th class=listheading style="width:10%">| . $locale->text('Chart balance') . qq|</th>
+          <th class=listheading style="width:10%">|
     . $locale->text('Debit') . qq|</th>
-         <th class=listheading style="width:10%">|
+          <th class=listheading style="width:10%">|
     . $locale->text('Credit') . qq|</th>
           <th class=listheading style="width:10%">|
     . $locale->text('Tax') . qq|</th>
@@ -1262,14 +1262,14 @@ sub form_header {
 
   if ($form->{show_details}) {
     print qq|
-         <th class=listheading style="width:20%">| . $locale->text('Source') . qq|</th>
-         <th class=listheading style="width:20%">| . $locale->text('Memo') . qq|</th>
-         <th class=listheading style="width:20%">| . $locale->text('Project Number') . qq|</th>
+          <th class=listheading style="width:20%">| . $locale->text('Source') . qq|</th>
+          <th class=listheading style="width:20%">| . $locale->text('Memo') . qq|</th>
+          <th class=listheading style="width:20%">| . $locale->text('Project Number') . qq|</th>
 |;
   }
 
   print qq|
-       </tr>
+        </tr>
 
 $jsscript
 |;
@@ -1422,8 +1422,8 @@ sub yes {
     # saving the history
       if(!exists $form->{addition} && $form->{id} ne "") {
         $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber};
-           $form->{addition} = "DELETED";
-           $form->save_history($form->dbconnect(\%myconfig));
+        $form->{addition} = "DELETED";
+        $form->save_history($form->dbconnect(\%myconfig));
       }
     # /saving the history
     $form->redirect($locale->text('Transaction deleted!'))
index 3042403..add1895 100644 (file)
@@ -290,14 +290,14 @@ sub update_prices {
 #      <th class=listtop colspan=6>| . $locale->text('choice part') . qq|</th>
 #     </tr>
 #        <tr height="5"></tr>
-#      <tr class=listheading>
-#        <th>&nbsp;</th>
-#        <th class=listheading>| . $locale->text('Part Number') . qq|</th>
-#        <th class=listheading>| . $locale->text('Part Description') . qq|</th>
-#        <th class=listheading>| . $locale->text('Unit of measure') . qq|</th>
-#        <th class=listheading>| . $locale->text('Sell Price') . qq|</th>
-#        <th class=listheading>| . $locale->text('soldtotal') . qq|</th>
-#      </tr>|;
+#        <tr class=listheading>
+#          <th>&nbsp;</th>
+#          <th class=listheading>| . $locale->text('Part Number') . qq|</th>
+#          <th class=listheading>| . $locale->text('Part Description') . qq|</th>
+#          <th class=listheading>| . $locale->text('Unit of measure') . qq|</th>
+#          <th class=listheading>| . $locale->text('Sell Price') . qq|</th>
+#          <th class=listheading>| . $locale->text('soldtotal') . qq|</th>
+#        </tr>|;
 #
 #  my $j = 0;
 #  my $i = $form->{rows};
@@ -308,20 +308,20 @@ sub update_prices {
 #        <tr class=listrow| . ($j % 2) . qq|>|;
 #    if ($j == 1) {
 #      print qq|
-#          <td><input name=ndx class=radio type=radio value=$j checked></td>|;
+#            <td><input name=ndx class=radio type=radio value=$j checked></td>|;
 #    } else {
 #      print qq|
-#        <td><input name=ndx class=radio type=radio value=$j></td>|;
+#          <td><input name=ndx class=radio type=radio value=$j></td>|;
 #    }
 #    print qq|
-#        <td><input name="new_partnumber_$j" type=hidden value="$form->{"partnumber_$j"}">$form->{"partnumber_$j"}</td>
-#        <td><input name="new_description_$j" type=hidden value="$form->{"description_$j"}">$form->{"description_$j"}</td>
-#        <td><input name="new_unit_$j" type=hidden value="$form->{"unit_$j"}">$form->{"unit_$j"}</td>
-#        <td><input name="new_sellprice_$j" type=hidden value="$form->{"sellprice_$j"}">$form->{"sellprice_$j"}</td>
-#        <td><input name="new_soldtotal_$j" type=hidden value="$form->{"soldtotal_$j"}">$form->{"soldtotal_$j"}</td>
+#          <td><input name="new_partnumber_$j" type=hidden value="$form->{"partnumber_$j"}">$form->{"partnumber_$j"}</td>
+#          <td><input name="new_description_$j" type=hidden value="$form->{"description_$j"}">$form->{"description_$j"}</td>
+#          <td><input name="new_unit_$j" type=hidden value="$form->{"unit_$j"}">$form->{"unit_$j"}</td>
+#          <td><input name="new_sellprice_$j" type=hidden value="$form->{"sellprice_$j"}">$form->{"sellprice_$j"}</td>
+#          <td><input name="new_soldtotal_$j" type=hidden value="$form->{"soldtotal_$j"}">$form->{"soldtotal_$j"}</td>
 #        </tr>
 #
-#      <input name="new_id_$j" type=hidden value="$form->{"id_$j"}">|;
+#        <input name="new_id_$j" type=hidden value="$form->{"id_$j"}">|;
 #  }
 #
 #  print qq|
@@ -1781,8 +1781,8 @@ sub save {
   # saving the history
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|partnumber_| . $form->{partnumber};
-       $form->{addition} = "SAVED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "SAVED";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
   $parts_id = $form->{id};
@@ -1914,8 +1914,8 @@ sub save_as_new {
   # saving the history
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|partnumber_| . $form->{partnumber};
-       $form->{addition} = "SAVED AS NEW";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "SAVED AS NEW";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
   $form->{id} = 0;
@@ -1935,8 +1935,8 @@ sub delete {
   # saving the history
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|partnumber_| . $form->{partnumber};
-       $form->{addition} = "DELETED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "DELETED";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
   my $rc = IC->delete(\%myconfig, \%$form);
@@ -2010,4 +2010,23 @@ sub parts_language_selection {
   $lxdebug->leave_sub();
 }
 
+sub ajax_autocomplete {
+  $main::lxdebug->enter_sub();
+
+  my $form     = $main::form;
+  my %myconfig = %main::myconfig;
+
+  $form->{column}          = 'description'     unless $form->{column} =~ /^partnumber|description$/;
+  $form->{$form->{column}} = $form->{q}           || '';
+  $form->{limit}           = ($form->{limit} * 1) || 10;
+  $form->{searchitems}   ||= '';
+
+  my @results = IC->all_parts(\%myconfig, $form);
+
+  print $form->ajax_response_header(),
+        $form->parse_html_template('ic/ajax_autocomplete');
+
+  $main::lxdebug->leave_sub();
+}
+
 sub continue { call_sub($form->{"nextsub"}); }
index b4290fe..97d30fe 100644 (file)
@@ -88,468 +88,6 @@ use SL::IS;
 use SL::PE;
 use SL::AM;
 use Data::Dumper;
-########################################
-# Eintrag fuer Version 2.2.0 geaendert #
-# neue Optik im Rechnungsformular      #
-########################################
-#sub display_row {
-#  $main::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 $all_units = AM->retrieve_units(\%myconfig, $form);
-#  my $dimension_units = $all_units;
-#  my $service_units = $all_units;
-#
-#  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" nowrap><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;
-#  }
-#
-#  $main::lxdebug->leave_sub();
-#}
 
 sub set_pricegroup {
   $main::lxdebug->enter_sub();
index 5ac873e..07db7ea 100644 (file)
@@ -750,7 +750,7 @@ sub check_form {
         #($form->{"sellprice_$i"},$form->{"$pricegroup_old_$i"}) = split /--/, $form->{"sellprice_$i"};
 
         # fuer assemblies auskommentiert. siehe oben
-       #    $form->{sellprice} += ($form->{"qty_$i"} * $form->{"sellprice_$i"} / ($form->{"price_factor_$i"} || 1));
+        #    $form->{sellprice} += ($form->{"qty_$i"} * $form->{"sellprice_$i"} / ($form->{"price_factor_$i"} || 1));
         $form->{weight}    += ($form->{"qty_$i"} * $form->{"weight_$i"} / ($form->{"price_factor_$i"} || 1));
         $count++;
       }
@@ -1421,10 +1421,10 @@ sub print_form {
 
       call_sub($display_form);
       # saving the history
-         if(!exists $form->{addition}) {
+      if(!exists $form->{addition}) {
         $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber};
-           $form->{addition} = "PRINTED";
-           $form->save_history($form->dbconnect(\%myconfig));
+        $form->{addition} = "PRINTED";
+        $form->save_history($form->dbconnect(\%myconfig));
       }
       # /saving the history
       exit;
@@ -1641,16 +1641,16 @@ sub print_form {
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber};
     if($form->{media} =~ /printer/) {
-       $form->{addition} = "PRINTED";
+      $form->{addition} = "PRINTED";
     }
     elsif($form->{media} =~ /email/) {
-       $form->{addition} = "MAILED";
+      $form->{addition} = "MAILED";
     }
     elsif($form->{media} =~ /queue/) {
-       $form->{addition} = "QUEUED";
+      $form->{addition} = "QUEUED";
     }
     elsif($form->{media} =~ /screen/) {
-       $form->{addition} = "SCREENED";
+      $form->{addition} = "SCREENED";
     }
     $form->save_history($form->dbconnect(\%myconfig));
   }
@@ -1809,72 +1809,72 @@ sub ship_to {
   <tr>
     <td>
       <table>
-       <tr class="listheading">
-         <th class="listheading" colspan="2" width="50%">|
+        <tr class="listheading">
+          <th class="listheading" colspan="2" width="50%">|
     . $locale->text('Billing Address') . qq|</th>
-         <th class="listheading" width="50%">|
+          <th class="listheading" width="50%">|
     . $locale->text('Shipping Address') . qq|</th>
-       </tr>
-       <tr height="5"></tr>
-       <tr>
-         <th align="right" nowrap>$number</th>
-         <td>$form->{"$form->{vc}number"}</td>
-       </tr>
-       <tr>
-         <th align="right" nowrap>| . $locale->text('Company Name') . qq|</th>
-         <td>$form->{name}</td>
-         <td><input name="shiptoname" size="35" value="$form->{shiptoname}"></td>
-       </tr>
-       <tr>
-         <th align="right" nowrap>| . $locale->text('Department') . qq|</th>
-         <td>$form->{department_1}</td>
-         <td><input name="shiptodepartment_1" size="35" value="$form->{shiptodepartment_1}"></td>
-       </tr>
-       <tr>
-         <th align="right" nowrap>&nbsp;</th>
-         <td>$form->{department_2}</td>
-         <td><input name="shiptodepartment_2" size="35" value="$form->{shiptodepartment_2}"></td>
-       </tr>
-       <tr>
-         <th align="right" nowrap>| . $locale->text('Street') . qq|</th>
-         <td>$form->{street}</td>
-         <td><input name="shiptostreet" size="35" value="$form->{shiptostreet}"></td>
-       </tr>
-       <tr>
-         <th align="right" nowrap>| . $locale->text('Zipcode') . qq|</th>
-         <td>$form->{zipcode}</td>
-         <td><input name="shiptozipcode" size="35" value="$form->{shiptozipcode}"></td>
-       </tr>
-       <tr>
-         <th align="right" nowrap>| . $locale->text('City') . qq|</th>
-         <td>$form->{city}</td>
-         <td><input name="shiptocity" size="35" value="$form->{shiptocity}"></td>
-       </tr>
-       <tr>
-         <th align="right" nowrap>| . $locale->text('Country') . qq|</th>
-         <td>$form->{country}</td>
-         <td><input name="shiptocountry" size="35" value="$form->{shiptocountry}"></td>
-       </tr>
-       <tr>
-         <th align="right" nowrap>| . $locale->text('Contact') . qq|</th>
-         <td>$form->{contact}</td>
-         <td><input name="shiptocontact" size="35" value="$form->{shiptocontact}"></td>
-       </tr>
-       <tr>
-         <th align="right" nowrap>| . $locale->text('Phone') . qq|</th>
-         <td>$form->{phone}</td>
-         <td><input name="shiptophone" size="20" value="$form->{shiptophone}"></td>
-       </tr>
-       <tr>
-         <th align="right" nowrap>| . $locale->text('Fax') . qq|</th>
-         <td>$form->{fax}</td>
-         <td><input name="shiptofax" size="20" value="$form->{shiptofax}"></td>
-       </tr>
-       <tr>
-         <th align="right" nowrap>| . $locale->text('E-mail') . qq|</th>
-         <td>$form->{email}</td>
-         <td><input name="shiptoemail" size="35" value="$form->{shiptoemail}"></td>
-       </tr>
+        </tr>
+        <tr height="5"></tr>
+        <tr>
+          <th align="right" nowrap>$number</th>
+          <td>$form->{"$form->{vc}number"}</td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>| . $locale->text('Company Name') . qq|</th>
+          <td>$form->{name}</td>
+          <td><input name="shiptoname" size="35" value="$form->{shiptoname}"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>| . $locale->text('Department') . qq|</th>
+          <td>$form->{department_1}</td>
+          <td><input name="shiptodepartment_1" size="35" value="$form->{shiptodepartment_1}"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>&nbsp;</th>
+          <td>$form->{department_2}</td>
+          <td><input name="shiptodepartment_2" size="35" value="$form->{shiptodepartment_2}"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>| . $locale->text('Street') . qq|</th>
+          <td>$form->{street}</td>
+          <td><input name="shiptostreet" size="35" value="$form->{shiptostreet}"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>| . $locale->text('Zipcode') . qq|</th>
+          <td>$form->{zipcode}</td>
+          <td><input name="shiptozipcode" size="35" value="$form->{shiptozipcode}"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>| . $locale->text('City') . qq|</th>
+          <td>$form->{city}</td>
+          <td><input name="shiptocity" size="35" value="$form->{shiptocity}"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>| . $locale->text('Country') . qq|</th>
+          <td>$form->{country}</td>
+          <td><input name="shiptocountry" size="35" value="$form->{shiptocountry}"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>| . $locale->text('Contact') . qq|</th>
+          <td>$form->{contact}</td>
+          <td><input name="shiptocontact" size="35" value="$form->{shiptocontact}"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>| . $locale->text('Phone') . qq|</th>
+          <td>$form->{phone}</td>
+          <td><input name="shiptophone" size="20" value="$form->{shiptophone}"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>| . $locale->text('Fax') . qq|</th>
+          <td>$form->{fax}</td>
+          <td><input name="shiptofax" size="20" value="$form->{shiptofax}"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>| . $locale->text('E-mail') . qq|</th>
+          <td>$form->{email}</td>
+          <td><input name="shiptoemail" size="35" value="$form->{shiptoemail}"></td>
+        </tr>
       </table>
     </td>
   </tr>
index f43ed77..c44ef42 100644 (file)
@@ -97,6 +97,8 @@ sub invoice_links {
 
   $main::auth->assert('vendor_invoice_edit');
 
+  $form->{vc} = 'vendor';
+
   # create links
   $form->{webdav}   = $main::webdav;
   $form->{jsscript} = 1;
@@ -254,299 +256,93 @@ sub form_header {
   my $locale   = $main::locale;
   my $cgi      = $main::cgi;
 
-  $main::auth->assert('vendor_invoice_edit');
+  $main::auth->assert('invoice_edit');
 
-  push @{ $form->{AJAX} }, CGI::Ajax->new('set_duedate_vendor' => "$form->{script}?action=set_duedate_vendor");
+  our %TMPL_VAR = ();
+  my @custom_hiddens;
 
-  # set option selected
-  foreach my $item (qw(AP vendor currency department)) {
-    $form->{"select$item"} =~ s/ selected//;
-    $form->{"select$item"} =~ s/option>\Q$form->{$item}\E/option selected>$form->{$item}/;
-  }
+  $form->{employee_id} = $form->{old_employee_id} if $form->{old_employee_id};
+  $form->{salesman_id} = $form->{old_salesman_id} if $form->{old_salesman_id};
 
-  $form->{employee_id}     = $form->{old_employee_id} if $form->{old_employee_id};
-  $form->{salesman_id}     = $form->{old_salesman_id} if $form->{old_salesman_id};
   $form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
-  $form->{radier}          = ($form->current_date(\%myconfig) eq $form->{gldate}) ? 1 : 0;
-  $form->{exchangerate}    = $form->format_amount(\%myconfig, $form->{exchangerate});
-  $form->{creditlimit}     = $form->format_amount(\%myconfig, $form->{creditlimit}, 0, "0");
-  $form->{creditremaining} = $form->format_amount(\%myconfig, $form->{creditremaining}, 0, "0");
-
-  my $exchangerate = "";
-  if ($form->{currency} ne $form->{defaultcurrency}) {
-    if ($form->{forex}) {
-      $exchangerate .= qq| <th align=right nowrap>| . $locale->text('Exchangerate') . qq|</th>
-                           <td>$form->{exchangerate}<input type=hidden name=exchangerate value=$form->{exchangerate}></td>\n|;
-    } else {
-      $exchangerate .= qq| <th align=right nowrap>| . $locale->text('Exchangerate') . qq|</th>
-                           <td><input name=exchangerate size=10 value=$form->{exchangerate}></td>\n|;
-    }
-  }
-  $exchangerate .= qq| <input type=hidden name=forex value=$form->{forex}>\n|;
+
+  my $set_duedate_url = "$form->{script}?action=set_duedate";
+
+  push @ { $form->{AJAX} }, new CGI::Ajax( 'set_duedate' => $set_duedate_url );
 
   my @old_project_ids = ($form->{"globalproject_id"});
   map { push @old_project_ids, $form->{"project_id_$_"} if $form->{"project_id_$_"}; } 1..$form->{"rowcount"};
 
   $form->get_lists("contacts"      => "ALL_CONTACTS",
-                   "projects"      => { "key"  => "ALL_PROJECTS",
-                                      "all"    => 0,
-                                      "old_id" => \@old_project_ids },
+                   "shipto"        => "ALL_SHIPTO",
+                   "projects"      => { "key"    => "ALL_PROJECTS",
+                                        "all"    => 0,
+                                        "old_id" => \@old_project_ids },
+                   "employees"     => "ALL_EMPLOYEES",
                    "taxzones"      => "ALL_TAXZONES",
-                   "employees"     => "ALL_SALESMEN",
                    "currencies"    => "ALL_CURRENCIES",
                    "vendors"       => "ALL_VENDORS",
+                   "departments"   => "all_departments",
                    "price_factors" => "ALL_PRICE_FACTORS");
 
-  my %labels;
-  my @values = (undef);
-  foreach my $item (@{ $form->{"ALL_CONTACTS"} }) {
-    push(@values, $item->{"cp_id"});
-    $labels{$item->{"cp_id"}} = $item->{"cp_name"} . ($item->{"cp_abteilung"} ? " ($item->{cp_abteilung})" : "");
-  }
-
-  my $contact;
-  if (scalar @values > 1) {
-    $contact = qq|
-    <tr>
-      <th align="right">| . $locale->text('Contact Person') . qq|</th>
-      <td>| .  NTI($cgi->popup_menu('-name' => 'cp_id', '-values' => \@values, '-style' => 'width: 250px',
-                                    '-labels' => \%labels, '-default' => $form->{"cp_id"})) . qq|
-      </td>
-    </tr>|;
-  }
-
-  %labels = ();
-  @values = ("");
-  foreach my $item (@{ $form->{"ALL_PROJECTS"} }) {
-    push(@values, $item->{"id"});
-    $labels{$item->{"id"}} = $item->{"projectnumber"};
-  }
-  my $globalprojectnumber = NTI($cgi->popup_menu('-name' => 'globalproject_id', '-values' => \@values, '-labels' => \%labels,
-                                                 '-default' => $form->{"globalproject_id"}));
-
-  %labels = ();
-  @values = ();
-  my $i = 0;
-  foreach my $item (@{ $form->{"ALL_CURRENCIES"} }) {
-    push(@values, $item);
-    $labels{$item} = $item;
-  }
-
-  $form->{currency} = $form->{defaultcurrency} unless $form->{currency};
-  my $currencies;
-  if (scalar @values) {
-    $currencies = qq|
-    <tr>
-      <th align="right">| . $locale->text('Currency') . qq|</th>
-      <td>| .  NTI($cgi->popup_menu('-name' => 'currency', '-default' => $form->{"currency"},
-                                    '-values' => \@values, '-labels' => \%labels)) . qq|
-      </td>
-    </tr>|;
-  }
-
-  %labels = ();
-  @values = ();
-  foreach my $item (@{ $form->{"ALL_SALESMEN"} }) {
-    push(@values, $item->{"id"});
-    $labels{$item->{"id"}} = $item->{"name"};
-  }
-  my $employees = qq|
-    <tr>
-      <th align="right">| . $locale->text('Employee') . qq|</th>
-      <td>| .  NTI($cgi->popup_menu('-name' => 'employee_id', '-default' => $form->{"employee_id"},
-                                    '-values' => \@values, '-labels' => \%labels)) . qq|
-      </td>
-    </tr>|;
-
-  %labels = ();
-  @values = ();
-  foreach my $item (@{ $form->{"ALL_VENDORS"} }) {
-    push(@values, $item->{name}.qq|--|.$item->{"id"});
-    $labels{$item->{name}.qq|--|.$item->{"id"}} = $item->{"name"};
-  }
-
-  $form->{selectvendor} = ($myconfig{vclimit} > scalar(@values));
-
-  my $vendors = qq|
-      <th align="right">| . $locale->text('Vendor') . qq|</th>
-      <td>| .
-        (($myconfig{vclimit} <=  scalar(@values))
-              ? qq|<input type="text" value="| . H($form->{vendor}) . qq|" name="vendor">|
-              : (NTI($cgi->popup_menu('-name' => 'vendor', '-default' => $form->{oldvendor},
-                                      '-onChange' => 'document.getElementById(\'update_button\').click();',
-                                      '-values' => \@values, '-labels' => \%labels, '-style' => 'width: 250px')))) . qq|
-        <input type="button" value="| . $locale->text('Details (one letter abbreviation)') . qq|" onclick="show_vc_details('vendor')">
-      </td>|;
-
-  %labels = ();
-  @values = ();
-  foreach my $item (@{ $form->{"ALL_TAXZONES"} }) {
-    push(@values, $item->{"id"});
-    $labels{$item->{"id"}} = $item->{"description"};
-  }
-
-  my $taxzone;
-  if (!$form->{"id"}) {
-    $taxzone = qq|
-    <tr>
-      <th align="right">| . $locale->text('Steuersatz') . qq|</th>
-      <td>| .  NTI($cgi->popup_menu('-name' => 'taxzone_id', '-default' => $form->{"taxzone_id"},
-                                    '-values' => \@values, '-labels' => \%labels, '-style' => 'width: 250px')) . qq|
-      </td>
-    </tr>|;
-  } else {
-    $taxzone = qq|
-    <tr>
-      <th align="right">| . $locale->text('Steuersatz') . qq|</th>
-      <td>
-        <input type="hidden" name="taxzone_id" value="| . H($form->{"taxzone_id"}) . qq|">
-        | . H($labels{$form->{"taxzone_id"}}) . qq|
-      </td>
-    </tr>|;
-  }
-
-  my $department = qq|
-           <tr>
-             <th align="right" nowrap>| . $locale->text('Department') . qq|</th>
-             <td colspan="3"><select name="department" style="width: 250px">$form->{selectdepartment}</select>
-             <input type="hidden" name="selectdepartment" value="$form->{selectdepartment}">
-             </td>
-           </tr>\n| if $form->{selectdepartment};
-
-  my $n = ($form->{creditremaining} =~ /-/) ? "0" : "1";
-
-  # use JavaScript Calendar or not
-  $form->{jsscript} = 1;
-  my $jsscript = "";
-
-  my $button1 = qq|
-     <td nowrap>
-         <input name=invdate id=invdate size=11 title="$myconfig{dateformat}" value="$form->{invdate}" onBlur=\"check_right_date_format(this)\"
-                onChange="if (this.value) set_duedate_vendor(['invdate__' + this.value, 'old_duedate__' + document.getElementsByName('duedate')[0].value, 'vendor_id__' + document.getElementsByName('vendor_id')[0].value],['duedate'])">
-         <input type=button name=invdate id="trigger1" value="?">
-     </td>\n|;
-
-#, 'old_duedate__'' + document.getElementsByName('duedate')[0].value, 'vendor_id__' + document.getElementsByName('vendor_id')[0].value],['duedate'])">
-  my $button2 = qq|
-     <td width="13" nowrap>
-          <input name=duedate id=duedate size=11 title="$myconfig{dateformat}" value="$form->{duedate}"  onBlur=\"check_right_date_format(this)\">
-          <input type=button name=duedate id="trigger2" value=| . $locale->text('button') . qq|>
-     </td>\n|;
-
-  #write Trigger
-  $jsscript =
-    Form->write_trigger(\%myconfig, "2",
-                        "invdate", "BL", "trigger1",
-                        "duedate", "BL", "trigger2");
+  $TMPL_VAR{sales_employee_labels} = sub { $_[0]->{name} || $_[0]->{login} };
+#  $TMPL_VAR{shipto_labels}         = sub { join "; ", grep { $_ } map { $_[0]->{"shipto${_}" } } qw(name department_1 street city) };
+  $TMPL_VAR{contact_labels}        = sub { join(', ', $_[0]->{"cp_name"}, $_[0]->{"cp_givenname"}) . ($_[0]->{cp_abteilung} ? " ($_[0]->{cp_abteilung})" : "") };
+  $TMPL_VAR{department_labels}     = sub { "$_[0]->{description}--$_[0]->{id}" };
+
+  # customer
+  $TMPL_VAR{vc_keys} = sub { "$_[0]->{name}--$_[0]->{id}" };
+  $TMPL_VAR{vclimit} = $myconfig{vclimit};
+  $TMPL_VAR{vc_select} = "customer_or_vendor_selection_window('vendor', '', 1, 0)";
+  push @custom_hiddens, "vendor_id";
+  push @custom_hiddens, "oldvendor";
+  push @custom_hiddens, "selectvendor";
+
+  # currencies and exchangerate
+  my @values = map { $_       } @{ $form->{ALL_CURRENCIES} };
+  my %labels = map { $_ => $_ } @{ $form->{ALL_CURRENCIES} };
+  $form->{currency}            = $form->{defaultcurrency} unless $form->{currency};
+  $TMPL_VAR{show_exchangerate} = $form->{currency} ne $form->{defaultcurrency};
+  $TMPL_VAR{currencies}        = NTI($cgi->popup_menu('-name' => 'currency', '-default' => $form->{"currency"},
+                                                      '-values' => \@values, '-labels' => \%labels)) if scalar @values;
+  push @custom_hiddens, "forex";
+  push @custom_hiddens, "exchangerate" if $form->{forex};
+
+  $TMPL_VAR{creditwarning} = ($form->{creditlimit} != 0) && ($form->{creditremaining} < 0) && !$form->{update};
+  $TMPL_VAR{is_credit_remaining_negativ} = $form->{creditremaining} =~ /-/;
+
+  $form->{fokus} = "invoice.vendor";
 
   my $follow_up_vc         =  $form->{vendor};
   $follow_up_vc            =~ s/--\d*\s*$//;
-  my $follow_up_trans_info =  "$form->{invnumber} ($follow_up_vc)";
-
-  $form->{javascript} .= qq|<script type="text/javascript" src="js/show_form_details.js"></script>|;
-  $form->{javascript} .= qq|<script type="text/javascript" src="js/common.js"></script>|;
-  $form->{javascript} .= qq|<script type="text/javascript" src="js/show_vc_details.js"></script>|;
-  $form->{javascript} .= qq|<script type="text/javascript" src="js/follow_up.js"></script>|;
-
-  $jsscript .= $form->write_trigger(\%myconfig, 2, "orddate", "BL", "trigger_orddate", "quodate", "BL", "trigger_quodate");
+  $TMPL_VAR{vendor_name} = $follow_up_vc;
 
-  $form->header;
-  my $onload  = qq|focus()|;
-  $onload .= qq|;setupDateFormat('|. $myconfig{dateformat} .qq|', '|. $locale->text("Falsches Datumsformat!") .qq|')|;
-  $onload .= qq|;setupPoints('|. $myconfig{numberformat} .qq|', '|. $locale->text("wrongformat") .qq|')|;
-  print qq|
-<body onLoad="$onload">
-<script type="text/javascript" src="js/common.js"></script>
-<form method="post" action="ir.pl" name="Form">
-|;
-
-  $form->hide_form(qw(id title vc type level creditlimit creditremaining closedto locked shippted storno storno_id
-                      max_dunning_level dunning_amount vendor_id oldvendor selectvendor taxaccounts
-                      fxgain_accno fxloss_accno taxpart taxservice cursor_fokus
-                      convert_from_oe_ids convert_from_do_ids),
-                      map { $_.'_rate', $_.'_description' } split / /, $form->{taxaccounts} );
+# set option selected
+  foreach my $item (qw(AP)) {
+    $form->{"select$item"} =~ s/ selected//;
+    $form->{"select$item"} =~ s/option>\Q$form->{$item}\E/option selected>$form->{$item}/;
+  }
 
-  print qq|<p>$form->{saved_message}</p>| if $form->{saved_message};
+  $TMPL_VAR{is_type_credit_note} = $form->{type}   eq "credit_note";
+  $TMPL_VAR{is_format_html}      = $form->{format} eq 'html';
+  $TMPL_VAR{dateformat}          = $myconfig{dateformat};
+  $TMPL_VAR{numberformat}        = $myconfig{numberformat};
 
-  print qq|
+  # hiddens
+  $TMPL_VAR{HIDDENS} = [qw(
+    id action type media format queued printed emailed title vc discount
+    title creditlimit creditremaining tradediscount business closedto locked shipped storno storno_id
+    max_dunning_level dunning_amount
+    shiptoname shiptostreet shiptozipcode shiptocity shiptocountry  shiptocontact shiptophone shiptofax
+    shiptoemail shiptodepartment_1 shiptodepartment_2 message email subject cc bcc taxaccounts cursor_fokus
+    convert_from_do_ids convert_from_oe_ids
+  ), @custom_hiddens,
+  map { $_.'_rate', $_.'_description', $_.'_taxnumber' } split / /, $form->{taxaccounts}];
 
-<div class="listtop" width="100%">$form->{title}</div>
-
-<table width=100%>
-  <tr>
-    <td valign="top">
-           <table>
-        $vendors
-        $contact
-        <tr>
-          <td align="right">| . $locale->text('Credit Limit') . qq|</td>
-          <td>$form->{creditlimit}; | . $locale->text('Remaining') . qq| <span class="plus$n">$form->{creditremaining}</span></td>
-        </tr>
-             <tr>
-               <th align="right">| . $locale->text('Record in') . qq|</th>
-               <td colspan="3"><select name="AP" style="width: 250px">$form->{selectAP}</select></td>
-               <input type="hidden" name="selectAP" value="$form->{selectAP}">
-             </tr>
-              $taxzone
-              $department
-             <tr>
-    $currencies
-               $exchangerate
-             </tr>
-           </table>
-         </td>
-         <td align=right>
-           <table>
-     $employees
-             <tr>
-               <th align=right nowrap>| . $locale->text('Invoice Number') . qq|</th>
-               <td><input name=invnumber size=11 value="$form->{invnumber}"></td>
-             </tr>
-             <tr>
-               <th align=right nowrap>| . $locale->text('Invoice Date') . qq|</th>
-                $button1
-             </tr>
-             <tr>
-               <th align=right nowrap>| . $locale->text('Due Date') . qq|</th>
-                $button2
-             </tr>
-             <tr>
-               <th align=right nowrap>| . $locale->text('Order Number') . qq|</th>
-               <td><input name=ordnumber size=11 value="$form->{ordnumber}"></td>
-<input type=hidden name=quonumber value="$form->{quonumber}">
-             </tr>
-        <tr>
-          <th align="right" nowrap>| . $locale->text('Order Date') . qq|</th>
-          <td><input name="orddate" id="orddate" size="11" title="$myconfig{dateformat}" value="| . Q($form->{orddate}) . qq|" onBlur=\"check_right_date_format(this)\">
-           <input type="button" name="b_orddate" id="trigger_orddate" value="?"></td>
-        </tr>
-        <tr>
-          <th align="right" nowrap>| . $locale->text('Quotation Date') . qq|</th>
-          <td><input name="quodate" id="quodate" size="11" title="$myconfig{dateformat}" value="| . Q($form->{quodate}) . qq|" onBlur=\"check_right_date_format(this)\">
-           <input type="button" name="b_quodate" id="trigger_quodate" value="?"></td>
-        </tr>
-             <tr>
-          <th align="right" nowrap>| . $locale->text('Project Number') . qq|</th>
-          <td>$globalprojectnumber</td>
-             </tr>
-     </table>
-         </td>
-       </tr>
-      </table>
-    </td>
-  </tr>
-
-$jsscript
-
-<input type=hidden name=webdav value=$main::webdav>
-|;
+  $form->{jsscript} = 1;
+  $form->header();
 
-  foreach my $item (split / /, $form->{taxaccounts}) {
-    print qq|
-<input type=hidden name="${item}_rate" value=$form->{"${item}_rate"}>
-<input type=hidden name="${item}_description" value="$form->{"${item}_description"}">
-|;
-  }
+  print $form->parse_html_template("ir/form_header", \%TMPL_VAR);
 
   $main::lxdebug->leave_sub();
 }
@@ -557,368 +353,61 @@ sub form_footer {
   my $form     = $main::form;
   my %myconfig = %main::myconfig;
   my $locale   = $main::locale;
-  my $cgi      = $main::cgi;
-
-  $main::auth->assert('vendor_invoice_edit');
-
-  $form->{invtotal} = $form->{invsubtotal};
 
-  my ($rows, $introws);
-  if (($rows = $form->numtextrows($form->{notes}, 25, 8)) < 2) {
-    $rows = 2;
-  }
-  if (($introws = $form->numtextrows($form->{intnotes}, 35, 8)) < 2) {
-    $introws = 2;
-  }
-  $rows = ($rows > $introws) ? $rows : $introws;
-  my $notes =
-    qq|<textarea name=notes rows=$rows cols=25 wrap=soft>$form->{notes}</textarea>|;
-  my $intnotes =
-    qq|<textarea name=intnotes rows=$rows cols=35 wrap=soft>$form->{intnotes}</textarea>|;
-
-  $form->{taxincluded} = ($form->{taxincluded}) ? "checked" : "";
-
-  my $taxincluded = "";
-  if ($form->{taxaccounts}) {
-    $taxincluded = qq|
-               <input name=taxincluded class=checkbox type=checkbox value=1 $form->{taxincluded}> <b>|
-      . $locale->text('Tax Included') . qq|</b>
-|;
-  }
-
-  my ($tax, $subtotal);
-  if (!$form->{taxincluded}) {
-
-    foreach my $item (split / /, $form->{taxaccounts}) {
-      if ($form->{"${item}_base"}) {
-        $form->{invtotal} += $form->{"${item}_total"} =
-          $form->round_amount(
-                             $form->{"${item}_base"} * $form->{"${item}_rate"},
-                             2);
-        $form->{"${item}_total"} =
-          $form->format_amount(\%myconfig, $form->{"${item}_total"}, 2);
-
-        $tax .= qq|
-               <tr>
-                 <th align=right>$form->{"${item}_description"}&nbsp;|
-                    . $form->{"${item}_rate"} * 100 .qq|%</th>
-                 <td align=right>$form->{"${item}_total"}</td>
-               </tr>
-|;
-      }
-    }
+  $main::auth->assert('invoice_edit');
 
-    $form->{invsubtotal} =
-      $form->format_amount(\%myconfig, $form->{invsubtotal}, 2, 0);
+  $form->{invtotal}    = $form->{invsubtotal};
+  $form->{oldinvtotal} = $form->{invtotal};
 
-    $subtotal = qq|
-             <tr>
-               <th align=right>| . $locale->text('Subtotal') . qq|</th>
-               <td align=right>$form->{invsubtotal}</td>
-             </tr>
-|;
+  # note rows
+  $form->{rows} = max 2,
+    $form->numtextrows($form->{notes},    26, 8),
+    $form->numtextrows($form->{intnotes}, 35, 8);
 
-  }
 
-  if ($form->{taxincluded}) {
-    foreach my $item (split / /, $form->{taxaccounts}) {
-      if ($form->{"${item}_base"}) {
-        $form->{"${item}_total"} =
-          $form->round_amount(
-                           ($form->{"${item}_base"} * $form->{"${item}_rate"} /
-                              (1 + $form->{"${item}_rate"})
-                           ),
-                           2);
-        $form->{"${item}_base"} =
-          $form->round_amount($form->{"${item}_base"}, 2);
-        $form->{"${item}_netto"} =
-          $form->round_amount(
-                          ($form->{"${item}_base"} - $form->{"${item}_total"}),
-                          2);
-        $form->{"${item}_netto"} =
-          $form->format_amount(\%myconfig, $form->{"${item}_netto"}, 2);
-        $form->{"${item}_total"} =
-          $form->format_amount(\%myconfig, $form->{"${item}_total"}, 2);
-
-        $tax .= qq|
-             <tr>
-               <th align=right>Enthaltene $form->{"${item}_description"}&nbsp;|
-                                   . $form->{"${item}_rate"} * 100 .qq|%</th>
-               <td align=right>$form->{"${item}_total"}</td>
-             </tr>
-             <tr>
-               <th align=right>Nettobetrag</th>
-               <td align=right>$form->{"${item}_netto"}</td>
-             </tr>
-|;
+  # tax, total and subtotal calculations
+  my ($tax, $subtotal);
+  $form->{taxaccounts_array} = [ split / /, $form->{taxaccounts} ];
+
+  foreach my $item (@{ $form->{taxaccounts_array} }) {
+    if ($form->{"${item}_base"}) {
+      if ($form->{taxincluded}) {
+        $form->{"${item}_total"} = $form->round_amount( ($form->{"${item}_base"} * $form->{"${item}_rate"}
+                                                                                 / (1 + $form->{"${item}_rate"})), 2);
+        $form->{"${item}_netto"} = $form->round_amount( ($form->{"${item}_base"} - $form->{"${item}_total"}), 2);
+      } else {
+        $form->{"${item}_total"} = $form->round_amount( $form->{"${item}_base"} * $form->{"${item}_rate"}, 2);
+        $form->{invtotal} += $form->{"${item}_total"};
       }
     }
-
   }
 
-  $form->{oldinvtotal} = $form->{invtotal};
-  $form->{invtotal}    =
-    $form->format_amount(\%myconfig, $form->{invtotal}, 2, 0);
-
-  my $follow_ups_block;
+  # follow ups
   if ($form->{id}) {
-    my $follow_ups = FU->follow_ups('trans_id' => $form->{id});
-
-    if (@{ $follow_ups} ) {
-      my $num_due       = sum map { $_->{due} * 1 } @{ $follow_ups };
-      $follow_ups_block = qq|
-      <tr>
-        <td colspan="2">| . $locale->text("There are #1 unfinished follow-ups of which #2 are due.", scalar @{ $follow_ups }, $num_due) . qq|</td>
-      </tr>
-|;
-    }
-  }
-
-  our $colspan;
-  print qq|
-  <tr>
-    <td colspan=$colspan>
-      <table cellspacing="0">
-       <tr valign=bottom>
-         <td>
-           <table>
-             <tr>
-               <th align=left>| . $locale->text('Notes') . qq|</th>
-               <th align=left>| . $locale->text('Internal Notes') . qq|</th>
-             </tr>
-             <tr valign=top>
-               <td>$notes</td>
-               <td>$intnotes</td>
-             </tr>
-        $follow_ups_block
-           </table>
-         </td>
-         <td colspan=2 align=right width=100%>
-           $taxincluded
-           <br>
-           <table width=100%>
-             $subtotal
-             $tax
-             <tr>
-               <th align=right>| . $locale->text('Total') . qq|</th>
-               <td align=right>$form->{invtotal}</td>
-             </tr>
-           </table>
-         </td>
-       </tr>
-      </table>
-    </td>
-  </tr>
-|;
-  my $webdav_list;
-  if ($main::webdav) {
-    $webdav_list = qq|
-  <tr>
-    <td><hr size=3 noshade></td>
-  </tr>
-  <tr>
-    <th class=listtop align=left>Dokumente im Webdav-Repository</th>
-  </tr>
-    <table width=100%>
-      <td align=left width=30%><b>Dateiname</b></td>
-      <td align=left width=70%><b>Webdavlink</b></td>
-|;
-    foreach my $file (@{ $form->{WEBDAV} }) {
-      $webdav_list .= qq|
-      <tr>
-        <td align="left">$file->{name}</td>
-        <td align="left"><a href="$file->{link}">$file->{type}</a></td>
-      </tr>
-|;
-    }
-    $webdav_list .= qq|
-    </table>
-  </tr>
-|;
-
-    print $webdav_list;
-  }
-  print qq|
-  <tr>
-    <td colspan=$colspan>
-      <table width=100%>
-        <tr>
-         <th colspan=6 class=listheading>| . $locale->text('Payments') . qq|</th>
-       </tr>
-|;
-
-  my @column_index;
-  if ($form->{currency} eq $form->{defaultcurrency}) {
-    @column_index = qw(datepaid source memo paid AP_paid);
-  } else {
-    @column_index = qw(datepaid source memo paid exchangerate AP_paid);
+    $form->{follow_ups}            = FU->follow_ups('trans_id' => $form->{id}) || [];
+    $form->{follow_ups_unfinished} = ( sum map { $_->{due} * 1 } @{ $form->{follow_ups} } ) || 0;
   }
 
-  my %column_data;
-  $column_data{datepaid}     = "<th>" . $locale->text('Date') . "</th>";
-  $column_data{paid}         = "<th>" . $locale->text('Amount') . "</th>";
-  $column_data{exchangerate} = "<th>" . $locale->text('Exch') . "</th>";
-  $column_data{AP_paid}      = "<th>" . $locale->text('Account') . "</th>";
-  $column_data{source}       = "<th>" . $locale->text('Source') . "</th>";
-  $column_data{memo}         = "<th>" . $locale->text('Memo') . "</th>";
-
-  print qq|
-       <tr>
-|;
-  map { print "$column_data{$_}\n" } @column_index;
-  print qq|
-       </tr>
-|;
-
-  my @triggers  = ();
+  # payments
   my $totalpaid = 0;
-
   $form->{paidaccounts}++ if ($form->{"paid_$form->{paidaccounts}"});
-  for my $i (1 .. $form->{paidaccounts}) {
-
-    print qq|
-       <tr>
-|;
+  $form->{paid_indices} = [ 1 .. $form->{paidaccounts} ];
 
+  for my $i (1 .. $form->{paidaccounts}) {
     $form->{"selectAP_paid_$i"} = $form->{selectAP_paid};
-    $form->{"selectAP_paid_$i"} =~
-      s/option>\Q$form->{"AP_paid_$i"}\E/option selected>$form->{"AP_paid_$i"}/;
-
+    $form->{"selectAP_paid_$i"} =~ s/option>\Q$form->{"AP_paid_$i"}\E/option selected>$form->{"AP_paid_$i"}/;
     $totalpaid += $form->{"paid_$i"};
-
-    # format amounts
-    if ($form->{"paid_$i"}) {
-      $form->{"paid_$i"} =
-        $form->format_amount(\%myconfig, $form->{"paid_$i"}, 2);
-    }
-    $form->{"exchangerate_$i"} =
-      $form->format_amount(\%myconfig, $form->{"exchangerate_$i"});
-
-    my $exchangerate = qq|&nbsp;|;
-    if ($form->{currency} ne $form->{defaultcurrency}) {
-      if ($form->{"forex_$i"}) {
-        $exchangerate =
-          qq|<input type=hidden name="exchangerate_$i" value=$form->{"exchangerate_$i"}>$form->{"exchangerate_$i"}|;
-      } else {
-        $exchangerate =
-          qq|<input name="exchangerate_$i" size=10 value=$form->{"exchangerate_$i"}>|;
-      }
-    }
-    $exchangerate .= qq|
-<input type=hidden name="forex_$i" value=$form->{"forex_$i"}>
-|;
-
-    $column_data{"paid_$i"} =
-      qq|<td align=center><input name="paid_$i" size=11 value="$form->{"paid_$i"}" onBlur=\"check_right_number_format(this)\"></td>|;
-    $column_data{"exchangerate_$i"} = qq|<td align=center>$exchangerate</td>|;
-    $column_data{"AP_paid_$i"}      =
-      qq|<td align=center><select name="AP_paid_$i">$form->{"selectAP_paid_$i"}</select></td>|;
-    $column_data{"datepaid_$i"} =
-      qq|<td align=center><input name="datepaid_$i" id="datepaid_$i" size=11 title="$myconfig{dateformat}" value="$form->{"datepaid_$i"}" onBlur=\"check_right_date_format(this)\">
-         <input type="button" name="datepaid_$i" id="trigger_datepaid_$i" value="?"></td>|;
-    $column_data{"source_$i"} =
-      qq|<td align=center><input name="source_$i" size=11 value="$form->{"source_$i"}"></td>|;
-    $column_data{"memo_$i"} =
-      qq|<td align=center><input name="memo_$i" size=11 value="$form->{"memo_$i"}"></td>|;
-
-    map { print qq|$column_data{"${_}_$i"}\n| } @column_index;
-
-    print qq|
-       </tr>
-|;
-    push(@triggers, "datepaid_$i", "BL", "trigger_datepaid_$i");
-  }
-
-  my $paid_missing = $form->{oldinvtotal} - $totalpaid;
-
-  print qq|
-        <tr>
-          <td></td>
-          <td></td>
-          <td align="center">| . $locale->text('Total') . qq|</td>
-          <td align="center">| . H($form->format_amount(\%myconfig, $totalpaid, 2)) . qq|</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td></td>
-          <td align="center">| . $locale->text('Missing amount') . qq|</td>
-          <td align="center">| . H($form->format_amount(\%myconfig, $paid_missing, 2)) . qq|</td>
-        </tr>
-
-           <input type=hidden name=oldinvtotal value=$form->{oldinvtotal}>
-           <input type=hidden name=paidaccounts value=$form->{paidaccounts}>
-           <input type=hidden name=selectAP_paid value="$form->{selectAP_paid}">
-      </table>
-    </td>
-  </tr>
-  <tr>
-    <td><hr size=3 noshade></td>
-  </tr>
-</table>
-<br>
-|;
-
-  my $invdate  = $form->datetonum($form->{invdate},  \%myconfig);
-  my $closedto = $form->datetonum($form->{closedto}, \%myconfig);
-
-  print qq|<input class=submit type=submit name=action id=update_button value="|
-    . $locale->text('Update') . qq|">
-|;
-
-  if ($form->{id}) {
-    my $show_storno = !$form->{storno} && !IS->has_storno(\%myconfig, $form, "ap") && (($totalpaid == 0) || ($totalpaid eq ""));
-
-    print qq|<input class=submit type=submit name=action value="|
-      . $locale->text('Post Payment') . qq|">
-|;
-    print qq|<input class=submit type=submit name=action value="|
-      . $locale->text('Storno') . qq|">
-| if ($show_storno);
-    if ($form->{radier}) {
-    print qq|
-    <input class=submit type=submit name=action value="|
-      . $locale->text('Delete') . qq|">
-|;
-  }
-    print qq|<input class=submit type=submit name=action value="|
-      . $locale->text('Use As Template') . qq|">
-        <input type="button" class="submit" onclick="follow_up_window()" value="|
-      . $locale->text('Follow-Up')
-      . qq|">
-|;
-
-  }
-
-  if (!$form->{id} && ($invdate > $closedto)) {
-    print qq| <input class=submit type=submit name=action value="|
-      . $locale->text('Post') . qq|"> | .
-      NTI($cgi->submit('-name' => 'action', '-value' => $locale->text('Save draft'),
-                       '-class' => 'submit'));
   }
 
-  print $form->write_trigger(\%myconfig, scalar(@triggers) / 3, @triggers);
-  $form->hide_form(qw(rowcount callback draft_id draft_description vendor_discount));
-
-  # button for saving history
-  if($form->{id} ne "") {
-    print qq|
-         <input type="button" class="submit" onclick="set_history_window(|
-         . Q($form->{id})
-         . qq|);" name="history" id="history" value="|
-         . $locale->text('history')
-         . qq|">|;
-  }
-  # /button for saving history
-  # mark_as_paid button
-  if($form->{id} ne "") {
-    print qq| <input type="submit" class="submit" name="action" value="|
-          . $locale->text('mark as paid') . qq|">|;
-  }
-  # /mark_as_paid button
-print qq|</form>
-</body>
-</html>
-|;
+  print $form->parse_html_template('ir/form_footer', {
+    is_type_credit_note => ($form->{type} eq "credit_note"),
+    totalpaid           => $totalpaid,
+    paid_missing        => $form->{invtotal} - $totalpaid,
+    show_storno         => $form->{id} && !$form->{storno} && !IS->has_storno(\%myconfig, $form, "ap") && !$totalpaid,
+    show_delete         => ($form->current_date(\%myconfig) eq $form->{gldate}),
+  });
+##print $form->parse_html_template('ir/_payments'); # parser
+##print $form->parse_html_template('webdav/_list'); # parser
 
   $main::lxdebug->leave_sub();
 }
@@ -944,7 +433,7 @@ sub update {
 
   $main::auth->assert('vendor_invoice_edit');
 
-  map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } qw(exchangerate creditlimit creditremaining);
+#  map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } qw(exchangerate creditlimit creditremaining);
 
   &check_name('vendor');
 
@@ -986,9 +475,8 @@ sub update {
         # override sellprice if there is one entered
         my $sellprice = $form->parse_amount(\%myconfig, $form->{"sellprice_$i"});
 
-       # ergaenzung fuer bug 736 Lieferanten-Rabatt auch in Einkaufsrechnungen vorbelegen jb
-        $form->{"discount_$i"} = $form->format_amount(\%myconfig,
-                                                     $form->{vendor_discount} * 100 );
+        # ergaenzung fuer bug 736 Lieferanten-Rabatt auch in Einkaufsrechnungen vorbelegen jb
+        $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{vendor_discount} * 100 );
         map { $form->{item_list}[$i]{$_} =~ s/\"/&quot;/g } qw(partnumber description unit);
         map { $form->{"${_}_$i"} = $form->{item_list}[0]{$_} } keys %{ $form->{item_list}[0] };
 
@@ -1125,14 +613,14 @@ sub post_payment {
   ($form->{AP})      = split /--/, $form->{AP};
   ($form->{AP_paid}) = split /--/, $form->{AP_paid};
   if (IR->post_payment(\%myconfig, \%$form)){
-       if (!exists $form->{addition} && $form->{id} ne "") {
-               # saving the history
+    if (!exists $form->{addition} && $form->{id} ne "") {
+      # saving the history
       $form->{snumbers} = qq|invnumber_| . $form->{invnumber};
-               $form->{addition} = "PAYMENT POSTED";
+      $form->{addition} = "PAYMENT POSTED";
       $form->{what_done} = $form->{currency} . qq| | . $form->{paid} . qq| | . $locale->text("POSTED");
-               $form->save_history($form->dbconnect(\%myconfig));
-               # /saving the history
-       }
+      $form->save_history($form->dbconnect(\%myconfig));
+      # /saving the history
+    }
 
     $form->redirect($locale->text('Payment posted!'));
   }
@@ -1218,16 +706,16 @@ sub post {
 
   relink_accounts();
   if (IR->post_invoice(\%myconfig, \%$form)){
-       # saving the history
-       if(!exists $form->{addition} && $form->{id} ne "") {
+    # saving the history
+    if(!exists $form->{addition} && $form->{id} ne "") {
       $form->{snumbers} = qq|invnumber_| . $form->{invnumber};
       $form->{addition} = "POSTED";
-               #$form->{what_done} = $locale->text("Rechnungsnummer") . qq| | . $form->{invnumber};
-               $form->save_history($form->dbconnect(\%myconfig));
-       }
-       # /saving the history
+      #$form->{what_done} = $locale->text("Rechnungsnummer") . qq| | . $form->{invnumber};
+      $form->save_history($form->dbconnect(\%myconfig));
+    }
+    # /saving the history
     remove_draft() if $form->{remove_draft};
-       $form->redirect(  $locale->text('Invoice')
+    $form->redirect(  $locale->text('Invoice')
                   . " $form->{invnumber} "
                   . $locale->text('posted!'));
   }
@@ -1288,8 +776,8 @@ sub yes {
     # saving the history
     if(!exists $form->{addition}) {
       $form->{snumbers} = qq|invnumber_| . $form->{invnumber};
-         $form->{addition} = "DELETED";
-         $form->save_history($form->dbconnect(\%myconfig));
+      $form->{addition} = "DELETED";
+      $form->save_history($form->dbconnect(\%myconfig));
     }
     # /saving the history
     $form->redirect($locale->text('Invoice deleted!'));
index 4a37b7e..b90209f 100644 (file)
@@ -293,7 +293,6 @@ sub form_header {
   $form->{salesman_id} = $form->{old_salesman_id} if $form->{old_salesman_id};
 
   $form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
-  $form->{radier}          = ($form->current_date(\%myconfig) eq $form->{gldate}) ? 1 : 0;
 
   my $set_duedate_url = "$form->{script}?action=set_duedate";
 
@@ -312,6 +311,7 @@ sub form_header {
                    "taxzones"      => "ALL_TAXZONES",
                    "currencies"    => "ALL_CURRENCIES",
                    "customers"     => "ALL_CUSTOMERS",
+                   "departments"   => "all_departments",
                    "price_factors" => "ALL_PRICE_FACTORS");
 
   $TMPL_VAR{sales_employee_labels} = sub { $_[0]->{name} || $_[0]->{login} };
@@ -917,10 +917,10 @@ sub yes {
 
   if (IS->delete_invoice(\%myconfig, \%$form, $main::spool)) {
     # saving the history
-       if(!exists $form->{addition}) {
+    if(!exists $form->{addition}) {
     $form->{snumbers} = qq|invnumber_| . $form->{invnumber};
-         $form->{addition} = "DELETED";
-         $form->save_history($form->dbconnect(\%myconfig));
+      $form->{addition} = "DELETED";
+      $form->save_history($form->dbconnect(\%myconfig));
     }
     # /saving the history
     $form->redirect($locale->text('Invoice deleted!'));
index b5a895a..3e01a31 100644 (file)
@@ -65,37 +65,37 @@ if (seconds < 10) {seconds="0"+seconds}
 var thistime = hours+":"+minutes
 
 function writeclock() {
-       i_clock++
-       if (document.all \|\| document.getElementById \|\| document.layers) {
-               clockid[i_clock]="clock"+i_clock
-               document.write("<font family=arial size=2><span id='"+clockid[i_clock]+"' style='position:relative'>"+thistime+"</span></font>")
-       }
+  i_clock++
+  if (document.all \|\| document.getElementById \|\| document.layers) {
+    clockid[i_clock]="clock"+i_clock
+    document.write("<font family=arial size=2><span id='"+clockid[i_clock]+"' style='position:relative'>"+thistime+"</span></font>")
+  }
 }
 
 function clockon() {
-       thistime= new Date()
-       hours=thistime.getHours()
-       minutes=thistime.getMinutes()
-       seconds=thistime.getSeconds()
-       if (eval(hours) <10) {hours="0"+hours}
-       if (eval(minutes) < 10) {minutes="0"+minutes}
-       if (seconds < 10) {seconds="0"+seconds}
-       //thistime = hours+":"+minutes+":"+seconds
-       thistime = hours+":"+minutes
+  thistime= new Date()
+  hours=thistime.getHours()
+  minutes=thistime.getMinutes()
+  seconds=thistime.getSeconds()
+  if (eval(hours) <10) {hours="0"+hours}
+  if (eval(minutes) < 10) {minutes="0"+minutes}
+  if (seconds < 10) {seconds="0"+seconds}
+  //thistime = hours+":"+minutes+":"+seconds
+  thistime = hours+":"+minutes
 
-       if (document.all) {
-               for (i=0;i<=clockid.length-1;i++) {
-                       var thisclock=eval(clockid[i])
-                       thisclock.innerHTML=thistime
-               }
-       }
+  if (document.all) {
+    for (i=0;i<=clockid.length-1;i++) {
+      var thisclock=eval(clockid[i])
+      thisclock.innerHTML=thistime
+    }
+  }
 
-       if (document.getElementById) {
-               for (i=0;i<=clockid.length-1;i++) {
-                       document.getElementById(clockid[i]).innerHTML=thistime
-               }
-       }
-       var timer=setTimeout("clockon()",60000)
+  if (document.getElementById) {
+    for (i=0;i<=clockid.length-1;i++) {
+      document.getElementById(clockid[i]).innerHTML=thistime
+    }
+  }
+  var timer=setTimeout("clockon()",60000)
 }
 window.onload=clockon
 //-->
@@ -107,12 +107,12 @@ print qq|
 <body bgcolor="#ffffff" text="#ffffff" link="#ffffff" vlink="#ffffff" alink="#ffffff" topmargin="0" leftmargin="0"  marginwidth="0" marginheight="0" style="background-image: url('image/fade.png'); background-repeat:repeat-x;">
 
 <table border="0" width="100%" background="image/bg_titel.gif" cellpadding="0" cellspacing="0">
-       <tr>
-               <td  style="color:white; font-family:verdana,arial,sans-serif; font-size: 12px;"> &nbsp; [<a href="JavaScript:top.main_window.print()">| . $locale->text('drucken') . qq|</a>]</td>
-               <td align="right" style="vertical-align:middle; color:white; font-family:verdana,arial,sans-serif; font-size: 12px;" nowrap>|
+  <tr>
+    <td  style="color:white; font-family:verdana,arial,sans-serif; font-size: 12px;"> &nbsp; [<a href="JavaScript:top.main_window.print()">| . $locale->text('drucken') . qq|</a>]</td>
+    <td align="right" style="vertical-align:middle; color:white; font-family:verdana,arial,sans-serif; font-size: 12px;" nowrap>|
   . $login . $datum . qq| <script>writeclock()</script>&nbsp;
-               </td>
-       </tr>
+    </td>
+  </tr>
 </table>
 </body>
 </html>
index f4455d6..ef7b2b8 100644 (file)
@@ -181,152 +181,152 @@ var isNS4 = (document.layers ? true : false);
 //var KO = (navigator.appName=="Konqueror" \|\| navigator.appName=="Opera") ;
 var KO = ((navigator.userAgent.indexOf('Opera',0) != -1) \|\| (navigator.userAgent.indexOf('Konqueror',0) != -1));
 function getRef(id) {
-       if (isDOM) return document.getElementById(id);
-       if (isIE4) return document.all[id];
-       if (isNS4) return document.layers[id];
+  if (isDOM) return document.getElementById(id);
+  if (isIE4) return document.all[id];
+  if (isNS4) return document.layers[id];
 }
 function getSty(id) {
-       return (isNS4 ? getRef(id) : getRef(id).style);
+  return (isNS4 ? getRef(id) : getRef(id).style);
 }
 var popTimer = 0;
 var litNow = new Array();
 function popOver(menuNum, itemNum) {
-       if (KO) document.getElementById("win1").style.visibility = "hidden";
-       clearTimeout(popTimer);
-       hideAllBut(menuNum);
-       litNow = getTree(menuNum, itemNum);
-       changeCol(litNow, true);
-       targetNum = menu[menuNum][itemNum].target;
-       if (targetNum > 0) {
-               thisX = parseInt(menu[menuNum][0].ref.left) + parseInt(menu[menuNum][itemNum].ref.left);
-               thisY = parseInt(menu[menuNum][0].ref.top) + parseInt(menu[menuNum][itemNum].ref.top);
-               with (menu[targetNum][0].ref) {
-                       left = parseInt(thisX + menu[targetNum][0].x);
-                       top = parseInt(thisY + menu[targetNum][0].y);
-                       visibility = 'visible';
-               }
-       }
+  if (KO) document.getElementById("win1").style.visibility = "hidden";
+  clearTimeout(popTimer);
+  hideAllBut(menuNum);
+  litNow = getTree(menuNum, itemNum);
+  changeCol(litNow, true);
+  targetNum = menu[menuNum][itemNum].target;
+  if (targetNum > 0) {
+    thisX = parseInt(menu[menuNum][0].ref.left) + parseInt(menu[menuNum][itemNum].ref.left);
+    thisY = parseInt(menu[menuNum][0].ref.top) + parseInt(menu[menuNum][itemNum].ref.top);
+    with (menu[targetNum][0].ref) {
+      left = parseInt(thisX + menu[targetNum][0].x);
+      top = parseInt(thisY + menu[targetNum][0].y);
+      visibility = 'visible';
+    }
+  }
 }
 function popOut(menuNum, itemNum) {
-       if ((menuNum == 0) && !menu[menuNum][itemNum].target)
-               hideAllBut(0)
-               if (KO) document.getElementById("win1").style.visibility = "visible";
-       else
-               popTimer = setTimeout('hideAllBut(0)', 500);
+  if ((menuNum == 0) && !menu[menuNum][itemNum].target)
+    hideAllBut(0)
+    if (KO) document.getElementById("win1").style.visibility = "visible";
+  else
+    popTimer = setTimeout('hideAllBut(0)', 500);
 }
 function getTree(menuNum, itemNum) {
-       itemArray = new Array(menu.length);
-       while(1) {
-               itemArray[menuNum] = itemNum;
-               if (menuNum == 0) return itemArray;
-               itemNum = menu[menuNum][0].parentItem;
-               menuNum = menu[menuNum][0].parentMenu;
-       }
+  itemArray = new Array(menu.length);
+  while(1) {
+    itemArray[menuNum] = itemNum;
+    if (menuNum == 0) return itemArray;
+    itemNum = menu[menuNum][0].parentItem;
+    menuNum = menu[menuNum][0].parentMenu;
+  }
 }
 function changeCol(changeArray, isOver) {
-       for (menuCount = 0; menuCount < changeArray.length; menuCount++) {
-               if (changeArray[menuCount]) {
-                       newCol = isOver ? menu[menuCount][0].overCol : menu[menuCount][0].backCol;
-                       with (menu[menuCount][changeArray[menuCount]].ref) {
-                               if (isNS4) bgColor = newCol;
-                               else backgroundColor = newCol;
-                       }
-               }
-       }
+  for (menuCount = 0; menuCount < changeArray.length; menuCount++) {
+    if (changeArray[menuCount]) {
+      newCol = isOver ? menu[menuCount][0].overCol : menu[menuCount][0].backCol;
+      with (menu[menuCount][changeArray[menuCount]].ref) {
+        if (isNS4) bgColor = newCol;
+        else backgroundColor = newCol;
+      }
+    }
+  }
 }
 function hideAllBut(menuNum) {
-       var keepMenus = getTree(menuNum, 1);
-       for (count = 0; count < menu.length; count++)
-               if (!keepMenus[count])
-                       menu[count][0].ref.visibility = 'hidden';
-       changeCol(litNow, false);
+  var keepMenus = getTree(menuNum, 1);
+  for (count = 0; count < menu.length; count++)
+    if (!keepMenus[count])
+      menu[count][0].ref.visibility = 'hidden';
+  changeCol(litNow, false);
 }
 
 function Menu(isVert, popInd, x, y, width, overCol, backCol, borderClass, textClass) {
-       this.isVert = isVert;
-       this.popInd = popInd
-       this.x = x;
-       this.y = y;
-       this.width = width;
-       this.overCol = overCol;
-       this.backCol = backCol;
-       this.borderClass = borderClass;
-       this.textClass = textClass;
-       this.parentMenu = null;
-       this.parentItem = null;
-       this.ref = null;
+  this.isVert = isVert;
+  this.popInd = popInd
+  this.x = x;
+  this.y = y;
+  this.width = width;
+  this.overCol = overCol;
+  this.backCol = backCol;
+  this.borderClass = borderClass;
+  this.textClass = textClass;
+  this.parentMenu = null;
+  this.parentItem = null;
+  this.ref = null;
 }
 function Item(text, href, frame, length, spacing, target) {
-       this.text = text;
-       this.href = href;
-       this.frame = frame;
-       this.length = length;
-       this.spacing = spacing;
-       this.target = target;
-       this.ref = null;
+  this.text = text;
+  this.href = href;
+  this.frame = frame;
+  this.length = length;
+  this.spacing = spacing;
+  this.target = target;
+  this.ref = null;
 }
 function go(link,frame) {
-       tmp=eval("top."+frame);
-       tmp.location=link;
+  tmp=eval("top."+frame);
+  tmp.location=link;
         //top.main_window.location=link;
 }
 function writeMenus() {
-       if (!isDOM && !isIE4 && !isNS4) return;
-       for (currMenu = 0; currMenu < menu.length; currMenu++) with (menu[currMenu][0]) {
-               var str = '', itemX = 0, itemY = 0;
-               for (currItem = 1; currItem < menu[currMenu].length; currItem++) with (menu[currMenu][currItem]) {
-                       var itemID = 'menu' + currMenu + 'item' + currItem;
-                       var w = (isVert ? width : length);
-                       var h = (isVert ? length : width);
-                       if (isDOM \|\| isIE4) {
-                               str += '<div id="' + itemID + '" style="position: absolute; left: ' + itemX + '; top: ' + itemY + '; width: ' + w + '; height: ' + h + '; visibility: inherit; ';
-                               if (backCol) str += 'background: ' + backCol + '; ';
-                               str += '" ';
-                       }
-                       if (isNS4) {
-                               str += '<layer id="' + itemID + '" left="' + itemX + '" top="' + itemY + '" width="' +  w + '" height="' + h + '" visibility="inherit" ';
-                               if (backCol) str += 'bgcolor="' + backCol + '" ';
-                       }
-                       if (borderClass) str += 'class="' + borderClass + '" "';
-                       str += 'onMouseOver="popOver(' + currMenu + ',' + currItem + ')" onMouseOut="popOut(' + currMenu + ',' + currItem + ')">';
-                       str += '<table width="' + (w - 8) + '" border="0" cellspacing="0" cellpadding="' + (!isNS4 && borderClass ? 3 : 0) + '">';
-                       str +='<tr><td class="' + textClass + '" style="cursor:pointer;" align="left" height="' + (h - 7) + '" onClick=\\'go("' + href + '","' + frame + '")\\'>' + text + '</a></td>';
-                       if (target > 0) {
-                               menu[target][0].parentMenu = currMenu;
-                               menu[target][0].parentItem = currItem;
-                               if (popInd) str += '<td class="' + textClass + '" align="right">' + popInd + '</td>';
-                       }
-                       str += '</tr></table>' + (isNS4 ? '</layer>' : '</div>');
-                       if (isVert) itemY += length + spacing;
-                       else itemX += length + spacing;
-               }
-               if (isDOM) {
-                       var newDiv = document.createElement('div');
-                       document.getElementsByTagName('body').item(0).appendChild(newDiv);
-                       newDiv.innerHTML = str;
-                       ref = newDiv.style;
-                       ref.position = 'absolute';
-                       ref.visibility = 'hidden';
-               }
-               if (isIE4) {
-                       document.body.insertAdjacentHTML('beforeEnd', '<div id="menu' + currMenu + 'div" ' + 'style="position: absolute; visibility: hidden">' + str + '</div>');
-                       ref = getSty('menu' + currMenu + 'div');
-               }
-               if (isNS4) {
-                       ref = new Layer(0);
-                       ref.document.write(str);
-                       ref.document.close();
-               }
-               for (currItem = 1; currItem < menu[currMenu].length; currItem++) {
-                       itemName = 'menu' + currMenu + 'item' + currItem;
-                       if (isDOM \|\| isIE4) menu[currMenu][currItem].ref = getSty(itemName);
-                       if (isNS4) menu[currMenu][currItem].ref = ref.document[itemName];
-               }
-       }
-       with(menu[0][0]) {
-               ref.left = x;
-               ref.top = y;
-               ref.visibility = 'visible';
+  if (!isDOM && !isIE4 && !isNS4) return;
+  for (currMenu = 0; currMenu < menu.length; currMenu++) with (menu[currMenu][0]) {
+    var str = '', itemX = 0, itemY = 0;
+    for (currItem = 1; currItem < menu[currMenu].length; currItem++) with (menu[currMenu][currItem]) {
+      var itemID = 'menu' + currMenu + 'item' + currItem;
+      var w = (isVert ? width : length);
+      var h = (isVert ? length : width);
+      if (isDOM \|\| isIE4) {
+        str += '<div id="' + itemID + '" style="position: absolute; left: ' + itemX + '; top: ' + itemY + '; width: ' + w + '; height: ' + h + '; visibility: inherit; ';
+        if (backCol) str += 'background: ' + backCol + '; ';
+        str += '" ';
+      }
+      if (isNS4) {
+        str += '<layer id="' + itemID + '" left="' + itemX + '" top="' + itemY + '" width="' +  w + '" height="' + h + '" visibility="inherit" ';
+        if (backCol) str += 'bgcolor="' + backCol + '" ';
+      }
+      if (borderClass) str += 'class="' + borderClass + '" "';
+      str += 'onMouseOver="popOver(' + currMenu + ',' + currItem + ')" onMouseOut="popOut(' + currMenu + ',' + currItem + ')">';
+      str += '<table width="' + (w - 8) + '" border="0" cellspacing="0" cellpadding="' + (!isNS4 && borderClass ? 3 : 0) + '">';
+      str +='<tr><td class="' + textClass + '" style="cursor:pointer;" align="left" height="' + (h - 7) + '" onClick=\\'go("' + href + '","' + frame + '")\\'>' + text + '</a></td>';
+      if (target > 0) {
+        menu[target][0].parentMenu = currMenu;
+        menu[target][0].parentItem = currItem;
+        if (popInd) str += '<td class="' + textClass + '" align="right">' + popInd + '</td>';
+      }
+      str += '</tr></table>' + (isNS4 ? '</layer>' : '</div>');
+      if (isVert) itemY += length + spacing;
+      else itemX += length + spacing;
+    }
+    if (isDOM) {
+      var newDiv = document.createElement('div');
+      document.getElementsByTagName('body').item(0).appendChild(newDiv);
+      newDiv.innerHTML = str;
+      ref = newDiv.style;
+      ref.position = 'absolute';
+      ref.visibility = 'hidden';
+    }
+    if (isIE4) {
+      document.body.insertAdjacentHTML('beforeEnd', '<div id="menu' + currMenu + 'div" ' + 'style="position: absolute; visibility: hidden">' + str + '</div>');
+      ref = getSty('menu' + currMenu + 'div');
+    }
+    if (isNS4) {
+      ref = new Layer(0);
+      ref.document.write(str);
+      ref.document.close();
+    }
+    for (currItem = 1; currItem < menu[currMenu].length; currItem++) {
+      itemName = 'menu' + currMenu + 'item' + currItem;
+      if (isDOM \|\| isIE4) menu[currMenu][currItem].ref = getSty(itemName);
+      if (isNS4) menu[currMenu][currItem].ref = ref.document[itemName];
+    }
+  }
+  with(menu[0][0]) {
+    ref.left = x;
+    ref.top = y;
+    ref.visibility = 'visible';
    }
 }
 var menu = new Array();
@@ -346,12 +346,12 @@ nsResizeHandler = new Function('if (popOldWidth != window.innerWidth) location.r
 if (isNS4) document.captureEvents(Event.CLICK);
 document.onclick = clickHandle;
 function clickHandle(evt) {
-       if (isNS4) document.routeEvent(evt);
-       hideAllBut(0);
-       if (KO) document.getElementById("win1").style.visibility = "visible";
+  if (isNS4) document.routeEvent(evt);
+  hideAllBut(0);
+  if (KO) document.getElementById("win1").style.visibility = "visible";
 }
 function moveRoot() {
-       with(menu[0][0].ref) left = ((parseInt(left) < 100) ? 100 : 5);
+  with(menu[0][0].ref) left = ((parseInt(left) < 100) ? 100 : 5);
 }
 //  End -->
 </script>
@@ -399,11 +399,11 @@ sub section_menu {
 
       # Untermen
       if ($mlz{"s$ml"} > 1) {
-               $z++;
-               $sm = 1;
+        $z++;
+        $sm = 1;
       } else {
-               $z = $sm;
-               $mlz{"s$ml"}++;
+        $z = $sm;
+        $mlz{"s$ml"}++;
       }
       print
         qq|menu[$mlz{$ml}][$z] = new Item('$label', '#', '', defLength, 0, |
@@ -435,7 +435,7 @@ sub section_menu {
         $sm    = 1;
         my $breit = 15 + length($label) * 6;
         print
-          qq|menu[0][$mm] = new Item('  $label', '#', '', $breit, 10, $pm);    \n|;
+          qq|menu[0][$mm] = new Item('  $label', '#', '', $breit, 10, $pm); \n|;
         print qq|menu[$pm] = new Array();\n|;
         print
           qq|menu[$pm][0] = new Menu(true, '>', 0, 20, 180, defOver, defBack, 'itemBorder', 'itemText');\n|;
index f05bcfb..9cc570a 100644 (file)
@@ -452,10 +452,10 @@ sub form_footer {
         $form->{"${item}_total"} = $form->format_amount(\%myconfig, $form->{"${item}_total"}, 2);
 
         $TMPL_VAR{tax} .= qq|
-             <tr>
-               <th align=right>$form->{"${item}_description"}&nbsp;| . $form->{"${item}_rate"} * 100 .qq|%</th>
-               <td align=right>$form->{"${item}_total"}</td>
-             </tr> |;
+              <tr>
+                <th align=right>$form->{"${item}_description"}&nbsp;| . $form->{"${item}_rate"} * 100 .qq|%</th>
+                <td align=right>$form->{"${item}_total"}</td>
+              </tr> |;
       }
     }
 
@@ -470,14 +470,14 @@ sub form_footer {
         $form->{"${item}_netto"} = $form->format_amount(\%myconfig, $form->{"${item}_netto"}, 2);
 
         $TMPL_VAR{tax} .= qq|
-             <tr>
-               <th align=right>Enthaltene $form->{"${item}_description"}&nbsp;| . $form->{"${item}_rate"} * 100 .qq|%</th>
-               <td align=right>$form->{"${item}_total"}</td>
-             </tr>
-             <tr>
-               <th align=right>Nettobetrag</th>
-               <td align=right>$form->{"${item}_netto"}</td>
-             </tr> |;
+              <tr>
+                <th align=right>Enthaltene $form->{"${item}_description"}&nbsp;| . $form->{"${item}_rate"} * 100 .qq|%</th>
+                <td align=right>$form->{"${item}_total"}</td>
+              </tr>
+              <tr>
+                <th align=right>Nettobetrag</th>
+                <td align=right>$form->{"${item}_netto"}</td>
+              </tr> |;
       }
     }
   }
@@ -552,7 +552,7 @@ sub update {
     my $rows = scalar @{ $form->{item_list} };
 
     # hier ist das problem fuer bug 817 $form->{discount} wird nicht durchgeschliffen
-    # ferner fallunterscheidung fuer verkauf oder einkauf s.a. bug 736 jb 04.05.2009
+    # ferner fallunterscheidung fuer verkauf oder einkauf s.a. bug 736 jb 04.05.2009
     # select discount as vendor_discount from vendor ||
     # select discount as customer_discount from customer
     $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"$form->{vc}_discount"} * 100);
@@ -1059,8 +1059,8 @@ sub save_and_close {
   # saving the history
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber};
-       $form->{addition} = "SAVED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "SAVED";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
 
@@ -1166,8 +1166,8 @@ sub save {
   # saving the history
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber};
-       $form->{addition} = "SAVED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "SAVED";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
 
@@ -1254,8 +1254,8 @@ sub delete_order_quotation {
     # saving the history
     if(!exists $form->{addition}) {
       $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber};
-         $form->{addition} = "DELETED";
-         $form->save_history($form->dbconnect(\%myconfig));
+      $form->{addition} = "DELETED";
+      $form->save_history($form->dbconnect(\%myconfig));
     }
     # /saving the history
     $form->info($msg);
@@ -1460,16 +1460,16 @@ sub backorder_exchangerate {
     <td>
       <table>
         <tr>
-         <th align=right>| . $locale->text('Currency') . qq|</th>
-         <td>$form->{currency}</td>
-       </tr>
-       <tr>
-         <th align=right>| . $locale->text('Date') . qq|</th>
-         <td>$orddate</td>
-       </tr>
+          <th align=right>| . $locale->text('Currency') . qq|</th>
+          <td>$form->{currency}</td>
+        </tr>
+        <tr>
+          <th align=right>| . $locale->text('Date') . qq|</th>
+          <td>$orddate</td>
+        </tr>
         <tr>
-         <th align=right>| . $locale->text('Exchangerate') . qq|</th>
-         <td><input name=exchangerate size=11></td>
+          <th align=right>| . $locale->text('Exchangerate') . qq|</th>
+          <td><input name=exchangerate size=11></td>
         </tr>
       </table>
     </td>
index 4d06f52..e003e07 100644 (file)
@@ -101,10 +101,10 @@ sub search {
     $form->{title} = $locale->text('Groups');
 
     $number = qq|
-       <tr>
-         <th align=right width=1%>| . $locale->text('Group') . qq|</th>
-         <td><input name=partsgroup size=20></td>
-       </tr>
+  <tr>
+    <th align=right width=1%>| . $locale->text('Group') . qq|</th>
+    <td><input name=partsgroup size=20></td>
+  </tr>
 |;
 
   }
@@ -116,10 +116,10 @@ sub search {
     $form->{title} = $locale->text('Pricegroup');
 
     $number = qq|
-       <tr>
-         <th align=right width=1%>| . $locale->text('Pricegroup') . qq|</th>
-         <td><input name=pricegroup size=20></td>
-       </tr>
+  <tr>
+    <th align=right width=1%>| . $locale->text('Pricegroup') . qq|</th>
+    <td><input name=pricegroup size=20></td>
+  </tr>
 |;
 
   }
@@ -143,13 +143,11 @@ sub search {
     <td>
       <table width=100%>
         $number
-       <tr>
-         <td></td>
-         <td><input name=status class=radio type=radio value=all checked>&nbsp;|
-    . $locale->text('All') . qq|
-         <input name=status class=radio type=radio value=orphaned>&nbsp;|
-    . $locale->text('Orphaned') . qq|</td>
-       </tr>
+        <tr>
+          <td></td>
+          <td><input name=status class=radio type=radio value=all checked>&nbsp;| . $locale->text('All') . qq|
+          <input name=status class=radio type=radio value=orphaned>&nbsp;| . $locale->text('Orphaned') . qq|</td>
+        </tr>
       </table>
     </td>
   </tr>
@@ -196,8 +194,8 @@ sub save {
   # saving the history
   if(!exists $form->{addition} && $form->{id} ne "") {
     $form->{snumbers} = qq|projectnumber_| . $form->{projectnumber};
-       $form->{addition} = "SAVED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "SAVED";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
 
@@ -224,8 +222,8 @@ sub delete {
   # saving the history
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|projectnumber_| . $form->{projectnumber};
-       $form->{addition} = "DELETED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "DELETED";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
   $main::lxdebug->leave_sub();
@@ -283,7 +281,7 @@ sub partsgroup_report {
   <tr>
     <td>
       <table width=100%>
-       <tr class=listheading>
+        <tr class=listheading>
 |;
 
   map { print "$column_header{$_}\n" } @column_index;
@@ -378,11 +376,10 @@ sub form_partsgroup_header {
   <tr>
     <td>
       <table width=100%>
-       <tr>
-         <th align=right>| . $locale->text('Group') . qq|</th>
-
+        <tr>
+          <th align=right>| . $locale->text('Group') . qq|</th>
           <td><input name=partsgroup size=30 value="$form->{partsgroup}"></td>
-       </tr>
+        </tr>
       </table>
     </td>
   </tr>
@@ -419,11 +416,11 @@ sub form_partsgroup_footer {
 
 # button for saving history
 print qq|
-       <input type=button onclick=set_history_window(|
-       . $form->{id}
-       . qq|); name=history id=history value=|
-       . $locale->text('history')
-       . qq|>|;
+    <input type=button onclick=set_history_window(|
+    . $form->{id}
+    . qq|); name=history id=history value=|
+    . $locale->text('history')
+    . qq|>|;
 # /button for saving history
   print qq|
 </form>
@@ -491,7 +488,7 @@ sub pricegroup_report {
   <tr>
     <td>
       <table width=100%>
-       <tr class=listheading>
+        <tr class=listheading>
 |;
 
   map { print "$column_header{$_}\n" } @column_index;
@@ -589,10 +586,10 @@ sub form_pricegroup_header {
   <tr>
     <td>
       <table width=100%>
-       <tr>
-         <th align=right>| . $locale->text('Preisgruppe') . qq|</th>
+        <tr>
+          <th align=right>| . $locale->text('Preisgruppe') . qq|</th>
           <td><input name=pricegroup size=30 value="$form->{pricegroup}"></td>
-       </tr>
+        </tr>
       </table>
     </td>
   </tr>
@@ -631,11 +628,11 @@ sub form_pricegroup_footer {
 
 # button for saving history
 print qq|
-       <input type=button onclick=set_history_window(|
-       . $form->{id}
-       . qq|); name=history id=history value=|
-       . $locale->text('history')
-       . qq|>|;
+    <input type=button onclick=set_history_window(|
+    . $form->{id}
+    . qq|); name=history id=history value=|
+    . $locale->text('history')
+    . qq|>|;
 # /button for saving history
   print qq|
 </form>
index d340ddb..0e74d53 100644 (file)
@@ -234,8 +234,8 @@ sub save {
   if(!exists $form->{addition} && $project->{id} ne "") {
     $form->{id}       = $project->{id};
     $form->{snumbers} = qq|projectnumber_| . $project->{projectnumber};
-       $form->{addition} = "SAVED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "SAVED";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
 
@@ -277,8 +277,8 @@ sub delete {
   # saving the history
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|projectnumber_| . $project->{projectnumber};
-       $form->{addition} = "DELETED";
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "DELETED";
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
 
index df360ad..0f01ac9 100644 (file)
@@ -76,19 +76,19 @@ sub reconciliation {
   <tr>
     <td>
       <table>
-       <tr>
-         <th align=right nowrap>| . $locale->text('Account') . qq|</th>
-         <td colspan=3><select name=accno>$selection</select>
-         </td>
-       </tr>
-       <tr>
-         <th align=right>| . $locale->text('From') . qq|</th>
-         <td><input name=fromdate id=fromdate size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\">
-     <input type="button" name="fromdate" id="trigger_fromdate" value="?"></td>
-         <th align=right>| . $locale->text('Until') . qq|</th>
-         <td><input name=todate id=todate size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\">
-     <input type="button" name="todate" id="trigger_todate" value="?"></td>
-       </tr>
+        <tr>
+          <th align=right nowrap>| . $locale->text('Account') . qq|</th>
+          <td colspan=3><select name=accno>$selection</select>
+          </td>
+        </tr>
+        <tr>
+          <th align=right>| . $locale->text('From') . qq|</th>
+          <td><input name=fromdate id=fromdate size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\">
+         <input type="button" name="fromdate" id="trigger_fromdate" value="?"></td>
+          <th align=right>| . $locale->text('Until') . qq|</th>
+          <td><input name=todate id=todate size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\">
+         <input type="button" name="todate" id="trigger_todate" value="?"></td>
+        </tr>
       </table>
     </td>
   </tr>
@@ -203,7 +203,7 @@ sub display_form {
   <tr>
     <td>
       <table width=100%>
-       <tr class=listheading>
+        <tr class=listheading>
 |;
 
   map { print "\n$column_header{$_}" } @column_index;
@@ -227,13 +227,13 @@ sub display_form {
     . $form->format_amount(\%myconfig, $balance, 2, 0) . "</td>";
   my $j = 0;
   print qq|
-       <tr class=listrow$j>
+        <tr class=listrow$j>
 |;
 
   map { print "\n$column_data{$_}" } @column_index;
 
   print qq|
-       </tr>
+        </tr>
 |;
 
   my $cleared;
@@ -292,13 +292,13 @@ sub display_form {
     $j++;
     $j %= 2;
     print qq|
-       <tr class=listrow$j>
+        <tr class=listrow$j>
 |;
 
     map { print "\n$column_data{$_}" } @column_index;
 
     print qq|
-       </tr>
+        </tr>
 |;
 
   }
@@ -314,7 +314,7 @@ sub display_form {
     . $form->format_amount(\%myconfig, $totalcredits, 2, "&nbsp;") . "</th>";
 
   print qq|
-       <tr class=listtotal>
+        <tr class=listtotal>
 |;
 
   map { print "\n$column_data{$_}" } @column_index;
@@ -335,15 +335,14 @@ sub display_form {
   if ($fx) {
     $fx       = $form->format_amount(\%myconfig, $fx, 2, 0);
     $exchdiff = qq|
-               <th align=right nowrap>|
-      . $locale->text('Exchangerate Difference') . qq|</th>
-               <td width=10%></td>
-               <td align=right>$fx</td>
+          <th align=right nowrap>| . $locale->text('Exchangerate Difference') . qq|</th>
+          <td width=10%></td>
+          <td align=right>$fx</td>
 |;
   }
 
   print qq|
-       </tr>
+        </tr>
       </table>
     </td>
   </tr>
@@ -351,34 +350,34 @@ sub display_form {
     <td>
       <table width=100%>
         <tr valign=top>
-         <td>
-           <table>
-             <tr>
-               <th align=right nowrap>| . $locale->text('Cleared Balance') . qq|</th>
-               <td width=10%></td>
-               <td align=right>$clearedbalance</td>
-             </tr>
-             <tr>
-               $exchdiff
-             </tr>
-           </table>
-         </td>
-         <td align=right>
-           <table>
-             <tr>
-               <th align=right nowrap>| . $locale->text('Statement Balance') . qq|</th>
-               <td width=10%></td>
-               <td align=right><input name=statementbalance size=11 value=$form->{statementbalance}></td>
-             </tr>
-             <tr>
-               <th align=right nowrap>| . $locale->text('Difference') . qq|</th>
-               <td width=10%></td>
-               <td align=right><input name=null size=11 value=$difference></td>
-               <input type=hidden name=difference value=$difference>
-             </tr>
-           </table>
-         </td>
-       </tr>
+          <td>
+            <table>
+              <tr>
+                <th align=right nowrap>| . $locale->text('Cleared Balance') . qq|</th>
+                <td width=10%></td>
+                <td align=right>$clearedbalance</td>
+              </tr>
+              <tr>
+                $exchdiff
+              </tr>
+            </table>
+          </td>
+          <td align=right>
+            <table>
+              <tr>
+                <th align=right nowrap>| . $locale->text('Statement Balance') . qq|</th>
+                <td width=10%></td>
+                <td align=right><input name=statementbalance size=11 value=$form->{statementbalance}></td>
+              </tr>
+              <tr>
+                <th align=right nowrap>| . $locale->text('Difference') . qq|</th>
+                <td width=10%></td>
+                <td align=right><input name=null size=11 value=$difference></td>
+                <input type=hidden name=difference value=$difference>
+              </tr>
+            </table>
+          </td>
+        </tr>
       </table>
     </td>
   </tr>
index 5099c89..5164b7f 100644 (file)
@@ -14,8 +14,8 @@
 #
 #  Contributors: Antonio Gallardo <agssa@ibw.com.ni>
 #                Benjamin Lee <benjaminlee@consultant.com>
-#               Philip Reetz <p.reetz@linet-services.de>
-#               Udo Spallek
+#                Philip Reetz <p.reetz@linet-services.de>
+#                Udo Spallek
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -160,10 +160,10 @@ sub report {
   }
 
   my $department = qq|
-       <tr>
-         <th align=right nowrap>| . $locale->text('Department') . qq|</th>
-         <td colspan=3><select name=department>$form->{selectdepartment}</select></td>
-       </tr>
+        <tr>
+          <th align=right nowrap>| . $locale->text('Department') . qq|</th>
+          <td colspan=3><select name=department>$form->{selectdepartment}</select></td>
+        </tr>
 | if $form->{selectdepartment};
 
   $form->get_lists("projects" => { "key" => "ALL_PROJECTS",
@@ -279,30 +279,30 @@ sub report {
 
   if ($form->{report} eq "projects") {
     print qq|
-       <tr>
-         <th align=right nowrap>| . $locale->text('Project') . qq|</th>
-         <td colspan=5><input name=projectnumber size=25</td>
-       </tr>
+        <tr>
+          <th align=right nowrap>| . $locale->text('Project') . qq|</th>
+          <td colspan=5><input name=projectnumber size=25</td>
+        </tr>
         <input type=hidden name=nextsub value=generate_projects>
         <tr>
-         <th align=right>| . $locale->text('From') . qq|</th>
+          <th align=right>| . $locale->text('From') . qq|</th>
           <td>$button1</td>
           <td>$button1_2</td>
-         <th align=right>| . $locale->text('Bis') . qq|</th>
+          <th align=right>| . $locale->text('Bis') . qq|</th>
           <td>$button2</td>
           <td>$button2_2</td>
-       </tr>
+        </tr>
       </table>
     </td>
   </tr>
   <tr>
     <td>
       <table>
-       <tr>
-         <th align=right nowrap>| . $locale->text('Include in Report') . qq|</th>
-         <td><input name=l_heading class=checkbox type=checkbox value=Y>&nbsp;| . $locale->text('Heading') . qq|
-         <input name=l_subtotal class=checkbox type=checkbox value=Y>&nbsp;| . $locale->text('Subtotal') . qq|</td>
-       </tr>
+        <tr>
+          <th align=right nowrap>| . $locale->text('Include in Report') . qq|</th>
+          <td><input name=l_heading class=checkbox type=checkbox value=Y>&nbsp;| . $locale->text('Heading') . qq|
+          <input name=l_subtotal class=checkbox type=checkbox value=Y>&nbsp;| . $locale->text('Subtotal') . qq|</td>
+        </tr>
 
 $jsscript
 |;
@@ -310,86 +310,86 @@ $jsscript
 
   if ($form->{report} eq "income_statement") {
     print qq|
-       <tr>
-         <th align=right nowrap>| . $locale->text('Project') . qq|</th>
-         <td colspan=3>$projectnumber</td>
-       </tr>
+        <tr>
+          <th align=right nowrap>| . $locale->text('Project') . qq|</th>
+          <td colspan=3>$projectnumber</td>
+        </tr>
         <input type=hidden name=nextsub value=generate_income_statement>
 </table>
 <table>
-       <tr>
-         <th align=left><input name=reporttype class=radio type=radio value="custom" checked> | . $locale->text('Customized Report') . qq|</th>
-       </tr>
-       <tr>
-         <th colspan=1>| . $locale->text('Year') . qq|</th>
-         <td><input name=year size=11 title="| . $locale->text('YYYY') . qq|" value="$year"></td>
-       </tr>
+        <tr>
+          <th align=left><input name=reporttype class=radio type=radio value="custom" checked> | . $locale->text('Customized Report') . qq|</th>
+        </tr>
+        <tr>
+          <th colspan=1>| . $locale->text('Year') . qq|</th>
+          <td><input name=year size=11 title="| . $locale->text('YYYY') . qq|" value="$year"></td>
+        </tr>
 |;
 
     print qq|
-       <tr>
-               <td align=right> <b> | . $locale->text('Yearly') . qq|</b> </td>
-               <th align=left>| . $locale->text('Quarterly') . qq|</th>
-               <th align=left colspan=3>| . $locale->text('Monthly') . qq|</th>
-       </tr>
-       <tr>
-               <td align=right>&nbsp; <input name=duetyp class=radio type=radio value="13" "checked"></td>
-               <td><input name=duetyp class=radio type=radio value="A" $checked >&nbsp;1. | . $locale->text('Quarter') . qq|</td>
+        <tr>
+                <td align=right> <b> | . $locale->text('Yearly') . qq|</b> </td>
+                <th align=left>| . $locale->text('Quarterly') . qq|</th>
+                <th align=left colspan=3>| . $locale->text('Monthly') . qq|</th>
+        </tr>
+        <tr>
+                <td align=right>&nbsp; <input name=duetyp class=radio type=radio value="13" "checked"></td>
+                <td><input name=duetyp class=radio type=radio value="A" $checked >&nbsp;1. | . $locale->text('Quarter') . qq|</td>
 |;
     $checked = "";
     print qq|
-               <td><input name=duetyp class=radio type=radio value="1" $checked >&nbsp;| . $locale->text('January') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="1" $checked >&nbsp;| . $locale->text('January') . qq|</td>
 |;
     $checked = "";
     print qq|
-               <td><input name=duetyp class=radio type=radio value="5" $checked >&nbsp;| . $locale->text('May') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="9" $checked >&nbsp;| . $locale->text('September') . qq|</td>
-
-       </tr>
-       <tr>
-               <td align= right>&nbsp;</td>
-               <td><input name=duetyp class=radio type=radio value="B" $checked>&nbsp;2. | . $locale->text('Quarter') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="2" $checked >&nbsp;| . $locale->text('February') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="6" $checked >&nbsp;| . $locale->text('June') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="10" $checked >&nbsp;| . $locale->text('October') . qq|</td>
-       </tr>
-       <tr>
-               <td> &nbsp;</td>
-               <td><input name=duetyp class=radio type=radio value="C" $checked>&nbsp;3. | . $locale->text('Quarter') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="3" $checked >&nbsp;| . $locale->text('March') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="7" $checked >&nbsp;| . $locale->text('July') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="11" $checked >&nbsp;| . $locale->text('November') . qq|</td>
-
-       </tr>
-       <tr>
-               <td> &nbsp;</td>
-               <td><input name=duetyp class=radio type=radio value="D" $checked>&nbsp;4. | . $locale->text('Quarter') . qq|&nbsp;</td>
-               <td><input name=duetyp class=radio type=radio value="4" $checked >&nbsp;| . $locale->text('April') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="8" $checked >&nbsp;| . $locale->text('August') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="12" $checked >&nbsp;| . $locale->text('December') . qq|</td>
-
-       </tr>
-       <tr>
-               <td colspan=5><hr size=3 noshade></td>
-       </tr>
-       <tr>
+                <td><input name=duetyp class=radio type=radio value="5" $checked >&nbsp;| . $locale->text('May') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="9" $checked >&nbsp;| . $locale->text('September') . qq|</td>
+
+        </tr>
+        <tr>
+                <td align= right>&nbsp;</td>
+                <td><input name=duetyp class=radio type=radio value="B" $checked>&nbsp;2. | . $locale->text('Quarter') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="2" $checked >&nbsp;| . $locale->text('February') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="6" $checked >&nbsp;| . $locale->text('June') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="10" $checked >&nbsp;| . $locale->text('October') . qq|</td>
+        </tr>
+        <tr>
+                <td> &nbsp;</td>
+                <td><input name=duetyp class=radio type=radio value="C" $checked>&nbsp;3. | . $locale->text('Quarter') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="3" $checked >&nbsp;| . $locale->text('March') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="7" $checked >&nbsp;| . $locale->text('July') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="11" $checked >&nbsp;| . $locale->text('November') . qq|</td>
+
+        </tr>
+        <tr>
+                <td> &nbsp;</td>
+                <td><input name=duetyp class=radio type=radio value="D" $checked>&nbsp;4. | . $locale->text('Quarter') . qq|&nbsp;</td>
+                <td><input name=duetyp class=radio type=radio value="4" $checked >&nbsp;| . $locale->text('April') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="8" $checked >&nbsp;| . $locale->text('August') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="12" $checked >&nbsp;| . $locale->text('December') . qq|</td>
+
+        </tr>
+        <tr>
+                   <td colspan=5><hr size=3 noshade></td>
+        </tr>
+        <tr>
           <th align=left><input name=reporttype class=radio type=radio value="free" $checked> | . $locale->text('Free report period') . qq|</th>
-         <td align=left colspan=4>| . $locale->text('From') . qq|&nbsp;
-             $button1
+          <td align=left colspan=4>| . $locale->text('From') . qq|&nbsp;
+              $button1
               $button1_2&nbsp;
-             | . $locale->text('Bis') . qq|
+              | . $locale->text('Bis') . qq|
               $button2
               $button2_2&nbsp;
           </td>
         </tr>
-       <tr>
-               <td colspan=5><hr size=3 noshade></td>
-       </tr>
-       <tr>
-         <th align=leftt>| . $locale->text('Method') . qq|</th>
-         <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>| . $locale->text('Accrual') . qq|
-         &nbsp;<input name=method class=radio type=radio value=cash $cash>| . $locale->text('EUR') . qq|</td>
-       </tr>
+        <tr>
+                   <td colspan=5><hr size=3 noshade></td>
+        </tr>
+        <tr>
+          <th align=leftt>| . $locale->text('Method') . qq|</th>
+          <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>| . $locale->text('Accrual') . qq|
+          &nbsp;<input name=method class=radio type=radio value=cash $cash>| . $locale->text('EUR') . qq|</td>
+        </tr>
 
 $jsscript
 |;
@@ -397,87 +397,87 @@ $jsscript
 
   if ($form->{report} eq "bwa") {
     print qq|
-       <tr>
-         <th align=right nowrap>| . $locale->text('Project') . qq|</th>
-         <td colspan=3>$projectnumber</td>
-       </tr>
+        <tr>
+          <th align=right nowrap>| . $locale->text('Project') . qq|</th>
+          <td colspan=3>$projectnumber</td>
+        </tr>
         <input type=hidden name=nextsub value=generate_bwa>
 </table>
 <table>
-       <tr>
-         <th align=left><input name=reporttype class=radio type=radio value="custom" checked> | . $locale->text('Customized Report') . qq|</th>
-       </tr>
-       <tr>
-         <th colspan=1>| . $locale->text('Year') . qq|</th>
-         <td><input name=year size=11 title="| . $locale->text('YYYY') . qq|" value="$year"></td>
-       </tr>
+        <tr>
+          <th align=left><input name=reporttype class=radio type=radio value="custom" checked> | . $locale->text('Customized Report') . qq|</th>
+        </tr>
+        <tr>
+          <th colspan=1>| . $locale->text('Year') . qq|</th>
+          <td><input name=year size=11 title="| . $locale->text('YYYY') . qq|" value="$year"></td>
+        </tr>
 |;
 
     print qq|
-       <tr>
-               <td align=right> <b> | . $locale->text('Yearly') . qq|</b> </td>
-               <th align=left>| . $locale->text('Quarterly') . qq|</th>
-               <th align=left colspan=3>| . $locale->text('Monthly') . qq|</th>
-       </tr>
-       <tr>
-               <td align=right>&nbsp; <input name=duetyp class=radio type=radio value="13"
+        <tr>
+                <td align=right> <b> | . $locale->text('Yearly') . qq|</b> </td>
+                <th align=left>| . $locale->text('Quarterly') . qq|</th>
+                <th align=left colspan=3>| . $locale->text('Monthly') . qq|</th>
+        </tr>
+        <tr>
+                <td align=right>&nbsp; <input name=duetyp class=radio type=radio value="13"
 $checked></td>
-               <td><input name=duetyp class=radio type=radio value="A" $checked >&nbsp;1. | . $locale->text('Quarter') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="A" $checked >&nbsp;1. | . $locale->text('Quarter') . qq|</td>
 |;
     $checked = "checked";
     print qq|
-               <td><input name=duetyp class=radio type=radio value="1" $checked >&nbsp;| . $locale->text('January') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="1" $checked >&nbsp;| . $locale->text('January') . qq|</td>
 |;
     $checked = "";
     print qq|
-               <td><input name=duetyp class=radio type=radio value="5" $checked >&nbsp;| . $locale->text('May') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="9" $checked >&nbsp;| . $locale->text('September') . qq|</td>
-
-       </tr>
-       <tr>
-               <td align= right>&nbsp;</td>
-               <td><input name=duetyp class=radio type=radio value="B" $checked>&nbsp;2. | . $locale->text('Quarter') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="2" $checked >&nbsp;| . $locale->text('February') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="6" $checked >&nbsp;| . $locale->text('June') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="10" $checked >&nbsp;| . $locale->text('October') . qq|</td>
-       </tr>
-       <tr>
-               <td> &nbsp;</td>
-               <td><input name=duetyp class=radio type=radio value="C" $checked>&nbsp;3. | . $locale->text('Quarter') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="3" $checked >&nbsp;| . $locale->text('March') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="7" $checked >&nbsp;| . $locale->text('July') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="11" $checked >&nbsp;| . $locale->text('November') . qq|</td>
-
-       </tr>
-       <tr>
-               <td> &nbsp;</td>
-               <td><input name=duetyp class=radio type=radio value="D" $checked>&nbsp;4. | . $locale->text('Quarter') . qq|&nbsp;</td>
-               <td><input name=duetyp class=radio type=radio value="4" $checked >&nbsp;| . $locale->text('April') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="8" $checked >&nbsp;| . $locale->text('August') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="12" $checked >&nbsp;| . $locale->text('December') . qq|</td>
-
-       </tr>
-       <tr>
-               <td colspan=5><hr size=3 noshade></td>
-       </tr>
-       <tr>
+                <td><input name=duetyp class=radio type=radio value="5" $checked >&nbsp;| . $locale->text('May') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="9" $checked >&nbsp;| . $locale->text('September') . qq|</td>
+
+        </tr>
+        <tr>
+                <td align= right>&nbsp;</td>
+                <td><input name=duetyp class=radio type=radio value="B" $checked>&nbsp;2. | . $locale->text('Quarter') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="2" $checked >&nbsp;| . $locale->text('February') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="6" $checked >&nbsp;| . $locale->text('June') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="10" $checked >&nbsp;| . $locale->text('October') . qq|</td>
+        </tr>
+        <tr>
+                <td> &nbsp;</td>
+                <td><input name=duetyp class=radio type=radio value="C" $checked>&nbsp;3. | . $locale->text('Quarter') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="3" $checked >&nbsp;| . $locale->text('March') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="7" $checked >&nbsp;| . $locale->text('July') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="11" $checked >&nbsp;| . $locale->text('November') . qq|</td>
+
+        </tr>
+        <tr>
+                <td> &nbsp;</td>
+                <td><input name=duetyp class=radio type=radio value="D" $checked>&nbsp;4. | . $locale->text('Quarter') . qq|&nbsp;</td>
+                <td><input name=duetyp class=radio type=radio value="4" $checked >&nbsp;| . $locale->text('April') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="8" $checked >&nbsp;| . $locale->text('August') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="12" $checked >&nbsp;| . $locale->text('December') . qq|</td>
+
+        </tr>
+        <tr>
+                   <td colspan=5><hr size=3 noshade></td>
+        </tr>
+        <tr>
           <th align=left><input name=reporttype class=radio type=radio value="free" $checked> | . $locale->text('Free report period') . qq|</th>
-         <td align=left colspan=4>| . $locale->text('From') . qq|&nbsp;
-             $button1
+          <td align=left colspan=4>| . $locale->text('From') . qq|&nbsp;
+              $button1
               $button1_2&nbsp;
-             | . $locale->text('Bis') . qq|&nbsp;
-             $button2
+              | . $locale->text('Bis') . qq|&nbsp;
+              $button2
               $button2_2
           </td>
         </tr>
-       <tr>
-               <td colspan=5><hr size=3 noshade></td>
-       </tr>
-       <tr>
-         <th align=leftt>| . $locale->text('Method') . qq|</th>
-         <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>| . $locale->text('Accrual') . qq|
-         &nbsp;<input name=method class=radio type=radio value=cash $cash>| . $locale->text('EUR') . qq|</td>
-       </tr>
+        <tr>
+                   <td colspan=5><hr size=3 noshade></td>
+        </tr>
+        <tr>
+          <th align=leftt>| . $locale->text('Method') . qq|</th>
+          <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>| . $locale->text('Accrual') . qq|
+          &nbsp;<input name=method class=radio type=radio value=cash $cash>| . $locale->text('EUR') . qq|</td>
+        </tr>
         <tr>
          <th align=right colspan=4>| . $locale->text('Decimalplaces') . qq|</th>
              <td><input name=decimalplaces size=3 value="2"></td>
@@ -490,40 +490,40 @@ $jsscript
   if ($form->{report} eq "balance_sheet") {
     print qq|
         <input type=hidden name=nextsub value=generate_balance_sheet>
-       <tr>
-         <th align=right>| . $locale->text('as at') . qq|</th>
-         <td>
+        <tr>
+          <th align=right>| . $locale->text('as at') . qq|</th>
+          <td>
             $button1
             $button1_2
           </td>
-         <th align=right nowrap>| . $locale->text('Compare to') . qq|</th>
-         <td>
+          <th align=right nowrap>| . $locale->text('Compare to') . qq|</th>
+          <td>
           $button2
           $button2_2
           </td>
-       </tr>
-       <tr>
-         <th align=right>| . $locale->text('Decimalplaces') . qq|</th>
-         <td><input name=decimalplaces size=3 value="2"></td>
-       </tr>
+        </tr>
+        <tr>
+          <th align=right>| . $locale->text('Decimalplaces') . qq|</th>
+          <td><input name=decimalplaces size=3 value="2"></td>
+        </tr>
       </table>
     </td>
   </tr>
   <tr>
     <td>
       <table>
-       <tr>
-         <th align=right>| . $locale->text('Method') . qq|</th>
-         <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>| . $locale->text('Accrual') . qq|
-         &nbsp;<input name=method class=radio type=radio value=cash $cash>| . $locale->text('EUR') . qq|</td>
-       </tr>
-
-       <tr>
-         <th align=right nowrap>| . $locale->text('Include in Report') . qq|</th>
-         <td><input name=l_heading class=checkbox type=checkbox value=Y>&nbsp;| . $locale->text('Heading') . qq|
-         <input name=l_subtotal class=checkbox type=checkbox value=Y>&nbsp;| . $locale->text('Subtotal') . qq|
-         <input name=l_accno class=checkbox type=checkbox value=Y>&nbsp;| . $locale->text('Account Number') . qq|</td>
-       </tr>
+        <tr>
+          <th align=right>| . $locale->text('Method') . qq|</th>
+          <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>| . $locale->text('Accrual') . qq|
+          &nbsp;<input name=method class=radio type=radio value=cash $cash>| . $locale->text('EUR') . qq|</td>
+        </tr>
+
+        <tr>
+          <th align=right nowrap>| . $locale->text('Include in Report') . qq|</th>
+          <td><input name=l_heading class=checkbox type=checkbox value=Y>&nbsp;| . $locale->text('Heading') . qq|
+          <input name=l_subtotal class=checkbox type=checkbox value=Y>&nbsp;| . $locale->text('Subtotal') . qq|
+          <input name=l_accno class=checkbox type=checkbox value=Y>&nbsp;| . $locale->text('Account Number') . qq|</td>
+        </tr>
 
 $jsscript
 |;
@@ -531,86 +531,86 @@ $jsscript
 
   if ($form->{report} eq "trial_balance") {
     print qq|
-       <tr>
-         <th align=right nowrap>| . $locale->text('Project') . qq|</th>
-         <td colspan=3>$projectnumber</td>
-       </tr>
+        <tr>
+          <th align=right nowrap>| . $locale->text('Project') . qq|</th>
+          <td colspan=3>$projectnumber</td>
+        </tr>
         <input type=hidden name=nextsub value=generate_trial_balance>
 </table>
 <table>
-       <tr>
-         <th align=left><input name=reporttype class=radio type=radio value="custom" checked> | . $locale->text('Customized Report') . qq|</th>
-       </tr>
-       <tr>
-         <th colspan=1>| . $locale->text('Year') . qq|</th>
-         <td><input name=year size=11 title="| . $locale->text('YYYY') . qq|" value="$year"></td>
-       </tr>
+        <tr>
+          <th align=left><input name=reporttype class=radio type=radio value="custom" checked> | . $locale->text('Customized Report') . qq|</th>
+        </tr>
+        <tr>
+          <th colspan=1>| . $locale->text('Year') . qq|</th>
+          <td><input name=year size=11 title="| . $locale->text('YYYY') . qq|" value="$year"></td>
+        </tr>
 |;
 
     print qq|
-       <tr>
-               <td align=right> <b> | . $locale->text('Yearly') . qq|</b> </td>
-               <th align=left>| . $locale->text('Quarterly') . qq|</th>
-               <th align=left colspan=3>| . $locale->text('Monthly') . qq|</th>
-       </tr>
-       <tr>
-               <td align=right>&nbsp; <input name=duetyp class=radio type=radio value="13" $checked></td>
-               <td><input name=duetyp class=radio type=radio value="A" $checked >&nbsp;1. | . $locale->text('Quarter') . qq|</td>
+        <tr>
+                <td align=right> <b> | . $locale->text('Yearly') . qq|</b> </td>
+                <th align=left>| . $locale->text('Quarterly') . qq|</th>
+                <th align=left colspan=3>| . $locale->text('Monthly') . qq|</th>
+        </tr>
+        <tr>
+                <td align=right>&nbsp; <input name=duetyp class=radio type=radio value="13" $checked></td>
+                <td><input name=duetyp class=radio type=radio value="A" $checked >&nbsp;1. | . $locale->text('Quarter') . qq|</td>
 |;
     $checked = "checked";
     print qq|
-               <td><input name=duetyp class=radio type=radio value="1" $checked >&nbsp;| . $locale->text('January') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="1" $checked >&nbsp;| . $locale->text('January') . qq|</td>
 |;
     $checked = "";
     print qq|
-               <td><input name=duetyp class=radio type=radio value="5" $checked >&nbsp;| . $locale->text('May') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="9" $checked >&nbsp;| . $locale->text('September') . qq|</td>
-
-       </tr>
-       <tr>
-               <td align= right>&nbsp;</td>
-               <td><input name=duetyp class=radio type=radio value="B" $checked>&nbsp;2. | . $locale->text('Quarter') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="2" $checked >&nbsp;| . $locale->text('February') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="6" $checked >&nbsp;| . $locale->text('June') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="10" $checked >&nbsp;| . $locale->text('October') . qq|</td>
-       </tr>
-       <tr>
-               <td> &nbsp;</td>
-               <td><input name=duetyp class=radio type=radio value="C" $checked>&nbsp;3. | . $locale->text('Quarter') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="3" $checked >&nbsp;| . $locale->text('March') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="7" $checked >&nbsp;| . $locale->text('July') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="11" $checked >&nbsp;| . $locale->text('November') . qq|</td>
-
-       </tr>
-       <tr>
-               <td> &nbsp;</td>
-               <td><input name=duetyp class=radio type=radio value="D" $checked>&nbsp;4. | . $locale->text('Quarter') . qq|&nbsp;</td>
-               <td><input name=duetyp class=radio type=radio value="4" $checked >&nbsp;| . $locale->text('April') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="8" $checked >&nbsp;| . $locale->text('August') . qq|</td>
-               <td><input name=duetyp class=radio type=radio value="12" $checked >&nbsp;| . $locale->text('December') . qq|</td>
-
-       </tr>
-       <tr>
-               <td colspan=5><hr size=3 noshade></td>
-       </tr>
-       <tr>
+                <td><input name=duetyp class=radio type=radio value="5" $checked >&nbsp;| . $locale->text('May') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="9" $checked >&nbsp;| . $locale->text('September') . qq|</td>
+
+        </tr>
+        <tr>
+                <td align= right>&nbsp;</td>
+                <td><input name=duetyp class=radio type=radio value="B" $checked>&nbsp;2. | . $locale->text('Quarter') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="2" $checked >&nbsp;| . $locale->text('February') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="6" $checked >&nbsp;| . $locale->text('June') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="10" $checked >&nbsp;| . $locale->text('October') . qq|</td>
+        </tr>
+        <tr>
+                <td> &nbsp;</td>
+                <td><input name=duetyp class=radio type=radio value="C" $checked>&nbsp;3. | . $locale->text('Quarter') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="3" $checked >&nbsp;| . $locale->text('March') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="7" $checked >&nbsp;| . $locale->text('July') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="11" $checked >&nbsp;| . $locale->text('November') . qq|</td>
+
+        </tr>
+        <tr>
+                <td> &nbsp;</td>
+                <td><input name=duetyp class=radio type=radio value="D" $checked>&nbsp;4. | . $locale->text('Quarter') . qq|&nbsp;</td>
+                <td><input name=duetyp class=radio type=radio value="4" $checked >&nbsp;| . $locale->text('April') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="8" $checked >&nbsp;| . $locale->text('August') . qq|</td>
+                <td><input name=duetyp class=radio type=radio value="12" $checked >&nbsp;| . $locale->text('December') . qq|</td>
+
+        </tr>
+        <tr>
+                   <td colspan=5><hr size=3 noshade></td>
+        </tr>
+        <tr>
           <th align=left><input name=reporttype class=radio type=radio value="free" $checked> | . $locale->text('Free report period') . qq|</th>
-         <td align=left colspan=4>| . $locale->text('From') . qq|&nbsp;
-             $button1
+          <td align=left colspan=4>| . $locale->text('From') . qq|&nbsp;
+              $button1
               $button1_2&nbsp;
-             | . $locale->text('Bis') . qq|&nbsp;
-             $button2
+              | . $locale->text('Bis') . qq|&nbsp;
+              $button2
               $button2_2
           </td>
         </tr>
-       <tr>
-               <td colspan=5><hr size=3 noshade></td>
-       </tr>
-       <tr>
-         <th align=leftt>| . $locale->text('Method') . qq|</th>
-         <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>| . $locale->text('Accrual') . qq|
-         &nbsp;<input name=method class=radio type=radio value=cash $cash>| . $locale->text('EUR') . qq|</td>
-       </tr>
+        <tr>
+                   <td colspan=5><hr size=3 noshade></td>
+        </tr>
+        <tr>
+          <th align=leftt>| . $locale->text('Method') . qq|</th>
+          <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>| . $locale->text('Accrual') . qq|
+          &nbsp;<input name=method class=radio type=radio value=cash $cash>| . $locale->text('EUR') . qq|</td>
+        </tr>
        <tr>
          <th align=right colspan=4>| . $locale->text('All Accounts') . qq|</th>
              <td><input name=all_accounts type=checkbox value=1></td>
@@ -631,15 +631,15 @@ $jsscript
 
     print qq|
         <input type=hidden name=nextsub value=generate_tax_report>
-       <tr>
-         <th align=right>| . $locale->text('From') . qq|</th>
-         <td><input name=fromdate size=11 title="$myconfig{dateformat}" value=$form->{fromdate}></td>
-         <th align=right>| . $locale->text('Bis') . qq|</th>
-         <td><input name=todate size=11 title="$myconfig{dateformat}"></td>
-       </tr>
-       <tr>
-         <th align=right>| . $locale->text('Report for') . qq|</th>
-         <td colspan=3>
+        <tr>
+          <th align=right>| . $locale->text('From') . qq|</th>
+          <td><input name=fromdate size=11 title="$myconfig{dateformat}" value=$form->{fromdate}></td>
+          <th align=right>| . $locale->text('Bis') . qq|</th>
+          <td><input name=todate size=11 title="$myconfig{dateformat}"></td>
+        </tr>
+        <tr>
+          <th align=right>| . $locale->text('Report for') . qq|</th>
+          <td colspan=3>
 |;
 
     $checked = "checked";
@@ -659,13 +659,13 @@ $jsscript
   <input type=hidden name=db value=$form->{db}>
   <input type=hidden name=sort value=transdate>
 
-         </td>
-       </tr>
-       <tr>
-         <th align=right>| . $locale->text('Method') . qq|</th>
-         <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>| . $locale->text('Accrual') . qq|
-         &nbsp;<input name=method class=radio type=radio value=cash $cash>| . $locale->text('EUR') . qq|</td>
-       </tr>
+          </td>
+        </tr>
+        <tr>
+          <th align=right>| . $locale->text('Method') . qq|</th>
+          <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>| . $locale->text('Accrual') . qq|
+          &nbsp;<input name=method class=radio type=radio value=cash $cash>| . $locale->text('EUR') . qq|</td>
+        </tr>
       </table>
     </td>
   </tr>
@@ -673,20 +673,20 @@ $jsscript
     <td>
       <table>
         <tr>
-         <th align=right>| . $locale->text('Include in Report') . qq|</th>
-         <td>
-           <table>
-             <tr>
-               <td><input name="l_id" class=checkbox type=checkbox value=Y></td>
-               <td>| . $locale->text('ID') . qq|</td>
-               <td><input name="l_invnumber" class=checkbox type=checkbox value=Y checked></td>
-               <td>| . $locale->text('Invoice') . qq|</td>
-               <td><input name="l_transdate" class=checkbox type=checkbox value=Y checked></td>
-               <td>| . $locale->text('Date') . qq|</td>
-             </tr>
-             <tr>
-               <td><input name="l_name" class=checkbox type=checkbox value=Y checked></td>
-               <td>|;
+          <th align=right>| . $locale->text('Include in Report') . qq|</th>
+          <td>
+            <table>
+              <tr>
+                <td><input name="l_id" class=checkbox type=checkbox value=Y></td>
+                <td>| . $locale->text('ID') . qq|</td>
+                <td><input name="l_invnumber" class=checkbox type=checkbox value=Y checked></td>
+                <td>| . $locale->text('Invoice') . qq|</td>
+                <td><input name="l_transdate" class=checkbox type=checkbox value=Y checked></td>
+                <td>| . $locale->text('Date') . qq|</td>
+              </tr>
+              <tr>
+                <td><input name="l_name" class=checkbox type=checkbox value=Y checked></td>
+                <td>|;
 
     if ($form->{db} eq 'ar') {
       print $locale->text('Customer');
@@ -697,19 +697,19 @@ $jsscript
 
     print qq|</td>
                 <td><input name="l_netamount" class=checkbox type=checkbox value=Y checked></td>
-               <td>| . $locale->text('Amount') . qq|</td>
-               <td><input name="l_tax" class=checkbox type=checkbox value=Y checked></td>
-               <td>| . $locale->text('Tax') . qq|</td>
-               <td><input name="l_amount" class=checkbox type=checkbox value=Y></td>
-               <td>| . $locale->text('Total') . qq|</td>
-             </tr>
-             <tr>
-               <td><input name="l_subtotal" class=checkbox type=checkbox value=Y></td>
-               <td>| . $locale->text('Subtotal') . qq|</td>
-             </tr>
-           </table>
-         </td>
-       </tr>
+                <td>| . $locale->text('Amount') . qq|</td>
+                <td><input name="l_tax" class=checkbox type=checkbox value=Y checked></td>
+                <td>| . $locale->text('Tax') . qq|</td>
+                <td><input name="l_amount" class=checkbox type=checkbox value=Y></td>
+                <td>| . $locale->text('Total') . qq|</td>
+              </tr>
+              <tr>
+                <td><input name="l_subtotal" class=checkbox type=checkbox value=Y></td>
+                <td>| . $locale->text('Subtotal') . qq|</td>
+              </tr>
+            </table>
+          </td>
+        </tr>
 |;
 
   }
@@ -724,34 +724,34 @@ $jsscript
         <input type=hidden name=sort value=transdate>
         <input type=hidden name=report value=$form->{report}>
 
-       <tr>
-         <th align=right>| . $locale->text('From') . qq|</th>
-         <td><input name=fromdate size=11 title="$myconfig{dateformat}" value=$form->{fromdate}></td>
-         <th align=right>| . $locale->text('Bis') . qq|</th>
-         <td><input name=todate size=11 title="$myconfig{dateformat}"></td>
-       </tr>
-       <tr>
-         <th align=right>| . $locale->text('Method') . qq|</th>
-         <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>|
+        <tr>
+          <th align=right>| . $locale->text('From') . qq|</th>
+          <td><input name=fromdate size=11 title="$myconfig{dateformat}" value=$form->{fromdate}></td>
+          <th align=right>| . $locale->text('Bis') . qq|</th>
+          <td><input name=todate size=11 title="$myconfig{dateformat}"></td>
+        </tr>
+        <tr>
+          <th align=right>| . $locale->text('Method') . qq|</th>
+          <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>|
       . $locale->text('Accrual') . qq|
-         &nbsp;<input name=method class=radio type=radio value=cash $cash>|
+          &nbsp;<input name=method class=radio type=radio value=cash $cash>|
       . $locale->text('EUR') . qq|</td>
-       </tr>
-        <tr>
-         <th align=right>| . $locale->text('Include in Report') . qq|</th>
-         <td colspan=3>
-           <table>
-             <tr>
-               <td><input name="l_id" class=checkbox type=checkbox value=Y></td>
-               <td>| . $locale->text('ID') . qq|</td>
-               <td><input name="l_invnumber" class=checkbox type=checkbox value=Y checked></td>
-               <td>| . $locale->text('Invoice') . qq|</td>
-               <td><input name="l_transdate" class=checkbox type=checkbox value=Y checked></td>
-               <td>| . $locale->text('Date') . qq|</td>
-             </tr>
-             <tr>
-               <td><input name="l_name" class=checkbox type=checkbox value=Y checked></td>
-               <td>|;
+        </tr>
+        <tr>
+          <th align=right>| . $locale->text('Include in Report') . qq|</th>
+          <td colspan=3>
+            <table>
+              <tr>
+                <td><input name="l_id" class=checkbox type=checkbox value=Y></td>
+                <td>| . $locale->text('ID') . qq|</td>
+                <td><input name="l_invnumber" class=checkbox type=checkbox value=Y checked></td>
+                <td>| . $locale->text('Invoice') . qq|</td>
+                <td><input name="l_transdate" class=checkbox type=checkbox value=Y checked></td>
+                <td>| . $locale->text('Date') . qq|</td>
+              </tr>
+              <tr>
+                <td><input name="l_name" class=checkbox type=checkbox value=Y checked></td>
+                <td>|;
 
     if ($form->{db} eq 'ar') {
       print $locale->text('Customer');
@@ -762,17 +762,17 @@ $jsscript
 
     print qq|</td>
                 <td><input name="l_netamount" class=checkbox type=checkbox value=Y checked></td>
-               <td>| . $locale->text('Amount') . qq|</td>
-               <td><input name="l_amount" class=checkbox type=checkbox value=Y></td>
-               <td>| . $locale->text('Total') . qq|</td>
-             </tr>
-             <tr>
-               <td><input name="l_subtotal" class=checkbox type=checkbox value=Y></td>
-               <td>| . $locale->text('Subtotal') . qq|</td>
-             </tr>
-           </table>
-         </td>
-       </tr>
+                <td>| . $locale->text('Amount') . qq|</td>
+                <td><input name="l_amount" class=checkbox type=checkbox value=Y></td>
+                <td>| . $locale->text('Total') . qq|</td>
+              </tr>
+              <tr>
+                <td><input name="l_subtotal" class=checkbox type=checkbox value=Y></td>
+                <td>| . $locale->text('Subtotal') . qq|</td>
+              </tr>
+            </table>
+          </td>
+        </tr>
 |;
 
   }
@@ -802,25 +802,25 @@ $jsscript
       : qq|<input name=$form->{vc} size=35>|;
 
     print qq|
-       <tr>
-         <th align=right>| . $locale->text($label) . qq|</th>
-         <td>$vc</td>
-       </tr>
-       <tr>
-         <td align=left colspan=4>| . $locale->text('From') . qq|&nbsp;
-             $button1
+        <tr>
+          <th align=right>| . $locale->text($label) . qq|</th>
+          <td>$vc</td>
+        </tr>
+        <tr>
+          <td align=left colspan=4>| . $locale->text('From') . qq|&nbsp;
+              $button1
               $button1_2&nbsp;
-             | . $locale->text('Bis') . qq|&nbsp;
-             $button2
+              | . $locale->text('Bis') . qq|&nbsp;
+              $button2
               $button2_2
           </td>
-       </tr>
+        </tr>
         <input type=hidden name=type value=statement>
         <input type=hidden name=format value=html>
-       <input type=hidden name=media value=screen>
+        <input type=hidden name=media value=screen>
 
-       <input type=hidden name=nextsub value=$nextsub>
-       <input type=hidden name=action value=$nextsub>
+        <input type=hidden name=nextsub value=$nextsub>
+        <input type=hidden name=action value=$nextsub>
 
 $jsscript
 |;
@@ -845,44 +845,44 @@ $jsscript
     print qq|
         <input type=hidden name=nextsub value=list_payments>
         <tr>
-         <th align=right nowrap>| . $locale->text('Account') . qq|</th>
+          <th align=right nowrap>| . $locale->text('Account') . qq|</th>
           <td colspan=3><select name=account>$selection</select>
-           <input type=hidden name=paymentaccounts value="$paymentaccounts">
-         </td>
-       </tr>
+            <input type=hidden name=paymentaccounts value="$paymentaccounts">
+          </td>
+        </tr>
         <tr>
-         <th align=right>| . $locale->text('Reference') . qq|</th>
+          <th align=right>| . $locale->text('Reference') . qq|</th>
           <td colspan=3><input name=reference></td>
-       </tr>
+        </tr>
         <tr>
-         <th align=right nowrap>| . $locale->text('Source') . qq|</th>
+          <th align=right nowrap>| . $locale->text('Source') . qq|</th>
           <td colspan=3><input name=source></td>
-       </tr>
+        </tr>
         <tr>
-         <th align=right nowrap>| . $locale->text('Memo') . qq|</th>
+          <th align=right nowrap>| . $locale->text('Memo') . qq|</th>
           <td colspan=3><input name=memo size=30></td>
-       </tr>
-       <tr>
-         <th align=right>| . $locale->text('From') . qq|</th>
-         <td>
+        </tr>
+        <tr>
+          <th align=right>| . $locale->text('From') . qq|</th>
+          <td>
             $button1
             $button1_2
           </td>
-         <th align=right>| . $locale->text('Bis') . qq|</th>
-         <td>
+          <th align=right>| . $locale->text('Bis') . qq|</th>
+          <td>
             $button2
             $button2_2
           </td>
-       </tr>
+        </tr>
         <tr>
-         <td align=right><input type=checkbox style=checkbox name=fx_transaction value=1 checked></td>
-         <th align=left colspan=3>| . $locale->text('Include Exchangerate Difference') . qq|</td>
-       </tr>
+          <td align=right><input type=checkbox style=checkbox name=fx_transaction value=1 checked></td>
+          <th align=left colspan=3>| . $locale->text('Include Exchangerate Difference') . qq|</td>
+        </tr>
 
 $jsscript
 
-         <input type=hidden name=db value=$form->{db}>
-         <input type=hidden name=sort value=transdate>
+          <input type=hidden name=db value=$form->{db}>
+          <input type=hidden name=sort value=transdate>
 |;
 
   }
@@ -1819,7 +1819,7 @@ sub e_mail {
   if ($myconfig{role} eq 'admin') {
     $bcc = qq|
           <th align=right nowrap=true>| . $locale->text('Bcc') . qq|</th>
-         <td><input name=bcc size=30 value="$form->{bcc}"></td>
+          <td><input name=bcc size=30 value="$form->{bcc}"></td>
 |;
   }
 
@@ -1843,16 +1843,16 @@ sub e_mail {
     <td>
       <table width=100%>
         <tr>
-         <th align=right nowrap>| . $locale->text('E-mail') . qq|</th>
-         <td><input name=email size=30 value="$form->{email}"></td>
-         <th align=right nowrap>| . $locale->text('Cc') . qq|</th>
-         <td><input name=cc size=30 value="$form->{cc}"></td>
-       </tr>
-       <tr>
-         <th align=right nowrap>| . $locale->text('Subject') . qq|</th>
-         <td><input name=subject size=30 value="$form->{subject}"></td>
-         $bcc
-       </tr>
+          <th align=right nowrap>| . $locale->text('E-mail') . qq|</th>
+          <td><input name=email size=30 value="$form->{email}"></td>
+          <th align=right nowrap>| . $locale->text('Cc') . qq|</th>
+          <td><input name=cc size=30 value="$form->{cc}"></td>
+        </tr>
+        <tr>
+          <th align=right nowrap>| . $locale->text('Subject') . qq|</th>
+          <td><input name=subject size=30 value="$form->{subject}"></td>
+          $bcc
+        </tr>
       </table>
     </td>
   </tr>
@@ -1860,11 +1860,11 @@ sub e_mail {
     <td>
       <table width=100%>
         <tr>
-         <th align=left nowrap>| . $locale->text('Message') . qq|</th>
-       </tr>
-       <tr>
-         <td><textarea name=message rows=15 cols=60 wrap=soft>$form->{message}</textarea></td>
-       </tr>
+          <th align=left nowrap>| . $locale->text('Message') . qq|</th>
+        </tr>
+        <tr>
+          <td><textarea name=message rows=15 cols=60 wrap=soft>$form->{message}</textarea></td>
+        </tr>
       </table>
     </td>
   </tr>
@@ -2070,9 +2070,9 @@ sub print_form {
   # saving the history
   if(!exists $form->{addition} && $form->{id} ne "") {
     $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber};
-       $form->{addition} = "PRINTED";
-       $form->{what_done} = $form->{type};
-       $form->save_history($form->dbconnect(\%myconfig));
+    $form->{addition} = "PRINTED";
+    $form->{what_done} = $form->{type};
+    $form->save_history($form->dbconnect(\%myconfig));
   }
   # /saving the history
   $main::lxdebug->leave_sub();
@@ -2223,13 +2223,13 @@ sub generate_tax_report {
   <tr>
     <td>
       <table width=100%>
-       <tr class=listheading>
+        <tr class=listheading>
 |;
 
   map { print "$column_header{$_}\n" } @column_index;
 
   print qq|
-       </tr>
+        </tr>
 |;
 
   # add sort and escape callback
@@ -2276,13 +2276,13 @@ sub generate_tax_report {
     $i++;
     $i %= 2;
     print qq|
-       <tr class=listrow$i>
+        <tr class=listrow$i>
 |;
 
     map { print "$column_data{$_}\n" } @column_index;
 
     print qq|
-       </tr>
+        </tr>
 |;
 
   }
@@ -2295,7 +2295,7 @@ sub generate_tax_report {
 
   print qq|
         </tr>
-       <tr class=listtotal>
+        <tr class=listtotal>
 |;
 
   my $total          = $form->format_amount(\%myconfig, $totalnetamount + $totaltax, 2, "&nbsp;");
@@ -2346,7 +2346,7 @@ sub tax_subtotal {
   $subtotaltax       = 0;
 
   print qq|
-       <tr class=listsubtotal>
+        <tr class=listsubtotal>
 |;
   map { print "\n$column_data{$_}" } @column_index;
 
@@ -2516,21 +2516,18 @@ sub print_options {
 
   my ($media);
   my $type = qq|
-           <option value=statement $form->{PD}{statement}>|
-      . $locale->text('Statement');
+            <option value=statement $form->{PD}{statement}>| . $locale->text('Statement');
 
   if ($form->{media} eq 'email') {
     $media = qq|
-           <option value=attachment $form->{SM}{attachment}>|
-      . $locale->text('Attachment') . qq|
-           <option value=inline $form->{SM}{inline}>| . $locale->text('In-line');
+            <option value=attachment $form->{SM}{attachment}>| . $locale->text('Attachment') . qq|
+            <option value=inline $form->{SM}{inline}>| . $locale->text('In-line');
   } else {
     $media = qq|
-           <option value=screen $form->{OP}{screen}>| . $locale->text('Screen');
+            <option value=screen $form->{OP}{screen}>| . $locale->text('Screen');
     if ($myconfig{printer} && $main::latex_templates) {
       $media .= qq|
-            <option value=printer $form->{OP}{printer}>|
-        . $locale->text('Printer');
+            <option value=printer $form->{OP}{printer}>| . $locale->text('Printer');
     }
   }
 
index b6165a8..f96d596 100644 (file)
@@ -170,8 +170,8 @@ sub transfer_or_removal_prepare_contents {
   my @contents  = WH->get_warehouse_report("warehouse_id" => $form->{warehouse_id},
                                            "bin_id"       => $form->{bin_id},
                                            "chargenumber" => $form->{chargenumber},
-                                          "partnumber"   => $form->{partnumber},
-                                          "ean"          => $form->{ean},
+                                           "partnumber"   => $form->{partnumber},
+                                           "ean"          => $form->{ean},
                                            "description"  => $form->{description});
 
   $form->show_generic_error($locale->text("The selected warehouse is empty.")) if (0 == scalar(@contents));
@@ -310,7 +310,7 @@ sub transfer_stock_update_part {
   } elsif (($form->{partnumber} && ($form->{partnumber} ne $form->{old_partnumber})) || $form->{description} || $form->{ean}) {
 
     $form->{no_services}   = 1;
-    $form->{no_assemblies} = 0;        # assemblies duerfen eingelagert werden (z.B. bei retouren)
+    $form->{no_assemblies} = 0; # assemblies duerfen eingelagert werden (z.B. bei retouren)
 
     my $parts = Common->retrieve_parts(\%myconfig, $form, 'description', 1);
 
@@ -424,10 +424,10 @@ sub create_assembly {
     $form->show_generic_error($locale->text('Invalid quantity.'), 'back_button' => 1);
   }
   # TODO Es wäre schön, hier schon die maximale Anzahl der zu fertigenden Erzeugnisse zu haben
-  #else { if ($form->{qty} > $maxcreate) {     #s.o.
-  #        $form->show_generic_error($locale->text('Can not create that quantity with current stock'), 'back_button' => 1);
-  #        $form->show_generic_error('Maximale Stückzahl' . $maxcreate , 'back_button' => 1);
-  #      }
+  #else { if ($form->{qty} > $maxcreate) { #s.o.
+  #     $form->show_generic_error($locale->text('Can not create that quantity with current stock'), 'back_button' => 1);
+  #     $form->show_generic_error('Maximale Stückzahl' . $maxcreate , 'back_button' => 1);
+  #   }
   #  }
 
   if (!$form->{warehouse_id} || !$form->{bin_id}) {
@@ -437,7 +437,7 @@ sub create_assembly {
   # Anm. jb 18.3. vielleicht auch nur meine unwissenheit in perl-datenstrukturen
   my %TRANSFER = (
     'transfer_type'    => 'assembly',
-    'login'               => $form->{login},
+    'login'            => $form->{login},
     'dst_warehouse_id' => $form->{warehouse_id},
     'dst_bin_id'       => $form->{bin_id},
     'chargenumber'     => $form->{chargenumber},
@@ -968,14 +968,6 @@ sub get_bin_idx {
   return -1;
 }
 
-=item new_item
-
-call new item dialogue from warehouse masks.
-
-PARAMS:
-  action  => name of sub to be called when new item is done
-
-=cut
 sub new_item {
   $main::lxdebug->enter_sub();
   my %params = @_;
@@ -1017,3 +1009,24 @@ sub stock {
 }
 
 1;
+
+__END__
+
+=head1 NAME
+
+bin/mozilla/wh.pl - Warehouse frontend.
+
+=head1 FUNCTIONS
+
+=over 4
+
+=item new_item
+
+call new item dialogue from warehouse masks.
+
+PARAMS:
+  action  => name of sub to be called when new item is done
+
+=back
+
+=cut
diff --git a/css/jquery.autocomplete.css b/css/jquery.autocomplete.css
new file mode 100644 (file)
index 0000000..91b6228
--- /dev/null
@@ -0,0 +1,48 @@
+.ac_results {
+       padding: 0px;
+       border: 1px solid black;
+       background-color: white;
+       overflow: hidden;
+       z-index: 99999;
+}
+
+.ac_results ul {
+       width: 100%;
+       list-style-position: outside;
+       list-style: none;
+       padding: 0;
+       margin: 0;
+}
+
+.ac_results li {
+       margin: 0px;
+       padding: 2px 5px;
+       cursor: default;
+       display: block;
+       /* 
+       if width will be 100% horizontal scrollbar will apear 
+       when scroll mode will be used
+       */
+       /*width: 100%;*/
+       font: menu;
+       font-size: 12px;
+       /* 
+       it is very important, if line-height not setted or setted 
+       in relative units scroll will be broken in firefox
+       */
+       line-height: 16px;
+       overflow: hidden;
+}
+
+.ac_loading {
+       background: white url('indicator.gif') right center no-repeat;
+}
+
+.ac_odd {
+       background-color: #eee;
+}
+
+.ac_over {
+       background-color: #0A246A;
+       color: white;
+}
diff --git a/js/jquery-autocomplete/jquery.autocomplete.pack.js b/js/jquery-autocomplete/jquery.autocomplete.pack.js
new file mode 100644 (file)
index 0000000..2d09b00
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * jQuery Autocomplete plugin 1.1
+ *
+ * Copyright (c) 2009 Jörn Zaefferer
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id: jquery.autocomplete.js 15 2009-08-22 10:30:27Z joern.zaefferer $
+ */
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';(3($){$.2e.1u({19:3(b,d){5 c=W b=="1B";d=$.1u({},$.M.1T,{Y:c?b:P,y:c?P:b,1J:c?$.M.1T.1J:10,X:d&&!d.1D?10:48},d);d.1y=d.1y||3(a){6 a};d.1v=d.1v||d.1R;6 A.I(3(){1M $.M(A,d)})},L:3(a){6 A.11("L",a)},1k:3(a){6 A.14("1k",[a])},2b:3(){6 A.14("2b")},28:3(a){6 A.14("28",[a])},24:3(){6 A.14("24")}});$.M=3(o,r){5 t={2Y:38,2S:40,2N:46,2I:9,2E:13,2B:27,2x:3I,2v:33,2p:34,2n:8};5 u=$(o).3r("19","3o").Q(r.2Q);5 p;5 m="";5 n=$.M.3c(r);5 s=0;5 k;5 h={1F:C};5 l=$.M.32(r,o,1Z,h);5 j;$.1Y.2X&&$(o.2U).11("45.19",3(){4(j){j=C;6 C}});u.11(($.1Y.2X?"43":"42")+".19",3(a){s=1;k=a.2M;3V(a.2M){O t.2Y:a.1d();4(l.N()){l.30()}w{12(0,D)}R;O t.2S:a.1d();4(l.N()){l.2D()}w{12(0,D)}R;O t.2v:a.1d();4(l.N()){l.2C()}w{12(0,D)}R;O t.2p:a.1d();4(l.N()){l.2A()}w{12(0,D)}R;O r.17&&$.1c(r.S)==","&&t.2x:O t.2I:O t.2E:4(1Z()){a.1d();j=D;6 C}R;O t.2B:l.Z();R;3J:1P(p);p=1O(12,r.1J);R}}).2t(3(){s++}).3E(3(){s=0;4(!h.1F){2r()}}).2q(3(){4(s++>1&&!l.N()){12(0,D)}}).11("1k",3(){5 c=(1r.7>1)?1r[1]:P;3 1N(q,a){5 b;4(a&&a.7){16(5 i=0;i<a.7;i++){4(a[i].L.J()==q.J()){b=a[i];R}}}4(W c=="3")c(b);w u.14("L",b&&[b.y,b.F])}$.I(15(u.K()),3(i,a){21(a,1N,1N)})}).11("2b",3(){n.1o()}).11("28",3(){$.1u(r,1r[1]);4("y"2h 1r[1])n.1e()}).11("24",3(){l.1p();u.1p();$(o.2U).1p(".19")});3 1Z(){5 e=l.2g();4(!e)6 C;5 v=e.L;m=v;4(r.17){5 b=15(u.K());4(b.7>1){5 f=r.S.7;5 c=$(o).18().1I;5 d,1H=0;$.I(b,3(i,a){1H+=a.7;4(c<=1H){d=i;6 C}1H+=f});b[d]=v;v=b.3f(r.S)}v+=r.S}u.K(v);1l();u.14("L",[e.y,e.F]);6 D}3 12(b,c){4(k==t.2N){l.Z();6}5 a=u.K();4(!c&&a==m)6;m=a;a=1m(a);4(a.7>=r.29){u.Q(r.26);4(!r.1s)a=a.J();21(a,3a,1l)}w{1q();l.Z()}};3 15(b){4(!b)6[""];4(!r.17)6[$.1c(b)];6 $.4h(b.23(r.S),3(a){6 $.1c(b).7?$.1c(a):P})}3 1m(a){4(!r.17)6 a;5 c=15(a);4(c.7==1)6 c[0];5 b=$(o).18().1I;4(b==a.7){c=15(a)}w{c=15(a.22(a.37(b),""))}6 c[c.7-1]}3 1G(q,a){4(r.1G&&(1m(u.K()).J()==q.J())&&k!=t.2n){u.K(u.K()+a.37(1m(m).7));$(o).18(m.7,m.7+a.7)}};3 2r(){1P(p);p=1O(1l,4g)};3 1l(){5 c=l.N();l.Z();1P(p);1q();4(r.36){u.1k(3(a){4(!a){4(r.17){5 b=15(u.K()).1n(0,-1);u.K(b.3f(r.S)+(b.7?r.S:""))}w{u.K("");u.14("L",P)}}})}};3 3a(q,a){4(a&&a.7&&s){1q();l.35(a,q);1G(q,a[0].F);l.20()}w{1l()}};3 21(f,d,g){4(!r.1s)f=f.J();5 e=n.31(f);4(e&&e.7){d(f,e)}w 4((W r.Y=="1B")&&(r.Y.7>0)){5 c={4f:+1M 4e()};$.I(r.2Z,3(a,b){c[a]=W b=="3"?b():b});$.4d({4c:"4b",4a:"19"+o.49,2V:r.2V,Y:r.Y,y:$.1u({q:1m(f),47:r.X},c),44:3(a){5 b=r.1A&&r.1A(a)||1A(a);n.1i(f,b);d(f,b)}})}w{l.2T();g(f)}};3 1A(c){5 d=[];5 b=c.23("\\n");16(5 i=0;i<b.7;i++){5 a=$.1c(b[i]);4(a){a=a.23("|");d[d.7]={y:a,F:a[0],L:r.1z&&r.1z(a,a[0])||a[0]}}}6 d};3 1q(){u.1h(r.26)}};$.M.1T={2Q:"41",2P:"3Z",26:"3Y",29:1,1J:3W,1s:C,1f:D,1w:C,1g:10,X:3U,36:C,2Z:{},1X:D,1R:3(a){6 a[0]},1v:P,1G:C,E:0,17:C,S:", ",1y:3(b,a){6 b.22(1M 3T("(?![^&;]+;)(?!<[^<>]*)("+a.22(/([\\^\\$\\(\\)\\[\\]\\{\\}\\*\\.\\+\\?\\|\\\\])/2K,"\\\\$1")+")(?![^<>]*>)(?![^&;]+;)","2K"),"<2J>$1</2J>")},1D:D,1E:3S};$.M.3c=3(g){5 h={};5 j=0;3 1f(s,a){4(!g.1s)s=s.J();5 i=s.2H(a);4(g.1w=="3R"){i=s.J().1k("\\\\b"+a.J())}4(i==-1)6 C;6 i==0||g.1w};3 1i(q,a){4(j>g.1g){1o()}4(!h[q]){j++}h[q]=a}3 1e(){4(!g.y)6 C;5 f={},2G=0;4(!g.Y)g.1g=1;f[""]=[];16(5 i=0,2F=g.y.7;i<2F;i++){5 c=g.y[i];c=(W c=="1B")?[c]:c;5 d=g.1v(c,i+1,g.y.7);4(d===C)1V;5 e=d.3Q(0).J();4(!f[e])f[e]=[];5 b={F:d,y:c,L:g.1z&&g.1z(c)||d};f[e].1U(b);4(2G++<g.X){f[""].1U(b)}};$.I(f,3(i,a){g.1g++;1i(i,a)})}1O(1e,25);3 1o(){h={};j=0}6{1o:1o,1i:1i,1e:1e,31:3(q){4(!g.1g||!j)6 P;4(!g.Y&&g.1w){5 a=[];16(5 k 2h h){4(k.7>0){5 c=h[k];$.I(c,3(i,x){4(1f(x.F,q)){a.1U(x)}})}}6 a}w 4(h[q]){6 h[q]}w 4(g.1f){16(5 i=q.7-1;i>=g.29;i--){5 c=h[q.3O(0,i)];4(c){5 a=[];$.I(c,3(i,x){4(1f(x.F,q)){a[a.7]=x}});6 a}}}6 P}}};$.M.32=3(e,g,f,k){5 h={H:"3N"};5 j,z=-1,y,1t="",1S=D,G,B;3 2y(){4(!1S)6;G=$("<3M/>").Z().Q(e.2P).T("3L","3K").1Q(1K.2w);B=$("<3H/>").1Q(G).3G(3(a){4(U(a).2u&&U(a).2u.3F()==\'2s\'){z=$("1L",B).1h(h.H).3D(U(a));$(U(a)).Q(h.H)}}).2q(3(a){$(U(a)).Q(h.H);f();g.2t();6 C}).3C(3(){k.1F=D}).3B(3(){k.1F=C});4(e.E>0)G.T("E",e.E);1S=C}3 U(a){5 b=a.U;3A(b&&b.3z!="2s")b=b.3y;4(!b)6[];6 b}3 V(b){j.1n(z,z+1).1h(h.H);2o(b);5 a=j.1n(z,z+1).Q(h.H);4(e.1D){5 c=0;j.1n(0,z).I(3(){c+=A.1a});4((c+a[0].1a-B.1b())>B[0].3x){B.1b(c+a[0].1a-B.3w())}w 4(c<B.1b()){B.1b(c)}}};3 2o(a){z+=a;4(z<0){z=j.1j()-1}w 4(z>=j.1j()){z=0}}3 2m(a){6 e.X&&e.X<a?e.X:a}3 2l(){B.2z();5 b=2m(y.7);16(5 i=0;i<b;i++){4(!y[i])1V;5 a=e.1R(y[i].y,i+1,b,y[i].F,1t);4(a===C)1V;5 c=$("<1L/>").3v(e.1y(a,1t)).Q(i%2==0?"3u":"3P").1Q(B)[0];$.y(c,"2k",y[i])}j=B.3t("1L");4(e.1X){j.1n(0,1).Q(h.H);z=0}4($.2e.2W)B.2W()}6{35:3(d,q){2y();y=d;1t=q;2l()},2D:3(){V(1)},30:3(){V(-1)},2C:3(){4(z!=0&&z-8<0){V(-z)}w{V(-8)}},2A:3(){4(z!=j.1j()-1&&z+8>j.1j()){V(j.1j()-1-z)}w{V(8)}},Z:3(){G&&G.Z();j&&j.1h(h.H);z=-1},N:3(){6 G&&G.3s(":N")},3q:3(){6 A.N()&&(j.2j("."+h.H)[0]||e.1X&&j[0])},20:3(){5 a=$(g).3p();G.T({E:W e.E=="1B"||e.E>0?e.E:$(g).E(),2i:a.2i+g.1a,1W:a.1W}).20();4(e.1D){B.1b(0);B.T({2L:e.1E,3n:\'3X\'});4($.1Y.3m&&W 1K.2w.3l.2L==="1x"){5 c=0;j.I(3(){c+=A.1a});5 b=c>e.1E;B.T(\'3k\',b?e.1E:c);4(!b){j.E(B.E()-2R(j.T("2O-1W"))-2R(j.T("2O-3j")))}}}},2g:3(){5 a=j&&j.2j("."+h.H).1h(h.H);6 a&&a.7&&$.y(a[0],"2k")},2T:3(){B&&B.2z()},1p:3(){G&&G.3i()}}};$.2e.18=3(b,f){4(b!==1x){6 A.I(3(){4(A.2d){5 a=A.2d();4(f===1x||b==f){a.4n("2c",b);a.3h()}w{a.4m(D);a.4l("2c",b);a.4k("2c",f);a.3h()}}w 4(A.3g){A.3g(b,f)}w 4(A.1C){A.1C=b;A.3e=f}})}5 c=A[0];4(c.2d){5 e=1K.18.4j(),3d=c.F,2a="<->",2f=e.3b.7;e.3b=2a;5 d=c.F.2H(2a);c.F=3d;A.18(d,d+2f);6{1I:d,39:d+2f}}w 4(c.1C!==1x){6{1I:c.1C,39:c.3e}}}})(4i);',62,272,'|||function|if|var|return|length|||||||||||||||||||||||||else||data|active|this|list|false|true|width|value|element|ACTIVE|each|toLowerCase|val|result|Autocompleter|visible|case|null|addClass|break|multipleSeparator|css|target|moveSelect|typeof|max|url|hide||bind|onChange||trigger|trimWords|for|multiple|selection|autocomplete|offsetHeight|scrollTop|trim|preventDefault|populate|matchSubset|cacheLength|removeClass|add|size|search|hideResultsNow|lastWord|slice|flush|unbind|stopLoading|arguments|matchCase|term|extend|formatMatch|matchContains|undefined|highlight|formatResult|parse|string|selectionStart|scroll|scrollHeight|mouseDownOnSelect|autoFill|progress|start|delay|document|li|new|findValueCallback|setTimeout|clearTimeout|appendTo|formatItem|needsInit|defaults|push|continue|left|selectFirst|browser|selectCurrent|show|request|replace|split|unautocomplete||loadingClass||setOptions|minChars|teststring|flushCache|character|createTextRange|fn|textLength|selected|in|top|filter|ac_data|fillList|limitNumberOfItems|BACKSPACE|movePosition|PAGEDOWN|click|hideResults|LI|focus|nodeName|PAGEUP|body|COMMA|init|empty|pageDown|ESC|pageUp|next|RETURN|ol|nullData|indexOf|TAB|strong|gi|maxHeight|keyCode|DEL|padding|resultsClass|inputClass|parseInt|DOWN|emptyList|form|dataType|bgiframe|opera|UP|extraParams|prev|load|Select|||display|mustMatch|substring||end|receiveData|text|Cache|orig|selectionEnd|join|setSelectionRange|select|remove|right|height|style|msie|overflow|off|offset|current|attr|is|find|ac_even|html|innerHeight|clientHeight|parentNode|tagName|while|mouseup|mousedown|index|blur|toUpperCase|mouseover|ul|188|default|absolute|position|div|ac_over|substr|ac_odd|charAt|word|180|RegExp|100|switch|400|auto|ac_loading|ac_results||ac_input|keydown|keypress|success|submit||limit|150|name|port|abort|mode|ajax|Date|timestamp|200|map|jQuery|createRange|moveEnd|moveStart|collapse|move'.split('|'),0,{}))
\ No newline at end of file
diff --git a/js/jquery.autocomplete.js b/js/jquery.autocomplete.js
new file mode 120000 (symlink)
index 0000000..b447098
--- /dev/null
@@ -0,0 +1 @@
+jquery-autocomplete/jquery.autocomplete.pack.js
\ No newline at end of file
index b0464a0..8173d6a 100644 (file)
@@ -1407,8 +1407,6 @@ $self->{texts} = {
   'Set eMail text'              => 'eMail Text eingeben',
   'Setup Menu'                  => 'Menüsetup',
   'Setup Templates'             => 'Vorlagen auswählen',
-  'Ship'                        => 'Lagerausgang',
-  'Ship rcvd'                   => 'Lagereingang',
   'Ship to'                     => 'Lieferadresse',
   'Ship via'                    => 'Transportmittel',
   'Shipping Address'            => 'Lieferadresse',
index 51fd1a0..84333ce 100644 (file)
@@ -104,7 +104,6 @@ $self->{texts} = {
   'Dunning'                     => 'Mahnung',
   'ELSE'                        => 'Zusatz',
   'Edit Accounts Payables Transaction' => 'Kreditorenbuchung bearbeiten',
-  'Employee'                    => 'Bearbeiter',
   'Enter longdescription'       => 'Langtext eingeben',
   'Error in database control file \'%s\': %s' => 'Fehler in Datenbankupgradekontrolldatei \'%s\': %s',
   'Exch'                        => 'Wechselkurs.',
@@ -121,7 +120,6 @@ $self->{texts} = {
   'General ledger and cash'     => 'Finanzbuchhaltung und Zahlungsverkehr',
   'History'                     => 'Historie',
   'ID'                          => 'Buchungsnummer',
-  'Include in Report'           => 'In Bericht aufnehmen',
   'Invoice'                     => 'Rechnung',
   'Invoice (one letter abbreviation)' => 'R',
   'Invoice Date'                => 'Rechnungsdatum',
@@ -226,7 +224,6 @@ $self->{texts} = {
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
   'Subject'                     => 'Betreff',
-  'Subtotal'                    => 'Zwischensumme',
   'Tax'                         => 'Steuer',
   'Tax Included'                => 'Steuer im Preis inbegriffen',
   'Taxkey'                      => 'Steuerschlüssel',
index e2ebb24..c55edc5 100644 (file)
@@ -124,7 +124,6 @@ $self->{texts} = {
   'General ledger and cash'     => 'Finanzbuchhaltung und Zahlungsverkehr',
   'History'                     => 'Historie',
   'ID'                          => 'Buchungsnummer',
-  'Include in Report'           => 'In Bericht aufnehmen',
   'Incoming Payments'           => 'Zahlungseingänge',
   'Invoice'                     => 'Rechnung',
   'Invoice (one letter abbreviation)' => 'R',
@@ -231,7 +230,6 @@ $self->{texts} = {
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
   'Subject'                     => 'Betreff',
-  'Subtotal'                    => 'Zwischensumme',
   'Tax'                         => 'Steuer',
   'Tax Included'                => 'Steuer im Preis inbegriffen',
   'Taxkey'                      => 'Steuerschlüssel',
index fac93f8..21d9277 100644 (file)
@@ -213,6 +213,7 @@ $self->{subs} = {
   'Q'                           => 'Q',
   'add'                         => 'add',
   'add_transaction'             => 'add_transaction',
+  'ajax_autocomplete'           => 'ajax_autocomplete',
   'ap_transaction'              => 'ap_transaction',
   'ar_transaction'              => 'ar_transaction',
   'build_std_url'               => 'build_std_url',
index b036f6c..2f0b0b8 100644 (file)
@@ -241,12 +241,9 @@ $self->{texts} = {
   'Sep'                         => 'Sep',
   'September'                   => 'September',
   'Serial No.'                  => 'Seriennummer',
-  'Ship'                        => 'Lagerausgang',
-  'Ship rcvd'                   => 'Lagereingang',
   'Ship to'                     => 'Lieferadresse',
   'Ship via'                    => 'Transportmittel',
   'Shipping Address'            => 'Lieferadresse',
-  'Show details'                => 'Details anzeigen',
   'Stock'                       => 'Einlagern',
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
index 2741fd2..6fe1856 100644 (file)
@@ -262,12 +262,9 @@ $self->{texts} = {
   'Serial Number'               => 'Seriennummer',
   'Service Number missing!'     => 'Dienstleistungsnummer fehlt!',
   'Services'                    => 'Dienstleistungen',
-  'Ship'                        => 'Lagerausgang',
-  'Ship rcvd'                   => 'Lagereingang',
   'Ship to'                     => 'Lieferadresse',
   'Shipping Address'            => 'Lieferadresse',
   'Short'                       => 'Knapp',
-  'Show details'                => 'Details anzeigen',
   'Sold'                        => 'Verkauft',
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
@@ -357,6 +354,7 @@ $self->{subs} = {
   '_update_ship'                => '_update_ship',
   'add'                         => 'add',
   'addtop100'                   => 'addtop100',
+  'ajax_autocomplete'           => 'ajax_autocomplete',
   'ap_transaction'              => 'ap_transaction',
   'ar_transaction'              => 'ar_transaction',
   'assembly_row'                => 'assembly_row',
index a3529f4..7eeece4 100644 (file)
@@ -203,11 +203,8 @@ $self->{texts} = {
   'Sep'                         => 'Sep',
   'September'                   => 'September',
   'Serial No.'                  => 'Seriennummer',
-  'Ship'                        => 'Lagerausgang',
-  'Ship rcvd'                   => 'Lagereingang',
   'Ship to'                     => 'Lieferadresse',
   'Shipping Address'            => 'Lieferadresse',
-  'Show details'                => 'Details anzeigen',
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
   'Street'                      => 'Straße',
index c51b232..47c13fd 100644 (file)
@@ -9,7 +9,6 @@ $self->{texts} = {
   'AP Transaction'              => 'Kreditorenbuchung',
   'AR'                          => 'Verkauf',
   'AR Transaction'              => 'Debitorenbuchung',
-  'Account'                     => 'Konto',
   'Add Purchase Order'          => 'Lieferantenauftrag erfassen',
   'Add Quotation'               => 'Angebot erfassen',
   'Add Request for Quotation'   => 'Anfrage erfassen',
@@ -18,7 +17,6 @@ $self->{texts} = {
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
   'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
-  'Amount'                      => 'Betrag',
   'Apr'                         => 'Apr',
   'April'                       => 'April',
   'Are you sure you want to delete Invoice Number' => 'Soll die Rechnung mit folgender Nummer wirklich gelöscht werden:',
@@ -60,7 +58,6 @@ $self->{texts} = {
   'Confirm!'                    => 'Bestätigen Sie!',
   'Confirmation'                => 'Auftragsbestätigung',
   'Contact'                     => 'Kontakt',
-  'Contact Person'              => 'Ansprechpartner',
   'Continue'                    => 'Weiter',
   'Country'                     => 'Land',
   'Create and edit RFQs'        => 'Lieferantenanfragen erfassen und bearbeiten',
@@ -75,9 +72,7 @@ $self->{texts} = {
   'Create and edit sales orders' => 'Auftragsbest&auml;tigungen erfassen und bearbeiten',
   'Create and edit sales quotations' => 'Angebote erfassen und bearbeiten',
   'Create and edit vendor invoices' => 'Eingangsrechnungen erfassen und bearbeiten',
-  'Credit Limit'                => 'Kreditlimit',
   'Credit Note'                 => 'Gutschrift',
-  'Currency'                    => 'Währung',
   'Customer'                    => 'Kunde',
   'Customer Number'             => 'Kundennummer',
   'Customer details'            => 'Kundendetails',
@@ -91,7 +86,6 @@ $self->{texts} = {
   'Date'                        => 'Datum',
   'Dec'                         => 'Dez',
   'December'                    => 'Dezember',
-  'Delete'                      => 'Löschen',
   'Delete drafts'               => 'Entwürfe löschen',
   'Delivered'                   => 'Geliefert',
   'Delivery Date'               => 'Lieferdatum',
@@ -99,43 +93,33 @@ $self->{texts} = {
   'Department'                  => 'Abteilung',
   'Dependency loop detected:'   => 'Schleife in den Abh&auml;ngigkeiten entdeckt:',
   'Description'                 => 'Beschreibung',
-  'Details (one letter abbreviation)' => 'D',
   'Directory'                   => 'Verzeichnis',
   'Discount'                    => 'Rabatt',
   'Draft saved.'                => 'Entwurf gespeichert.',
-  'Due Date'                    => 'Fälligkeitsdatum',
   'Dunning'                     => 'Mahnung',
   'E-mail'                      => 'eMail',
   'E-mail address missing!'     => 'E-Mail-Adresse fehlt!',
   'EK'                          => 'EK',
   'ELSE'                        => 'Zusatz',
   'Edit Vendor Invoice'         => 'Einkaufsrechnung bearbeiten',
-  'Employee'                    => 'Bearbeiter',
   'Enter longdescription'       => 'Langtext eingeben',
   'Error in database control file \'%s\': %s' => 'Fehler in Datenbankupgradekontrolldatei \'%s\': %s',
   'Ertrag'                      => 'Ertrag',
-  'Exch'                        => 'Wechselkurs.',
-  'Exchangerate'                => 'Wechselkurs',
   'Exchangerate for payment missing!' => 'Es fehlt der Wechselkurs für die Bezahlung!',
   'Exchangerate missing!'       => 'Es fehlt der Wechselkurs!',
   'Extended'                    => 'Gesamt',
-  'Falsches Datumsformat!'      => 'Falsches Datumsformat!',
   'Fax'                         => 'Fax',
   'Feb'                         => 'Feb',
   'February'                    => 'Februar',
   'File'                        => 'Datei',
-  'Follow-Up'                   => 'Wiedervorlage',
   'GL Transaction'              => 'Dialogbuchung',
   'General ledger and cash'     => 'Finanzbuchhaltung und Zahlungsverkehr',
   'Group'                       => 'Warengruppe',
   'History'                     => 'Historie',
   'In-line'                     => 'im Text',
-  'Internal Notes'              => 'interne Bemerkungen',
   'Invnumber missing!'          => 'Rechnungsnummer fehlt!',
   'Invoice'                     => 'Rechnung',
-  'Invoice Date'                => 'Rechnungsdatum',
   'Invoice Date missing!'       => 'Rechnungsdatum fehlt!',
-  'Invoice Number'              => 'Rechnungsnummer',
   'Invoice Number missing!'     => 'Rechnungsnummer fehlt!',
   'Invoice deleted!'            => 'Rechnung gelöscht!',
   'Invoice has already been storno\'d!' => 'Diese Rechnung wurde bereits storniert.',
@@ -158,11 +142,9 @@ $self->{texts} = {
   'May'                         => 'Mai',
   'May '                        => 'Mai',
   'May set the BCC field when sending emails' => 'Beim Verschicken von Emails das Feld \'BCC\' setzen',
-  'Memo'                        => 'Memo',
   'Message'                     => 'Nachricht',
   'Missing \'description\' field.' => 'Fehlendes Feld \'description\'.',
   'Missing \'tag\' field.'      => 'Fehlendes Feld \'tag\'.',
-  'Missing amount'              => 'Fehlbetrag',
   'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
   'Missing parameter (at least one of #1) in call to sub #2.' => 'Fehlernder Parameter (mindestens einer aus \'#1\') in Funktionsaufruf \'#2\'.',
   'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
@@ -176,7 +158,6 @@ $self->{texts} = {
   'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
   'No.'                         => 'Position',
-  'Notes'                       => 'Bemerkungen',
   'Nov'                         => 'Nov',
   'November'                    => 'November',
   'Number'                      => 'Nummer',
@@ -185,9 +166,7 @@ $self->{texts} = {
   'October'                     => 'Oktober',
   'On Hand'                     => 'Auf Lager',
   'OpenDocument/OASIS'          => 'OpenDocument/OASIS',
-  'Order Date'                  => 'Auftragsdatum',
   'Order Date missing!'         => 'Auftragsdatum fehlt!',
-  'Order Number'                => 'Auftragsnummer',
   'Order Number missing!'       => 'Auftragsnummer fehlt!',
   'Others'                      => 'Andere',
   'PAYMENT POSTED'              => 'Rechung gebucht',
@@ -204,12 +183,9 @@ $self->{texts} = {
   'Part description'            => 'Artikelbeschreibung',
   'Payment date missing!'       => 'Tag der Zahlung fehlt!',
   'Payment posted!'             => 'Zahlung gebucht!',
-  'Payments'                    => 'Zahlungsausgänge',
   'Phone'                       => 'Telefon',
   'Pick List'                   => 'Sammelliste',
   'Please enter values'         => 'Bitte Werte eingeben',
-  'Post'                        => 'Buchen',
-  'Post Payment'                => 'Zahlung buchen',
   'Postscript'                  => 'Postscript',
   'Preview'                     => 'Druckvorschau',
   'Price'                       => 'Preis',
@@ -218,22 +194,18 @@ $self->{texts} = {
   'Printer'                     => 'Drucker',
   'Proforma Invoice'            => 'Proformarechnung',
   'Project'                     => 'Projekt',
-  'Project Number'              => 'Projektnummer',
   'Project not on file!'        => 'Dieses Projekt ist nicht in der Datenbank!',
   'Purchase Order'              => 'Lieferantenauftrag',
   'Qty'                         => 'Menge',
   'Queue'                       => 'Warteschlange',
   'Quotation'                   => 'Angebot',
-  'Quotation Date'              => 'Angebotsdatum',
   'Quotation Date missing!'     => 'Angebotsdatum fehlt!',
   'Quotation Number missing!'   => 'Angebotsnummer fehlt!',
   'RFQ'                         => 'Anfrage',
   'ROP'                         => 'Mindestlagerbestand',
   'Receipt, payment, reconciliation' => 'Zahlungseingang, Zahlungsausgang, Kontenabgleich',
   'Rechnungsnummer'             => 'Rechnungsnummer',
-  'Record in'                   => 'Buchen auf',
   'Release From Stock'          => 'Lagerausgang',
-  'Remaining'                   => 'Rest',
   'Reports'                     => 'Berichte',
   'Reqdate'                     => 'Lieferdatum',
   'Request for Quotation'       => 'Anfrage',
@@ -245,7 +217,6 @@ $self->{texts} = {
   'Sales Invoice'               => 'Rechnung',
   'Sales Order'                 => 'Kundenauftrag',
   'Sales quotation'             => 'Angebot',
-  'Save draft'                  => 'Entwurf speichern',
   'Screen'                      => 'Bildschirm',
   'Select a Customer'           => 'Endkunde auswählen',
   'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
@@ -258,21 +229,14 @@ $self->{texts} = {
   'Sep'                         => 'Sep',
   'September'                   => 'September',
   'Serial No.'                  => 'Seriennummer',
-  'Ship'                        => 'Lagerausgang',
-  'Ship rcvd'                   => 'Lagereingang',
   'Ship to'                     => 'Lieferadresse',
   'Shipping Address'            => 'Lieferadresse',
-  'Show details'                => 'Details anzeigen',
   'Skip'                        => 'Überspringen',
-  'Source'                      => 'Beleg',
-  'Steuersatz'                  => 'Steuersatz',
-  'Storno'                      => 'Storno',
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
   'Street'                      => 'Straße',
   'Subject'                     => 'Betreff',
   'Subtotal'                    => 'Zwischensumme',
-  'Tax Included'                => 'Steuer im Preis inbegriffen',
   'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'Das Feld \'tag\' darf nur aus alphanumerischen Zeichen und den Zeichen - _ ( ) bestehen.',
   'The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.' => 'Der LDAP-Server "#1:#2" ist nicht erreichbar. Bitte &uuml;berpr&uuml;fen Sie die Angaben in config/authentication.pl.',
   'The config file "config/authentication.pl" contained invalid Perl code:' => 'Die Konfigurationsdatei "config/authentication.pl" enthielt ung&uuml;tigen Perl-Code:',
@@ -281,16 +245,12 @@ $self->{texts} = {
   'The connection to the authentication database failed:' => 'Die Verbindung zur Authentifizierungsdatenbank schlug fehl:',
   'The connection to the template database failed:' => 'Die Verbindung zur Vorlagendatenbank schlug fehl:',
   'The creation of the authentication database failed:' => 'Das Anlegen der Authentifizierungsdatenbank schlug fehl:',
-  'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
   'To (email)'                  => 'An',
-  'Total'                       => 'Summe',
   'Transactions, AR transactions, AP transactions' => 'Dialogbuchen, Debitorenrechnungen, Kreditorenrechnungen',
   'Transfer To Stock'           => 'Lagereingang',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
   'Unit'                        => 'Einheit',
   'Unknown dependency \'%s\'.'  => 'Unbekannte Abh&auml;ngigkeit \'%s\'.',
-  'Update'                      => 'Erneuern',
-  'Use As Template'             => 'Als Vorlage verwenden',
   'Value'                       => 'Wert',
   'Variable'                    => 'Variable',
   'Vendor'                      => 'Lieferant',
@@ -308,16 +268,13 @@ $self->{texts} = {
   'Zipcode'                     => 'PLZ',
   '[email]'                     => '[email]',
   'bin_list'                    => 'Lagerliste',
-  'button'                      => '?',
   'config/authentication.pl: Key "DB_config" is missing.' => 'config/authentication.pl: Das Schl&uuml;sselwort "DB_config" fehlt.',
   'config/authentication.pl: Key "LDAP_config" is missing.' => 'config/authentication.pl: Der Schl&uuml;ssel "LDAP_config" fehlt.',
   'config/authentication.pl: Missing parameters in "DB_config". Required parameters are "host", "db" and "user".' => 'config/authentication.pl: Fehlende Parameter in "DB_config". Ben&ouml;tigte Parameter sind "host", "db" und "user".',
   'config/authentication.pl: Missing parameters in "LDAP_config". Required parameters are "host", "attribute" and "base_dn".' => 'config/authentication.pl: Fehlende Parameter in "LDAP_config". Ben&ouml;tigt werden "host", "attribute" und "base_dn".',
   'customer'                    => 'Kunde',
   'emailed to'                  => 'gemailt an',
-  'history'                     => 'Historie',
   'invoice'                     => 'Rechnung',
-  'mark as paid'                => 'als bezahlt markieren',
   'no'                          => 'nein',
   'none (pricegroup)'           => 'keine',
   'packing_list'                => 'Versandliste',
@@ -331,7 +288,6 @@ $self->{texts} = {
   'sent'                        => 'gesendet',
   'sent to printer'             => 'an Drucker geschickt',
   'vendor'                      => 'Lieferant',
-  'wrongformat'                 => 'Falsches Format',
   'yes'                         => 'ja',
 };
 
@@ -428,6 +384,7 @@ $self->{subs} = {
   'buchen'                      => 'post',
   'zahlung_buchen'              => 'post_payment',
   'entwurf_speichern'           => 'save_draft',
+  'entwurf_speichern'           => 'save_draft',
   'Überspringen'                => 'skip',
   'storno'                      => 'storno',
   'erneuern'                    => 'update',
index f38b4db..e906ba7 100644 (file)
@@ -233,11 +233,8 @@ $self->{texts} = {
   'Sep'                         => 'Sep',
   'September'                   => 'September',
   'Serial No.'                  => 'Seriennummer',
-  'Ship'                        => 'Lagerausgang',
-  'Ship rcvd'                   => 'Lagereingang',
   'Ship to'                     => 'Lieferadresse',
   'Shipping Address'            => 'Lieferadresse',
-  'Show details'                => 'Details anzeigen',
   'Skip'                        => 'Überspringen',
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
index 06d2385..e7e7294 100644 (file)
@@ -301,12 +301,9 @@ $self->{texts} = {
   'Sep'                         => 'Sep',
   'September'                   => 'September',
   'Serial No.'                  => 'Seriennummer',
-  'Ship'                        => 'Lagerausgang',
-  'Ship rcvd'                   => 'Lagereingang',
   'Ship to'                     => 'Lieferadresse',
   'Ship via'                    => 'Transportmittel',
   'Shipping Address'            => 'Lieferadresse',
-  'Show details'                => 'Details anzeigen',
   'Stock'                       => 'Einlagern',
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
index 93c36e7..6cdb6d3 100644 (file)
@@ -279,12 +279,9 @@ $self->{texts} = {
   'Sep'                         => 'Sep',
   'September'                   => 'September',
   'Serial No.'                  => 'Seriennummer',
-  'Ship'                        => 'Lagerausgang',
-  'Ship rcvd'                   => 'Lagereingang',
   'Ship to'                     => 'Lieferadresse',
   'Ship via'                    => 'Transportmittel',
   'Shipping Address'            => 'Lieferadresse',
-  'Show details'                => 'Details anzeigen',
   'Stock'                       => 'Einlagern',
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
index 1090cb9..391648e 100644 (file)
@@ -298,12 +298,9 @@ $self->{texts} = {
   'Sep'                         => 'Sep',
   'September'                   => 'September',
   'Serial No.'                  => 'Seriennummer',
-  'Ship'                        => 'Lagerausgang',
-  'Ship rcvd'                   => 'Lagereingang',
   'Ship to'                     => 'Lieferadresse',
   'Ship via'                    => 'Transportmittel',
   'Shipping Address'            => 'Lieferadresse',
-  'Show details'                => 'Details anzeigen',
   'Stock'                       => 'Einlagern',
   'Storno Invoice'              => 'Stornorechnung',
   'Storno Packing List'         => 'Stornolieferschein',
index 4a472a3..524bf2f 100644 (file)
@@ -93,6 +93,8 @@ $self->{texts} = {
   'Account deleted!'            => '',
   'Account for fees'            => '',
   'Account for interest'        => '',
+  'Account number'              => '',
+  'Account number #1, bank code #2, #3' => '',
   'Account saved!'              => '',
   'Accounting Group deleted!'   => '',
   'Accounting Group saved!'     => '',
@@ -147,6 +149,7 @@ $self->{texts} = {
   'Add Warehouse'               => '',
   'Add a new group'             => '',
   'Add and edit units'          => '',
+  'Add bank account'            => '',
   'Add custom variable'         => '',
   'Add note'                    => '',
   'Add to group'                => '',
@@ -162,7 +165,9 @@ $self->{texts} = {
   'All changes in that file have been reverted.' => '',
   'All database upgrades have been applied.' => '',
   'All general ledger entries'  => '',
+  'All of the exports you have selected were already closed.' => '',
   'All reports'                 => '',
+  'All the selected exports have already been closed, or all of their items have already been executed.' => '',
   'Allow access'                => '',
   'Allow the following users access to my follow-ups:' => '',
   'Alternatively you can create a new part which will then be selected.' => '',
@@ -234,6 +239,12 @@ $self->{texts} = {
   'Bank Code Number'            => '',
   'Bank Connection Tax Office'  => '',
   'Bank Connections'            => '',
+  'Bank accounts'               => '',
+  'Bank code'                   => '',
+  'Bank transfer amount'        => '',
+  'Bank transfer payment list for export #1' => '',
+  'Bank transfer via SEPA'      => '',
+  'Bank transfers via SEPA'     => '',
   'Base unit'                   => '',
   'Basic data'                  => '',
   'Batch Printing'              => '',
@@ -332,6 +343,7 @@ $self->{texts} = {
   'Change Lx-Office installation settings (all menu entries beneath \'System\')' => '',
   'Charge Number'               => '',
   'Charge number'               => '',
+  'Chart'                       => '',
   'Chart Type'                  => '',
   'Chart balance'               => '',
   'Chart of Accounts'           => '',
@@ -350,6 +362,7 @@ $self->{texts} = {
   'Click on login name to edit!' => '',
   'Close'                       => '',
   'Close Books up to'           => '',
+  'Close SEPA exports'          => '',
   'Close Window'                => '',
   'Closed'                      => '',
   'Collective Orders only work for orders from one customer!' => '',
@@ -399,6 +412,8 @@ $self->{texts} = {
   'Create and edit sales orders' => '',
   'Create and edit sales quotations' => '',
   'Create and edit vendor invoices' => '',
+  'Create bank transfer'        => '',
+  'Create bank transfer via SEPA XML' => '',
   'Create invoice?'             => '',
   'Create new'                  => '',
   'Create tables'               => '',
@@ -515,6 +530,8 @@ $self->{texts} = {
   'Description (Click on Description for details)' => '',
   'Description missing!'        => '',
   'Description must not be empty!' => '',
+  'Destination BIC'             => '',
+  'Destination IBAN'            => '',
   'Destination bin'             => '',
   'Destination warehouse'       => '',
   'Destination warehouse and bin' => '',
@@ -526,6 +543,7 @@ $self->{texts} = {
   'Display'                     => '',
   'Display file'                => '',
   'Display options'             => '',
+  'Do you really want to close the following SEPA exports? No payment will be recorded for bank transfers that haven\'t been marked as executed yet.' => '',
   'Do you really want to delete AP transaction #1?' => '',
   'Do you really want to delete AR transaction #1?' => '',
   'Do you really want to delete GL transaction #1?' => '',
@@ -538,6 +556,7 @@ $self->{texts} = {
   'Document'                    => '',
   'Documents in the WebDAV repository' => '',
   'Done'                        => '',
+  'Download SEPA XML export file' => '',
   'Download the backup'         => '',
   'Draft saved.'                => '',
   'Drawing'                     => '',
@@ -625,6 +644,7 @@ $self->{texts} = {
   'Edit Vendor Invoice'         => '',
   'Edit Warehouse'              => '',
   'Edit and delete a group'     => '',
+  'Edit bank account'           => '',
   'Edit custom variable'        => '',
   'Edit file'                   => '',
   'Edit greetings'              => '',
@@ -643,11 +663,13 @@ $self->{texts} = {
   'Edit the stylesheet'         => '',
   'Edit units'                  => '',
   'Editable'                    => '',
+  'Either there are no open invoices, or you have already initiated bank transfers with the open amounts for those that are still open.' => '',
   'Element disabled'            => '',
   'Employee'                    => '',
   'Empty transaction!'          => '',
   'Enter a description for this new draft.' => '',
   'Enter longdescription'       => '',
+  'Enter the requested execution date or leave empty for the quickest possible execution:' => '',
   'Enter up to 3 letters separated by a colon (i.e CAD:USD:EUR) for your native and foreign currencies' => '',
   'Equity'                      => '',
   'Error'                       => '',
@@ -666,6 +688,10 @@ $self->{texts} = {
   'Exchangerate Difference'     => '',
   'Exchangerate for payment missing!' => '',
   'Exchangerate missing!'       => '',
+  'Executed'                    => '',
+  'Execution date'              => '',
+  'Execution date from'         => '',
+  'Execution date to'           => '',
   'Existing Buchungsgruppen'    => '',
   'Existing Datasets'           => '',
   'Existing pending follow-ups for this item' => '',
@@ -682,6 +708,9 @@ $self->{texts} = {
   'Export Stammdaten'           => '',
   'Export as CSV'               => '',
   'Export as PDF'               => '',
+  'Export date'                 => '',
+  'Export date from'            => '',
+  'Export date to'              => '',
   'Extended'                    => '',
   'Extension Of Time'           => '',
   'Factor'                      => '',
@@ -829,6 +858,7 @@ $self->{texts} = {
   'Invoice deleted!'            => '',
   'Invoice for fees'            => '',
   'Invoice has already been storno\'d!' => '',
+  'Invoice number'              => '',
   'Invoice with Storno (abbreviation)' => '',
   'Invoices'                    => '',
   'Is this a summary account to record' => '',
@@ -906,8 +936,12 @@ $self->{texts} = {
   'List Tax'                    => '',
   'List Transactions'           => '',
   'List Warehouses'             => '',
+  'List bank accounts'          => '',
   'List export'                 => '',
+  'List of bank accounts'       => '',
+  'List of bank transfers'      => '',
   'List of custom variables'    => '',
+  'List open SEPA exports'      => '',
   'Load draft'                  => '',
   'Local Tax Office Preferences' => '',
   'Lock System'                 => '',
@@ -935,6 +969,7 @@ $self->{texts} = {
   'Mar'                         => '',
   'March'                       => '',
   'Margins'                     => '',
+  'Mark as closed'              => '',
   'Mark as paid?'               => '',
   'Mark closed'                 => '',
   'Marked as paid'              => '',
@@ -968,6 +1003,7 @@ $self->{texts} = {
   'Monat'                       => '',
   'Monthly'                     => '',
   'More than one control file with the tag \'%s\' exist.' => '',
+  'Multi mode not supported.'   => '',
   'Multibyte Encoding'          => '',
   'MwSt. inkl.'                 => '',
   'Name'                        => '',
@@ -979,6 +1015,7 @@ $self->{texts} = {
   'New Buchungsgruppe [% loop.count %]' => '',
   'New Templates'               => '',
   'New assembly'                => '',
+  'New bank account'            => '',
   'New contact'                 => '',
   'New customer'                => '',
   'New invoice'                 => '',
@@ -998,6 +1035,7 @@ $self->{texts} = {
   'No Vendor was found matching the search parameters.' => '',
   'No action defined.'          => '',
   'No backup file has been uploaded.' => '',
+  'No bank information has been entered in this vendor\'s master data entry. You cannot create bank transfers unless you enter bank information.' => '',
   'No bins have been added to this warehouse yet.' => '',
   'No customer has been selected yet.' => '',
   'No data was found.'          => '',
@@ -1012,6 +1050,7 @@ $self->{texts} = {
   'No part was found matching the search parameters.' => '',
   'No prices will be updated because no prices have been entered.' => '',
   'No problems were recognized.' => '',
+  'No transfers were executed in this export.' => '',
   'No unknown units where found.' => '',
   'No user has been selected.'  => '',
   'No valid number entered for pricegroup "#1".' => '',
@@ -1056,6 +1095,7 @@ $self->{texts} = {
   'One or more Perl modules missing' => '',
   'Only due follow-ups'         => '',
   'Open'                        => '',
+  'Open amount'                 => '',
   'OpenDocument/OASIS'          => '',
   'Openings'                    => '',
   'Optional comment'            => '',
@@ -1113,6 +1153,7 @@ $self->{texts} = {
   'Payment Terms missing in row ' => '',
   'Payment Terms saved!'        => '',
   'Payment date missing!'       => '',
+  'Payment list as PDF'         => '',
   'Payment posted!'             => '',
   'Payment terms deleted!'      => '',
   'Payments'                    => '',
@@ -1124,6 +1165,7 @@ $self->{texts} = {
   'Phone1'                      => '',
   'Phone2'                      => '',
   'Pick List'                   => '',
+  'Please Check the bank information for each vendor:' => '',
   'Please ask your administrator to create warehouses and bins.' => '',
   'Please enter a license key.' => '',
   'Please enter a number of licenses.' => '',
@@ -1142,6 +1184,7 @@ $self->{texts} = {
   'Please select a vendor from the list below.' => '',
   'Please select the chart of accounts this installation is using from the list below.' => '',
   'Please select the database you want to backup' => '',
+  'Please select the source bank account for the transfers:' => '',
   'Please seletct the dataset you want to delete:' => '',
   'Please specify a description for the warehouse designated for these goods.' => '',
   'Plural'                      => '',
@@ -1149,6 +1192,7 @@ $self->{texts} = {
   'Portrait'                    => '',
   'Post'                        => '',
   'Post Payment'                => '',
+  'Post payments'               => '',
   'Postscript'                  => '',
   'Posustva_coa'                => '',
   'Preferences'                 => '',
@@ -1157,6 +1201,7 @@ $self->{texts} = {
   'Preis'                       => '',
   'Preisgruppe'                 => '',
   'Preisklasse'                 => '',
+  'Prepare bank transfer via SEPA XML' => '',
   'Prepayment'                  => '',
   'Preview'                     => '',
   'Previous transdate text'     => '',
@@ -1211,6 +1256,7 @@ $self->{texts} = {
   'Purchase Prices'             => '',
   'Purchase delivery order'     => '',
   'Purchase invoices'           => '',
+  'Purpose'                     => '',
   'Qty'                         => '',
   'Qty according to delivery order' => '',
   'Qty in stock'                => '',
@@ -1271,6 +1317,9 @@ $self->{texts} = {
   'Request for Quotation'       => '',
   'Request for Quotations'      => '',
   'Request quotation'           => '',
+  'Requested execution date'    => '',
+  'Requested execution date from' => '',
+  'Requested execution date to' => '',
   'Required by'                 => '',
   'Restore Dataset'             => '',
   'Revenue'                     => '',
@@ -1281,6 +1330,8 @@ $self->{texts} = {
   'SAVED'                       => '',
   'SAVED FOR DUNNING'           => '',
   'SCREENED'                    => '',
+  'SEPA XML download'           => '',
+  'SEPA exports:'               => '',
   'Saldo Credit'                => '',
   'Saldo Debit'                 => '',
   'Saldo neu'                   => '',
@@ -1302,6 +1353,7 @@ $self->{texts} = {
   'Sat. Phone'                  => '',
   'Satz %'                      => '',
   'Save'                        => '',
+  'Save Draft'                  => '',
   'Save account first to insert taxkeys' => '',
   'Save and AP Transaction'     => '',
   'Save and AR Transaction'     => '',
@@ -1352,8 +1404,6 @@ $self->{texts} = {
   'Set eMail text'              => '',
   'Setup Menu'                  => '',
   'Setup Templates'             => '',
-  'Ship'                        => '',
-  'Ship rcvd'                   => '',
   'Ship to'                     => '',
   'Ship via'                    => '',
   'Shipping Address'            => '',
@@ -1362,8 +1412,10 @@ $self->{texts} = {
   'Shopartikel'                 => '',
   'Short'                       => '',
   'Show'                        => '',
+  'Show Salesman'               => '',
   'Show TODO list'              => '',
   'Show by default'             => '',
+  'Show custom variable search inputs' => '',
   'Show details'                => '',
   'Show follow ups...'          => '',
   'Show old dunnings'           => '',
@@ -1377,6 +1429,9 @@ $self->{texts} = {
   'Sold'                        => '',
   'Solution'                    => '',
   'Source'                      => '',
+  'Source BIC'                  => '',
+  'Source IBAN'                 => '',
+  'Source bank account'         => '',
   'Source bin'                  => '',
   'Spoolfile'                   => '',
   'Start Dunning Process'       => '',
@@ -1389,6 +1444,7 @@ $self->{texts} = {
   'Statement sent to'           => '',
   'Statements sent to printer!' => '',
   'Step 1 of 3: Parts'          => '',
+  'Step 2'                      => '',
   'Step 2 of 3: Services'       => '',
   'Step 3 of 3: Assemblies'     => '',
   'Step 3 of 3: Default units'  => '',
@@ -1416,6 +1472,7 @@ $self->{texts} = {
   'TODO list options'           => '',
   'TOP100'                      => '',
   'TOTAL'                       => '',
+  'Target bank account'         => '',
   'Tax'                         => '',
   'Tax Consultant'              => '',
   'Tax Included'                => '',
@@ -1459,11 +1516,13 @@ $self->{texts} = {
   'Text field variables: \'WIDTH=w HEIGHT=h\' sets the width and height of the text field. They default to 30 and 5 respectively.' => '',
   'Text variables: \'MAXLENGTH=n\' sets the maximum entry length to \'n\'.' => '',
   'Text, text field and number variables: The default value will be used as-is.' => '',
+  'That export does not exist.' => '',
   'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => '',
   'The AP transaction #1 has been deleted.' => '',
   'The AR transaction #1 has been deleted.' => '',
   'The GL transaction #1 has been deleted.' => '',
   'The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.' => '',
+  'The SEPA export has been created.' => '',
   'The access rights have been saved.' => '',
   'The assembly has been created.' => '',
   'The assistant could not find anything wrong with #1. Maybe the problem has been solved in the meantime.' => '',
@@ -1471,6 +1530,7 @@ $self->{texts} = {
   'The authentication database is not reachable at the moment. Either it hasn\'t been set up yet or the database server might be down. Please contact your administrator.' => '',
   'The available options depend on the varibale type:' => '',
   'The backup you upload here has to be a file created with &quot;pg_dump -o -Ft&quot;.' => '',
+  'The bank information must not be empty.' => '',
   'The base unit does not exist or it is about to be deleted in row %d.' => '',
   'The base unit does not exist.' => '',
   'The base unit relations must not contain loops (e.g. by saying that unit A\'s base unit is B, B\'s base unit is C and C\'s base unit is A) in row %d.' => '',
@@ -1537,6 +1597,7 @@ $self->{texts} = {
   'The parts have been removed.' => '',
   'The parts have been stocked.' => '',
   'The parts have been transferred.' => '',
+  'The payments have been posted.' => '',
   'The pg_dump process could not be started.' => '',
   'The pg_restore process could not be started.' => '',
   'The preferred one is to install packages provided by your operating system distribution (e.g. Debian or RPM packages).' => '',
@@ -1548,7 +1609,9 @@ $self->{texts} = {
   'The second reason is that Lx-Office allowed the user to enter the tax amount manually regardless of the taxkey used.' => '',
   'The second way is to use Perl\'s CPAN module and let it download and install the module for you.' => '',
   'The selected  PostgreSQL installation uses UTF-8 as its encoding. Therefore you have to configure Lx-Office to use UTF-8 as well.' => '',
+  'The selected bank account does not exist anymore.' => '',
   'The selected bin does not exist.' => '',
+  'The selected exports have been closed.' => '',
   'The selected warehouse does not exist.' => '',
   'The selected warehouse is empty.' => '',
   'The session is invalid or has expired.' => '',
@@ -1714,6 +1777,7 @@ $self->{texts} = {
   'Verrechnungseinheit'         => '',
   'Version'                     => '',
   'View License'                => '',
+  'View SEPA export'            => '',
   'View warehouse content'      => '',
   'Von Konto: '                 => '',
   'WEBDAV access'               => '',
@@ -1769,11 +1833,18 @@ $self->{texts} = {
   'You did not enter a name!'   => '',
   'You do not have the permissions to access this function.' => '',
   'You have entered or selected the following shipping address for this customer:' => '',
+  'You have not added bank accounts yet.' => '',
   'You have not selected any delivery order.' => '',
+  'You have not selected any export.' => '',
+  'You have not selected any item.' => '',
+  'You have selected none of the invoices.' => '',
   'You have to chose a dimension unit and a service unit which will then be assigned to those entries.' => '',
   'You have to chose which unit to save for each of them.' => '',
   'You have to create at least one group, grant it access to Lx-Office\'s functions and assign users to it.' => '',
   'You have to create new Buchungsgruppen for all the combinations of inventory, income and expense accounts that have been used already.' => '',
+  'You have to enter a company name in your user preferences (see the "Program" menu, "Preferences").' => '',
+  'You have to fill in at least an account number, the bank code, the IBAN and the BIC.' => '',
+  'You have to specify an execution date for each antry.' => '',
   'You must chose a user.'      => '',
   'You will now be forwarded to the administration panel.' => '',
   'You\'re not editing a file.' => '',
@@ -1797,6 +1868,9 @@ $self->{texts} = {
   'as at'                       => '',
   'assembly_list'               => '',
   'back'                        => '',
+  'bank_transfer_payment_list_#1' => '',
+  'bankaccounts'                => '',
+  'banktransfers'               => '',
   'bin_list'                    => '',
   'bis'                         => '',
   'button'                      => '',
@@ -1805,13 +1879,16 @@ $self->{texts} = {
   'chart_of_accounts'           => '',
   'choice'                      => '',
   'choice part'                 => '',
+  'click here to edit cvars'    => '',
   'close'                       => '',
+  'closed'                      => '',
   'config/authentication.pl: Key "DB_config" is missing.' => '',
   'config/authentication.pl: Key "LDAP_config" is missing.' => '',
   'config/authentication.pl: Missing parameters in "DB_config". Required parameters are "host", "db" and "user".' => '',
   'config/authentication.pl: Missing parameters in "LDAP_config". Required parameters are "host", "attribute" and "base_dn".' => '',
   'continue'                    => '',
   'correction'                  => '',
+  'cp_greeting to cp_gender migration' => '',
   'customer'                    => '',
   'customer_list'               => '',
   'customernumber not unique!'  => '',
@@ -1828,6 +1905,7 @@ $self->{texts} = {
   'eMail?'                      => '',
   'ea'                          => '',
   'emailed to'                  => '',
+  'executed'                    => '',
   'female'                      => '',
   'follow_up_list'              => '',
   'for'                         => '',
@@ -1855,10 +1933,13 @@ $self->{texts} = {
   'no'                          => '',
   'no chargenumber'             => '',
   'none (pricegroup)'           => '',
+  'not executed'                => '',
   'not transferred in yet'      => '',
   'not transferred out yet'     => '',
+  'not yet executed'            => '',
   'number'                      => '',
   'oe.pl::search called with unknown type' => '',
+  'open'                        => '',
   'order'                       => '',
   'our vendor number at customer' => '',
   'packing_list'                => '',
index 130e80b..7c86498 100644 (file)
@@ -104,7 +104,6 @@ $self->{texts} = {
   'Dunning'                     => 'Dunning',
   'ELSE'                        => 'ELSE',
   'Edit Accounts Payables Transaction' => 'Edit Creditor Transaction',
-  'Employee'                    => 'Employee',
   'Enter longdescription'       => 'Enter longdescription',
   'Error in database control file \'%s\': %s' => 'Error in database control file \'%s\': %s',
   'Exch'                        => 'Exch',
@@ -121,7 +120,6 @@ $self->{texts} = {
   'General ledger and cash'     => 'General ledger and cash',
   'History'                     => 'History',
   'ID'                          => 'ID',
-  'Include in Report'           => 'Include in Report',
   'Invoice'                     => 'Invoice',
   'Invoice (one letter abbreviation)' => 'Invoice (one letter abbreviation)',
   'Invoice Date'                => 'Invoice Date',
@@ -226,7 +224,6 @@ $self->{texts} = {
   'Storno Invoice'              => 'Storno Invoice',
   'Storno Packing List'         => 'Storno Packing List',
   'Subject'                     => 'Subject',
-  'Subtotal'                    => 'Subtotal',
   'Tax'                         => 'Tax',
   'Tax Included'                => 'Tax Included',
   'Taxkey'                      => 'Taxkey',
index 60cc426..dfd94d0 100644 (file)
@@ -124,7 +124,6 @@ $self->{texts} = {
   'General ledger and cash'     => 'General ledger and cash',
   'History'                     => 'History',
   'ID'                          => 'ID',
-  'Include in Report'           => 'Include in Report',
   'Incoming Payments'           => 'Incoming Payments',
   'Invoice'                     => 'Invoice',
   'Invoice (one letter abbreviation)' => 'Invoice (one letter abbreviation)',
@@ -231,7 +230,6 @@ $self->{texts} = {
   'Storno Invoice'              => 'Storno Invoice',
   'Storno Packing List'         => 'Storno Packing List',
   'Subject'                     => 'Subject',
-  'Subtotal'                    => 'Subtotal',
   'Tax'                         => 'Tax',
   'Tax Included'                => 'Tax Included',
   'Taxkey'                      => 'Taxkey',
diff --git a/locale/en/bankaccounts b/locale/en/bankaccounts
new file mode 100644 (file)
index 0000000..bdbc3e2
--- /dev/null
@@ -0,0 +1,221 @@
+#!/usr/bin/perl
+
+$self->{texts} = {
+  'A temporary file could not be created. Please verify that the directory "#1" is writeable by the webserver.' => 'A temporary file could not be created. Please verify that the directory "#1" is writeable by the webserver.',
+  'ADDED'                       => 'ADDED',
+  'AP'                          => 'Purchases',
+  'AR'                          => 'Sales',
+  'Account number'              => 'Account number',
+  'Add bank account'            => 'Add bank account',
+  'Address'                     => 'Address',
+  'Advance turnover tax return' => 'Advance turnover tax return',
+  'All reports'                 => 'All reports',
+  'Attempt to call an undefined sub named \'%s\'' => 'Attempt to call an undefined sub named \'%s\'',
+  'BIC'                         => 'BIC',
+  'Bank'                        => 'Bank',
+  'Bank code'                   => 'Bank code',
+  'Bcc'                         => 'Bcc',
+  'Bin List'                    => 'Bin List',
+  'Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.' => 'Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.',
+  'CANCELED'                    => 'CANCELED',
+  'CR'                          => 'CR',
+  'CRM admin'                   => 'CRM admin',
+  'CRM create customers, vendors and contacts' => 'CRM create customers, vendors and contacts',
+  'CRM follow up'               => 'CRM follow up',
+  'CRM know how'                => 'CRM know how',
+  'CRM notices'                 => 'CRM notices',
+  'CRM opportunity'             => 'CRM opportunity',
+  'CRM optional software'       => 'CRM optional software',
+  'CRM other'                   => 'CRM other',
+  'CRM search'                  => 'CRM search',
+  'CRM send email'              => 'CRM send email',
+  'CRM services'                => 'CRM services',
+  'CRM status'                  => 'CRM status',
+  'CRM termin'                  => 'CRM termin',
+  'CRM user'                    => 'CRM user',
+  'CSV export -- options'       => 'CSV export -- options',
+  'Cc'                          => 'Cc',
+  'Change Lx-Office installation settings (all menu entries beneath \'System\')' => 'Change Lx-Office installation settings (all menu entries beneath \'System\')',
+  'Confirmation'                => 'Confirmation',
+  'Contact'                     => 'Contact',
+  'Could not spawn the printer command.' => 'Could not spawn the printer command.',
+  'Create and edit RFQs'        => 'Create and edit RFQs',
+  'Create and edit customers and vendors' => 'Create and edit customers and vendors',
+  'Create and edit dunnings'    => 'Create and edit dunnings',
+  'Create and edit invoices and credit notes' => 'Create and edit invoices and credit notes',
+  'Create and edit parts, services, assemblies' => 'Create and edit parts, services, assemblies',
+  'Create and edit projects'    => 'Create and edit projects',
+  'Create and edit purchase delivery orders' => 'Create and edit purchase delivery orders',
+  'Create and edit purchase orders' => 'Create and edit purchase orders',
+  'Create and edit sales delivery orders' => 'Create and edit sales delivery orders',
+  'Create and edit sales orders' => 'Create and edit sales orders',
+  'Create and edit sales quotations' => 'Create and edit sales quotations',
+  'Create and edit vendor invoices' => 'Create and edit vendor invoices',
+  'Credit Note'                 => 'Credit Note',
+  'Customer Number'             => 'Customer Number',
+  'Customer details'            => 'Customer details',
+  'DATEV Export'                => 'DATEV Export',
+  'DELETED'                     => 'DELETED',
+  'DR'                          => 'DR',
+  'DUNNING STARTED'             => 'DUNNING STARTED',
+  'Dataset upgrade'             => 'Dataset upgrade',
+  'Date'                        => 'Date',
+  'Delivery Order'              => 'Delivery Order',
+  'Dependency loop detected:'   => 'Dependency loop detected:',
+  'Directory'                   => 'Directory',
+  'Dunning'                     => 'Dunning',
+  'ELSE'                        => 'ELSE',
+  'Edit bank account'           => 'Edit bank account',
+  'Enter longdescription'       => 'Enter longdescription',
+  'Error in database control file \'%s\': %s' => 'Error in database control file \'%s\': %s',
+  'File'                        => 'File',
+  'General ledger and cash'     => 'General ledger and cash',
+  'History'                     => 'History',
+  'IBAN'                        => 'IBAN',
+  'Invoice'                     => 'Invoice',
+  'List of bank accounts'       => 'List of bank accounts',
+  'MAILED'                      => 'MAILED',
+  'Manage license keys'         => 'Manage license keys',
+  'Mark as paid?'               => 'Mark as paid?',
+  'Marked as paid'              => 'Marked as paid',
+  'Master Data'                 => 'Master Data',
+  'May set the BCC field when sending emails' => 'May set the BCC field when sending emails',
+  'Message'                     => 'Message',
+  'Missing \'description\' field.' => 'Missing \'description\' field.',
+  'Missing \'tag\' field.'      => 'Missing \'tag\' field.',
+  'Missing parameter #1 in call to sub #2.' => 'Missing parameter #1 in call to sub #2.',
+  'Missing parameter (at least one of #1) in call to sub #2.' => 'Missing parameter (at least one of #1) in call to sub #2.',
+  'More than one control file with the tag \'%s\' exist.' => 'More than one control file with the tag \'%s\' exist.',
+  'Name'                        => 'Name',
+  'No %s was found matching the search parameters.' => 'No %s was found matching the search parameters.',
+  'No Customer was found matching the search parameters.' => 'No Customer was found matching the search parameters.',
+  'No Vendor was found matching the search parameters.' => 'No Vendor was found matching the search parameters.',
+  'No action defined.'          => 'No action defined.',
+  'No customer has been selected yet.' => 'No customer has been selected yet.',
+  'No or an unknown authenticantion module specified in "config/authentication.pl".' => 'No or an unknown authenticantion module specified in "config/authentication.pl".',
+  'No part was found matching the search parameters.' => 'No part was found matching the search parameters.',
+  'No vendor has been selected yet.' => 'No vendor has been selected yet.',
+  'Others'                      => 'Others',
+  'PAYMENT POSTED'              => 'PAYMENT POSTED',
+  'PDF export -- options'       => 'PDF export -- options',
+  'POSTED'                      => 'POSTED',
+  'POSTED AS NEW'               => 'POSTED AS NEW',
+  'PRINTED'                     => 'PRINTED',
+  'Packing List'                => 'Packing List',
+  'Page #1/#2'                  => 'Page #1/#2',
+  'Part Number'                 => 'Part Number',
+  'Part description'            => 'Part description',
+  'Pick List'                   => 'Pick List',
+  'Please enter values'         => 'Please enter values',
+  'Preview'                     => 'Preview',
+  'Proforma Invoice'            => 'Proforma Invoice',
+  'Purchase Order'              => 'Purchase Order',
+  'Quotation'                   => 'Quotation',
+  'RFQ'                         => 'RFQ',
+  'Receipt, payment, reconciliation' => 'Receipt, payment, reconciliation',
+  'Reports'                     => 'Reports',
+  'SAVED'                       => 'SAVED',
+  'SAVED FOR DUNNING'           => 'SAVED FOR DUNNING',
+  'SCREENED'                    => 'SCREENED',
+  'Select a Customer'           => 'Select a Customer',
+  'Select a customer'           => 'Select a customer',
+  'Select a part'               => 'Select a part',
+  'Select a vendor'             => 'Select a vendor',
+  'Storno Invoice'              => 'Storno Invoice',
+  'Storno Packing List'         => 'Storno Packing List',
+  'Subject'                     => 'Subject',
+  'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )',
+  'The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.' => 'The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.',
+  'The config file "config/authentication.pl" contained invalid Perl code:' => 'The config file "config/authentication.pl" contained invalid Perl code:',
+  'The config file "config/authentication.pl" was not found.' => 'The config file "config/authentication.pl" was not found.',
+  'The connection to the LDAP server cannot be encrypted (SSL/TLS startup failure). Please check config/authentication.pl.' => 'The connection to the LDAP server cannot be encrypted (SSL/TLS startup failure). Please check config/authentication.pl.',
+  'The connection to the authentication database failed:' => 'The connection to the authentication database failed:',
+  'The connection to the template database failed:' => 'The connection to the template database failed:',
+  'The creation of the authentication database failed:' => 'The creation of the authentication database failed:',
+  'The list has been printed.'  => 'The list has been printed.',
+  'To (email)'                  => 'To (email)',
+  'Transactions, AR transactions, AP transactions' => 'Transactions, AR transactions, AP transactions',
+  'Trying to call a sub without a name' => 'Trying to call a sub without a name',
+  'Unit'                        => 'Unit',
+  'Unknown dependency \'%s\'.'  => 'Unknown dependency \'%s\'.',
+  'Value'                       => 'Value',
+  'Variable'                    => 'Variable',
+  'Vendor details'              => 'Vendor details',
+  'View warehouse content'      => 'View warehouse content',
+  'Warehouse management'        => 'Warehouse management',
+  'You do not have the permissions to access this function.' => 'You do not have the permissions to access this function.',
+  'You have to fill in at least an account number, the bank code, the IBAN and the BIC.' => 'You have to fill in at least an account number, the bank code, the IBAN and the BIC.',
+  'Your PostgreSQL installationen uses UTF-8 as its encoding. Therefore you have to configure Lx-Office to use UTF-8 as well.' => 'Your PostgreSQL installationen uses UTF-8 as its encoding. Therefore you have to configure Lx-Office to use UTF-8 as well.',
+  '[email]'                     => '[email]',
+  'bankaccounts'                => 'bankaccounts',
+  'bin_list'                    => 'bin_list',
+  'config/authentication.pl: Key "DB_config" is missing.' => 'config/authentication.pl: Key "DB_config" is missing.',
+  'config/authentication.pl: Key "LDAP_config" is missing.' => 'config/authentication.pl: Key "LDAP_config" is missing.',
+  'config/authentication.pl: Missing parameters in "DB_config". Required parameters are "host", "db" and "user".' => 'config/authentication.pl: Missing parameters in "DB_config". Required parameters are "host", "db" and "user".',
+  'config/authentication.pl: Missing parameters in "LDAP_config". Required parameters are "host", "attribute" and "base_dn".' => 'config/authentication.pl: Missing parameters in "LDAP_config". Required parameters are "host", "attribute" and "base_dn".',
+  'customer'                    => 'customer',
+  'invoice'                     => 'invoice',
+  'no'                          => 'no',
+  'packing_list'                => 'packing_list',
+  'pick_list'                   => 'pick_list',
+  'proforma'                    => 'proforma',
+  'purchase_order'              => 'purchase_order',
+  'report_generator_dispatch_to is not defined.' => 'report_generator_dispatch_to is not defined.',
+  'report_generator_nextsub is not defined.' => 'report_generator_nextsub is not defined.',
+  'request_quotation'           => 'request_quotation',
+  'sales_order'                 => 'sales_order',
+  'sales_quotation'             => 'sales_quotation',
+  'vendor'                      => 'vendor',
+  'yes'                         => 'yes',
+};
+
+$self->{subs} = {
+  'E'                           => 'E',
+  'H'                           => 'H',
+  'NTI'                         => 'NTI',
+  'Q'                           => 'Q',
+  'ap_transaction'              => 'ap_transaction',
+  'ar_transaction'              => 'ar_transaction',
+  'bank_account_add'            => 'bank_account_add',
+  'bank_account_display_form'   => 'bank_account_display_form',
+  'bank_account_edit'           => 'bank_account_edit',
+  'bank_account_list'           => 'bank_account_list',
+  'bank_account_save'           => 'bank_account_save',
+  'build_std_url'               => 'build_std_url',
+  'calculate_qty'               => 'calculate_qty',
+  'call_sub'                    => 'call_sub',
+  'cov_selection_internal'      => 'cov_selection_internal',
+  'delivery_customer_selection' => 'delivery_customer_selection',
+  'dispatcher'                  => 'dispatcher',
+  'format_dates'                => 'format_dates',
+  'gl_transaction'              => 'gl_transaction',
+  'mark_as_paid_common'         => 'mark_as_paid_common',
+  'part_selection_internal'     => 'part_selection_internal',
+  'reformat_numbers'            => 'reformat_numbers',
+  'report_generator_back'       => 'report_generator_back',
+  'report_generator_dispatcher' => 'report_generator_dispatcher',
+  'report_generator_do'         => 'report_generator_do',
+  'report_generator_export_as_csv' => 'report_generator_export_as_csv',
+  'report_generator_export_as_pdf' => 'report_generator_export_as_pdf',
+  'report_generator_set_default_sort' => 'report_generator_set_default_sort',
+  'retrieve_partunits'          => 'retrieve_partunits',
+  'sales_invoice'               => 'sales_invoice',
+  'select_part'                 => 'select_part',
+  'select_part_internal'        => 'select_part_internal',
+  'set_longdescription'         => 'set_longdescription',
+  'show_history'                => 'show_history',
+  'show_vc_details'             => 'show_vc_details',
+  'vendor_invoice'              => 'vendor_invoice',
+  'vendor_selection'            => 'vendor_selection',
+  'add'                         => 'add',
+  'back'                        => 'back',
+  'close'                       => 'close',
+  'continue'                    => 'continue',
+  'delete'                      => 'delete',
+  'export_as_csv'               => 'export_as_csv',
+  'export_as_pdf'               => 'export_as_pdf',
+  'new_part'                    => 'new_part',
+  'save'                        => 'save',
+};
+
+1;
diff --git a/locale/en/cp_greeting_migration b/locale/en/cp_greeting_migration
new file mode 100644 (file)
index 0000000..0f67c20
--- /dev/null
@@ -0,0 +1,17 @@
+#!/usr/bin/perl
+
+$self->{texts} = {
+  'Database update error:'      => 'Database update error:',
+};
+
+$self->{subs} = {
+  'do_query'                    => 'do_query',
+  'do_update'                   => 'do_update',
+  'migrate_data'                => 'migrate_data',
+  'mydberror'                   => 'mydberror',
+  'print_question'              => 'print_question',
+  'query_result'                => 'query_result',
+  'set_default_greetings'       => 'set_default_greetings',
+};
+
+1;
index e28432c..8715bd9 100644 (file)
@@ -213,6 +213,7 @@ $self->{subs} = {
   'Q'                           => 'Q',
   'add'                         => 'add',
   'add_transaction'             => 'add_transaction',
+  'ajax_autocomplete'           => 'ajax_autocomplete',
   'ap_transaction'              => 'ap_transaction',
   'ar_transaction'              => 'ar_transaction',
   'build_std_url'               => 'build_std_url',
index d954e40..78643f8 100644 (file)
@@ -219,8 +219,8 @@ $self->{texts} = {
   'SCREENED'                    => 'SCREENED',
   'Sales Invoice'               => 'Sales Invoice',
   'Sales Order'                 => 'Sales Order',
-  'Salesperson'                 => 'Salesperson',
   'Sales quotation'             => 'Sales quotation',
+  'Salesperson'                 => 'Salesperson',
   'Screen'                      => 'Screen',
   'Select a Customer'           => 'Select a Customer',
   'Select a customer'           => 'Select a customer',
index 29fa9fc..24cee46 100644 (file)
@@ -241,12 +241,9 @@ $self->{texts} = {
   'Sep'                         => 'Sep',
   'September'                   => 'September',
   'Serial No.'                  => 'Serial No.',
-  'Ship'                        => 'Ship',
-  'Ship rcvd'                   => 'Ship rcvd',
   'Ship to'                     => 'Ship to',
   'Ship via'                    => 'Ship via',
   'Shipping Address'            => 'Shipping Address',
-  'Show details'                => 'Show details',
   'Stock'                       => 'Stock',
   'Storno Invoice'              => 'Storno Invoice',
   'Storno Packing List'         => 'Storno Packing List',
index a035bac..140c9bf 100644 (file)
@@ -262,12 +262,9 @@ $self->{texts} = {
   'Serial Number'               => 'Serial Number',
   'Service Number missing!'     => 'Service Number missing!',
   'Services'                    => 'Services',
-  'Ship'                        => 'Ship',
-  'Ship rcvd'                   => 'Ship rcvd',
   'Ship to'                     => 'Ship to',
   'Shipping Address'            => 'Shipping Address',
   'Short'                       => 'Short',
-  'Show details'                => 'Show details',
   'Sold'                        => 'Sold',
   'Storno Invoice'              => 'Storno Invoice',
   'Storno Packing List'         => 'Storno Packing List',
@@ -357,6 +354,7 @@ $self->{subs} = {
   '_update_ship'                => '_update_ship',
   'add'                         => 'add',
   'addtop100'                   => 'addtop100',
+  'ajax_autocomplete'           => 'ajax_autocomplete',
   'ap_transaction'              => 'ap_transaction',
   'ar_transaction'              => 'ar_transaction',
   'assembly_row'                => 'assembly_row',
index 9325123..f5744d6 100644 (file)
@@ -203,11 +203,8 @@ $self->{texts} = {
   'Sep'                         => 'Sep',
   'September'                   => 'September',
   'Serial No.'                  => 'Serial No.',
-  'Ship'                        => 'Ship',
-  'Ship rcvd'                   => 'Ship rcvd',
   'Ship to'                     => 'Ship to',
   'Shipping Address'            => 'Shipping Address',
-  'Show details'                => 'Show details',
   'Storno Invoice'              => 'Storno Invoice',
   'Storno Packing List'         => 'Storno Packing List',
   'Street'                      => 'Street',
index cd54583..9fdb38b 100644 (file)
@@ -9,7 +9,6 @@ $self->{texts} = {
   'AP Transaction'              => 'Purchase Transaction',
   'AR'                          => 'Sales',
   'AR Transaction'              => 'Sales Transaction',
-  'Account'                     => 'Account',
   'Add Purchase Order'          => 'Add Purchase Order',
   'Add Quotation'               => 'Add Quotation',
   'Add Request for Quotation'   => 'Add Request for Quotation',
@@ -18,7 +17,6 @@ $self->{texts} = {
   'Address'                     => 'Address',
   'Advance turnover tax return' => 'Advance turnover tax return',
   'All reports'                 => 'All reports',
-  'Amount'                      => 'Amount',
   'Apr'                         => 'Apr',
   'April'                       => 'April',
   'Are you sure you want to delete Invoice Number' => 'Are you sure you want to delete Invoice Number',
@@ -60,7 +58,6 @@ $self->{texts} = {
   'Confirm!'                    => 'Confirm!',
   'Confirmation'                => 'Confirmation',
   'Contact'                     => 'Contact',
-  'Contact Person'              => 'Contact Person',
   'Continue'                    => 'Continue',
   'Country'                     => 'Country',
   'Create and edit RFQs'        => 'Create and edit RFQs',
@@ -75,9 +72,7 @@ $self->{texts} = {
   'Create and edit sales orders' => 'Create and edit sales orders',
   'Create and edit sales quotations' => 'Create and edit sales quotations',
   'Create and edit vendor invoices' => 'Create and edit vendor invoices',
-  'Credit Limit'                => 'Credit Limit',
   'Credit Note'                 => 'Credit Note',
-  'Currency'                    => 'Currency',
   'Customer'                    => 'Customer',
   'Customer Number'             => 'Customer Number',
   'Customer details'            => 'Customer details',
@@ -91,7 +86,6 @@ $self->{texts} = {
   'Date'                        => 'Date',
   'Dec'                         => 'Dec',
   'December'                    => 'December',
-  'Delete'                      => 'Delete',
   'Delete drafts'               => 'Delete drafts',
   'Delivered'                   => 'Delivered',
   'Delivery Date'               => 'Delivery Date',
@@ -99,43 +93,33 @@ $self->{texts} = {
   'Department'                  => 'Department',
   'Dependency loop detected:'   => 'Dependency loop detected:',
   'Description'                 => 'Description',
-  'Details (one letter abbreviation)' => 'Details (one letter abbreviation)',
   'Directory'                   => 'Directory',
   'Discount'                    => 'Discount',
   'Draft saved.'                => 'Draft saved.',
-  'Due Date'                    => 'Due Date',
   'Dunning'                     => 'Dunning',
   'E-mail'                      => 'E-mail',
   'E-mail address missing!'     => 'E-mail address missing!',
   'EK'                          => 'EK',
   'ELSE'                        => 'ELSE',
   'Edit Vendor Invoice'         => 'Edit Vendor Invoice',
-  'Employee'                    => 'Employee',
   'Enter longdescription'       => 'Enter longdescription',
   'Error in database control file \'%s\': %s' => 'Error in database control file \'%s\': %s',
   'Ertrag'                      => 'Ertrag',
-  'Exch'                        => 'Exch',
-  'Exchangerate'                => 'Exchangerate',
   'Exchangerate for payment missing!' => 'Exchangerate for payment missing!',
   'Exchangerate missing!'       => 'Exchangerate missing!',
   'Extended'                    => 'Extended',
-  'Falsches Datumsformat!'      => 'Falsches Datumsformat!',
   'Fax'                         => 'Fax',
   'Feb'                         => 'Feb',
   'February'                    => 'February',
   'File'                        => 'File',
-  'Follow-Up'                   => 'Follow-Up',
   'GL Transaction'              => 'GL Transaction',
   'General ledger and cash'     => 'General ledger and cash',
   'Group'                       => 'Group',
   'History'                     => 'History',
   'In-line'                     => 'In-line',
-  'Internal Notes'              => 'Internal Notes',
   'Invnumber missing!'          => 'Invnumber missing!',
   'Invoice'                     => 'Invoice',
-  'Invoice Date'                => 'Invoice Date',
   'Invoice Date missing!'       => 'Invoice Date missing!',
-  'Invoice Number'              => 'Invoice Number',
   'Invoice Number missing!'     => 'Invoice Number missing!',
   'Invoice deleted!'            => 'Invoice deleted!',
   'Invoice has already been storno\'d!' => 'Invoice has already been storno\'d!',
@@ -158,11 +142,9 @@ $self->{texts} = {
   'May'                         => 'May',
   'May '                        => 'May ',
   'May set the BCC field when sending emails' => 'May set the BCC field when sending emails',
-  'Memo'                        => 'Memo',
   'Message'                     => 'Message',
   'Missing \'description\' field.' => 'Missing \'description\' field.',
   'Missing \'tag\' field.'      => 'Missing \'tag\' field.',
-  'Missing amount'              => 'Missing amount',
   'Missing parameter #1 in call to sub #2.' => 'Missing parameter #1 in call to sub #2.',
   'Missing parameter (at least one of #1) in call to sub #2.' => 'Missing parameter (at least one of #1) in call to sub #2.',
   'More than one control file with the tag \'%s\' exist.' => 'More than one control file with the tag \'%s\' exist.',
@@ -176,7 +158,6 @@ $self->{texts} = {
   'No part was found matching the search parameters.' => 'No part was found matching the search parameters.',
   'No vendor has been selected yet.' => 'No vendor has been selected yet.',
   'No.'                         => 'No.',
-  'Notes'                       => 'Notes',
   'Nov'                         => 'Nov',
   'November'                    => 'November',
   'Number'                      => 'Number',
@@ -185,9 +166,7 @@ $self->{texts} = {
   'October'                     => 'October',
   'On Hand'                     => 'On Hand',
   'OpenDocument/OASIS'          => 'OpenDocument/OASIS',
-  'Order Date'                  => 'Order Date',
   'Order Date missing!'         => 'Order Date missing!',
-  'Order Number'                => 'Order Number',
   'Order Number missing!'       => 'Order Number missing!',
   'Others'                      => 'Others',
   'PAYMENT POSTED'              => 'PAYMENT POSTED',
@@ -204,12 +183,9 @@ $self->{texts} = {
   'Part description'            => 'Part description',
   'Payment date missing!'       => 'Payment date missing!',
   'Payment posted!'             => 'Payment posted!',
-  'Payments'                    => 'Payments',
   'Phone'                       => 'Phone',
   'Pick List'                   => 'Pick List',
   'Please enter values'         => 'Please enter values',
-  'Post'                        => 'Post',
-  'Post Payment'                => 'Post Payment',
   'Postscript'                  => 'Postscript',
   'Preview'                     => 'Preview',
   'Price'                       => 'Price',
@@ -218,22 +194,18 @@ $self->{texts} = {
   'Printer'                     => 'Printer',
   'Proforma Invoice'            => 'Proforma Invoice',
   'Project'                     => 'Project',
-  'Project Number'              => 'Project Number',
   'Project not on file!'        => 'Project not on file!',
   'Purchase Order'              => 'Purchase Order',
   'Qty'                         => 'Qty',
   'Queue'                       => 'Queue',
   'Quotation'                   => 'Quotation',
-  'Quotation Date'              => 'Quotation Date',
   'Quotation Date missing!'     => 'Quotation Date missing!',
   'Quotation Number missing!'   => 'Quotation Number missing!',
   'RFQ'                         => 'RFQ',
   'ROP'                         => 'ROP',
   'Receipt, payment, reconciliation' => 'Receipt, payment, reconciliation',
   'Rechnungsnummer'             => 'Rechnungsnummer',
-  'Record in'                   => 'Record in',
   'Release From Stock'          => 'Release From Stock',
-  'Remaining'                   => 'Remaining',
   'Reports'                     => 'Reports',
   'Reqdate'                     => 'Reqdate',
   'Request for Quotation'       => 'Request for Quotation',
@@ -245,7 +217,6 @@ $self->{texts} = {
   'Sales Invoice'               => 'Sales Invoice',
   'Sales Order'                 => 'Sales Order',
   'Sales quotation'             => 'Sales quotation',
-  'Save draft'                  => 'Save draft',
   'Screen'                      => 'Screen',
   'Select a Customer'           => 'Select a Customer',
   'Select a customer'           => 'Select a customer',
@@ -258,21 +229,14 @@ $self->{texts} = {
   'Sep'                         => 'Sep',
   'September'                   => 'September',
   'Serial No.'                  => 'Serial No.',
-  'Ship'                        => 'Ship',
-  'Ship rcvd'                   => 'Ship rcvd',
   'Ship to'                     => 'Ship to',
   'Shipping Address'            => 'Shipping Address',
-  'Show details'                => 'Show details',
   'Skip'                        => 'Skip',
-  'Source'                      => 'Source',
-  'Steuersatz'                  => 'Steuersatz',
-  'Storno'                      => 'Storno',
   'Storno Invoice'              => 'Storno Invoice',
   'Storno Packing List'         => 'Storno Packing List',
   'Street'                      => 'Street',
   'Subject'                     => 'Subject',
   'Subtotal'                    => 'Subtotal',
-  'Tax Included'                => 'Tax Included',
   'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )',
   'The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.' => 'The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.',
   'The config file "config/authentication.pl" contained invalid Perl code:' => 'The config file "config/authentication.pl" contained invalid Perl code:',
@@ -281,16 +245,12 @@ $self->{texts} = {
   'The connection to the authentication database failed:' => 'The connection to the authentication database failed:',
   'The connection to the template database failed:' => 'The connection to the template database failed:',
   'The creation of the authentication database failed:' => 'The creation of the authentication database failed:',
-  'There are #1 unfinished follow-ups of which #2 are due.' => 'There are #1 unfinished follow-ups of which #2 are due.',
   'To (email)'                  => 'To (email)',
-  'Total'                       => 'Total',
   'Transactions, AR transactions, AP transactions' => 'Transactions, AR transactions, AP transactions',
   'Transfer To Stock'           => 'Transfer To Stock',
   'Trying to call a sub without a name' => 'Trying to call a sub without a name',
   'Unit'                        => 'Unit',
   'Unknown dependency \'%s\'.'  => 'Unknown dependency \'%s\'.',
-  'Update'                      => 'Update',
-  'Use As Template'             => 'Use As Template',
   'Value'                       => 'Value',
   'Variable'                    => 'Variable',
   'Vendor'                      => 'Vendor',
@@ -308,16 +268,13 @@ $self->{texts} = {
   'Zipcode'                     => 'Zipcode',
   '[email]'                     => '[email]',
   'bin_list'                    => 'bin_list',
-  'button'                      => 'button',
   'config/authentication.pl: Key "DB_config" is missing.' => 'config/authentication.pl: Key "DB_config" is missing.',
   'config/authentication.pl: Key "LDAP_config" is missing.' => 'config/authentication.pl: Key "LDAP_config" is missing.',
   'config/authentication.pl: Missing parameters in "DB_config". Required parameters are "host", "db" and "user".' => 'config/authentication.pl: Missing parameters in "DB_config". Required parameters are "host", "db" and "user".',
   'config/authentication.pl: Missing parameters in "LDAP_config". Required parameters are "host", "attribute" and "base_dn".' => 'config/authentication.pl: Missing parameters in "LDAP_config". Required parameters are "host", "attribute" and "base_dn".',
   'customer'                    => 'customer',
   'emailed to'                  => 'emailed to',
-  'history'                     => 'history',
   'invoice'                     => 'invoice',
-  'mark as paid'                => 'mark as paid',
   'no'                          => 'no',
   'none (pricegroup)'           => 'none (pricegroup)',
   'packing_list'                => 'packing_list',
@@ -331,7 +288,6 @@ $self->{texts} = {
   'sent'                        => 'sent',
   'sent to printer'             => 'sent to printer',
   'vendor'                      => 'vendor',
-  'wrongformat'                 => 'wrongformat',
   'yes'                         => 'yes',
 };
 
@@ -341,6 +297,7 @@ $self->{subs} = {
   'NTI'                         => 'NTI',
   'Q'                           => 'Q',
   '_check_io_auth'              => '_check_io_auth',
+  '_max_datepaid'               => '_max_datepaid',
   '_render_custom_variables_inputs' => '_render_custom_variables_inputs',
   '_update_custom_variables'    => '_update_custom_variables',
   '_update_part_information'    => '_update_part_information',
@@ -427,6 +384,7 @@ $self->{subs} = {
   'post'                        => 'post',
   'post_payment'                => 'post_payment',
   'save_draft'                  => 'save_draft',
+  'save_draft'                  => 'save_draft',
   'skip'                        => 'skip',
   'storno'                      => 'storno',
   'update'                      => 'update',
index 6117730..e0e7df7 100644 (file)
@@ -9,7 +9,6 @@ $self->{texts} = {
   'AP Transaction'              => 'Purchase Transaction',
   'AR'                          => 'Sales',
   'AR Transaction'              => 'Sales Transaction',
-  'Account'                     => 'Account',
   'Add Credit Note'             => 'Add Credit Note',
   'Add Purchase Order'          => 'Add Purchase Order',
   'Add Quotation'               => 'Add Quotation',
@@ -20,7 +19,6 @@ $self->{texts} = {
   'Address'                     => 'Address',
   'Advance turnover tax return' => 'Advance turnover tax return',
   'All reports'                 => 'All reports',
-  'Amount'                      => 'Amount',
   'Apr'                         => 'Apr',
   'April'                       => 'April',
   'Are you sure you want to delete Invoice Number' => 'Are you sure you want to delete Invoice Number',
@@ -57,14 +55,11 @@ $self->{texts} = {
   'Cannot storno storno invoice!' => 'Cannot storno storno invoice!',
   'Cc'                          => 'Cc',
   'Change Lx-Office installation settings (all menu entries beneath \'System\')' => 'Change Lx-Office installation settings (all menu entries beneath \'System\')',
-  'Choose Customer'             => 'Choose Customer',
-  'Choose Vendor'               => 'Choose Vendor',
   'City'                        => 'City',
   'Company Name'                => 'Company Name',
   'Confirm!'                    => 'Confirm!',
   'Confirmation'                => 'Confirmation',
   'Contact'                     => 'Contact',
-  'Contact Person'              => 'Contact Person',
   'Continue'                    => 'Continue',
   'Country'                     => 'Country',
   'Create and edit RFQs'        => 'Create and edit RFQs',
@@ -79,20 +74,13 @@ $self->{texts} = {
   'Create and edit sales orders' => 'Create and edit sales orders',
   'Create and edit sales quotations' => 'Create and edit sales quotations',
   'Create and edit vendor invoices' => 'Create and edit vendor invoices',
-  'Credit Limit'                => 'Credit Limit',
-  'Credit Limit exceeded!!!'    => 'Credit Limit exceeded!!!',
   'Credit Note'                 => 'Credit Note',
-  'Credit Note Date'            => 'Credit Note Date',
-  'Credit Note Number'          => 'Credit Note Number',
-  'Currency'                    => 'Currency',
   'Customer'                    => 'Customer',
   'Customer Number'             => 'Customer Number',
-  'Customer Order Number'       => 'Customer Order Number',
   'Customer details'            => 'Customer details',
   'Customer missing!'           => 'Customer missing!',
   'Customer not on file or locked!' => 'Customer not on file or locked!',
   'Customer not on file!'       => 'Customer not on file!',
-  'Customer type'               => 'Customer type',
   'DATEV Export'                => 'DATEV Export',
   'DELETED'                     => 'DELETED',
   'DR'                          => 'DR',
@@ -101,22 +89,17 @@ $self->{texts} = {
   'Date'                        => 'Date',
   'Dec'                         => 'Dec',
   'December'                    => 'December',
-  'Delete'                      => 'Delete',
   'Delete drafts'               => 'Delete drafts',
   'Delivered'                   => 'Delivered',
   'Delivery Date'               => 'Delivery Date',
   'Delivery Order'              => 'Delivery Order',
-  'Delivery Order Number'       => 'Delivery Order Number',
   'Department'                  => 'Department',
   'Dependency loop detected:'   => 'Dependency loop detected:',
   'Description'                 => 'Description',
-  'Details (one letter abbreviation)' => 'Details (one letter abbreviation)',
   'Directory'                   => 'Directory',
   'Discount'                    => 'Discount',
   'Draft saved.'                => 'Draft saved.',
-  'Due Date'                    => 'Due Date',
   'Dunning'                     => 'Dunning',
-  'Dunning Amount'              => 'Dunning Amount',
   'E-mail'                      => 'E-mail',
   'E-mail address missing!'     => 'E-mail address missing!',
   'EK'                          => 'EK',
@@ -125,33 +108,23 @@ $self->{texts} = {
   'Edit Sales Invoice'          => 'Edit Sales Invoice',
   'Edit Storno Credit Note'     => 'Edit Storno Credit Note',
   'Edit Storno Invoice'         => 'Edit Storno Invoice',
-  'Employee'                    => 'Employee',
   'Enter longdescription'       => 'Enter longdescription',
   'Error in database control file \'%s\': %s' => 'Error in database control file \'%s\': %s',
   'Ertrag'                      => 'Ertrag',
-  'Ertrag prozentual'           => 'Ertrag prozentual',
-  'Exch'                        => 'Exch',
-  'Exchangerate'                => 'Exchangerate',
   'Exchangerate for payment missing!' => 'Exchangerate for payment missing!',
   'Exchangerate missing!'       => 'Exchangerate missing!',
   'Extended'                    => 'Extended',
-  'Falsches Datumsformat!'      => 'Falsches Datumsformat!',
   'Fax'                         => 'Fax',
   'Feb'                         => 'Feb',
   'February'                    => 'February',
   'File'                        => 'File',
-  'Follow-Up'                   => 'Follow-Up',
   'GL Transaction'              => 'GL Transaction',
   'General ledger and cash'     => 'General ledger and cash',
   'Group'                       => 'Group',
   'History'                     => 'History',
   'In-line'                     => 'In-line',
-  'Incoming Payments'           => 'Incoming Payments',
-  'Internal Notes'              => 'Internal Notes',
   'Invoice'                     => 'Invoice',
-  'Invoice Date'                => 'Invoice Date',
   'Invoice Date missing!'       => 'Invoice Date missing!',
-  'Invoice Number'              => 'Invoice Number',
   'Invoice Number missing!'     => 'Invoice Number missing!',
   'Invoice deleted!'            => 'Invoice deleted!',
   'Invoice has already been storno\'d!' => 'Invoice has already been storno\'d!',
@@ -171,15 +144,12 @@ $self->{texts} = {
   'Mark as paid?'               => 'Mark as paid?',
   'Marked as paid'              => 'Marked as paid',
   'Master Data'                 => 'Master Data',
-  'Max. Dunning Level'          => 'Max. Dunning Level',
   'May'                         => 'May',
   'May '                        => 'May ',
   'May set the BCC field when sending emails' => 'May set the BCC field when sending emails',
-  'Memo'                        => 'Memo',
   'Message'                     => 'Message',
   'Missing \'description\' field.' => 'Missing \'description\' field.',
   'Missing \'tag\' field.'      => 'Missing \'tag\' field.',
-  'Missing amount'              => 'Missing amount',
   'Missing parameter #1 in call to sub #2.' => 'Missing parameter #1 in call to sub #2.',
   'Missing parameter (at least one of #1) in call to sub #2.' => 'Missing parameter (at least one of #1) in call to sub #2.',
   'More than one control file with the tag \'%s\' exist.' => 'More than one control file with the tag \'%s\' exist.',
@@ -193,7 +163,6 @@ $self->{texts} = {
   'No part was found matching the search parameters.' => 'No part was found matching the search parameters.',
   'No vendor has been selected yet.' => 'No vendor has been selected yet.',
   'No.'                         => 'No.',
-  'Notes'                       => 'Notes',
   'Nov'                         => 'Nov',
   'November'                    => 'November',
   'Number'                      => 'Number',
@@ -202,10 +171,7 @@ $self->{texts} = {
   'October'                     => 'October',
   'On Hand'                     => 'On Hand',
   'OpenDocument/OASIS'          => 'OpenDocument/OASIS',
-  'Order'                       => 'Order',
-  'Order Date'                  => 'Order Date',
   'Order Date missing!'         => 'Order Date missing!',
-  'Order Number'                => 'Order Number',
   'Order Number missing!'       => 'Order Number missing!',
   'Others'                      => 'Others',
   'PAYMENT POSTED'              => 'PAYMENT POSTED',
@@ -220,41 +186,30 @@ $self->{texts} = {
   'Part Description'            => 'Part Description',
   'Part Number'                 => 'Part Number',
   'Part description'            => 'Part description',
-  'Payment Terms'               => 'Payment Terms',
   'Payment date missing!'       => 'Payment date missing!',
   'Payment posted!'             => 'Payment posted!',
-  'Payments'                    => 'Payments',
   'Phone'                       => 'Phone',
   'Pick List'                   => 'Pick List',
   'Please enter values'         => 'Please enter values',
-  'Post'                        => 'Post',
-  'Post Payment'                => 'Post Payment',
   'Postscript'                  => 'Postscript',
   'Preview'                     => 'Preview',
   'Price'                       => 'Price',
   'Price Factor'                => 'Price Factor',
   'Pricegroup'                  => 'Pricegroup',
-  'Print'                       => 'Print',
-  'Print and Post'              => 'Print and Post',
   'Printer'                     => 'Printer',
   'Proforma Invoice'            => 'Proforma Invoice',
   'Project'                     => 'Project',
-  'Project Number'              => 'Project Number',
   'Project not on file!'        => 'Project not on file!',
   'Purchase Order'              => 'Purchase Order',
   'Qty'                         => 'Qty',
   'Queue'                       => 'Queue',
   'Quotation'                   => 'Quotation',
-  'Quotation Date'              => 'Quotation Date',
   'Quotation Date missing!'     => 'Quotation Date missing!',
-  'Quotation Number'            => 'Quotation Number',
   'Quotation Number missing!'   => 'Quotation Number missing!',
   'RFQ'                         => 'RFQ',
   'ROP'                         => 'ROP',
   'Receipt, payment, reconciliation' => 'Receipt, payment, reconciliation',
-  'Record in'                   => 'Record in',
   'Release From Stock'          => 'Release From Stock',
-  'Remaining'                   => 'Remaining',
   'Reports'                     => 'Reports',
   'Reqdate'                     => 'Reqdate',
   'Request for Quotation'       => 'Request for Quotation',
@@ -266,8 +221,6 @@ $self->{texts} = {
   'Sales Invoice'               => 'Sales Invoice',
   'Sales Order'                 => 'Sales Order',
   'Sales quotation'             => 'Sales quotation',
-  'Salesman'                    => 'Salesman',
-  'Save draft'                  => 'Save draft',
   'Screen'                      => 'Screen',
   'Select a Customer'           => 'Select a Customer',
   'Select a customer'           => 'Select a customer',
@@ -280,23 +233,14 @@ $self->{texts} = {
   'Sep'                         => 'Sep',
   'September'                   => 'September',
   'Serial No.'                  => 'Serial No.',
-  'Ship'                        => 'Ship',
-  'Ship rcvd'                   => 'Ship rcvd',
   'Ship to'                     => 'Ship to',
-  'Ship via'                    => 'Ship via',
   'Shipping Address'            => 'Shipping Address',
-  'Shipping Point'              => 'Shipping Point',
-  'Show details'                => 'Show details',
   'Skip'                        => 'Skip',
-  'Source'                      => 'Source',
-  'Steuersatz'                  => 'Steuersatz',
-  'Storno'                      => 'Storno',
   'Storno Invoice'              => 'Storno Invoice',
   'Storno Packing List'         => 'Storno Packing List',
   'Street'                      => 'Street',
   'Subject'                     => 'Subject',
   'Subtotal'                    => 'Subtotal',
-  'Tax Included'                => 'Tax Included',
   'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )',
   'The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.' => 'The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.',
   'The config file "config/authentication.pl" contained invalid Perl code:' => 'The config file "config/authentication.pl" contained invalid Perl code:',
@@ -305,18 +249,12 @@ $self->{texts} = {
   'The connection to the authentication database failed:' => 'The connection to the authentication database failed:',
   'The connection to the template database failed:' => 'The connection to the template database failed:',
   'The creation of the authentication database failed:' => 'The creation of the authentication database failed:',
-  'There are #1 unfinished follow-ups of which #2 are due.' => 'There are #1 unfinished follow-ups of which #2 are due.',
   'To (email)'                  => 'To (email)',
-  'Total'                       => 'Total',
-  'Trade Discount'              => 'Trade Discount',
-  'Transaction description'     => 'Transaction description',
   'Transactions, AR transactions, AP transactions' => 'Transactions, AR transactions, AP transactions',
   'Transfer To Stock'           => 'Transfer To Stock',
   'Trying to call a sub without a name' => 'Trying to call a sub without a name',
   'Unit'                        => 'Unit',
   'Unknown dependency \'%s\'.'  => 'Unknown dependency \'%s\'.',
-  'Update'                      => 'Update',
-  'Use As Template'             => 'Use As Template',
   'Value'                       => 'Value',
   'Variable'                    => 'Variable',
   'Vendor'                      => 'Vendor',
@@ -333,16 +271,13 @@ $self->{texts} = {
   'Zipcode'                     => 'Zipcode',
   '[email]'                     => '[email]',
   'bin_list'                    => 'bin_list',
-  'button'                      => 'button',
   'config/authentication.pl: Key "DB_config" is missing.' => 'config/authentication.pl: Key "DB_config" is missing.',
   'config/authentication.pl: Key "LDAP_config" is missing.' => 'config/authentication.pl: Key "LDAP_config" is missing.',
   'config/authentication.pl: Missing parameters in "DB_config". Required parameters are "host", "db" and "user".' => 'config/authentication.pl: Missing parameters in "DB_config". Required parameters are "host", "db" and "user".',
   'config/authentication.pl: Missing parameters in "LDAP_config". Required parameters are "host", "attribute" and "base_dn".' => 'config/authentication.pl: Missing parameters in "LDAP_config". Required parameters are "host", "attribute" and "base_dn".',
   'customer'                    => 'customer',
   'emailed to'                  => 'emailed to',
-  'history'                     => 'history',
   'invoice'                     => 'invoice',
-  'mark as paid'                => 'mark as paid',
   'no'                          => 'no',
   'none (pricegroup)'           => 'none (pricegroup)',
   'packing_list'                => 'packing_list',
@@ -356,7 +291,6 @@ $self->{texts} = {
   'sent'                        => 'sent',
   'sent to printer'             => 'sent to printer',
   'vendor'                      => 'vendor',
-  'wrongformat'                 => 'wrongformat',
   'yes'                         => 'yes',
 };
 
@@ -461,6 +395,7 @@ $self->{subs} = {
   'print'                       => 'print',
   'print_and_post'              => 'print_and_post',
   'save_draft'                  => 'save_draft',
+  'save_draft'                  => 'save_draft',
   'ship_to'                     => 'ship_to',
   'skip'                        => 'skip',
   'storno'                      => 'storno',
index 7578046..d38739d 100644 (file)
@@ -301,12 +301,9 @@ $self->{texts} = {
   'Sep'                         => 'Sep',
   'September'                   => 'September',
   'Serial No.'                  => 'Serial No.',
-  'Ship'                        => 'Ship',
-  'Ship rcvd'                   => 'Ship rcvd',
   'Ship to'                     => 'Ship to',
   'Ship via'                    => 'Ship via',
   'Shipping Address'            => 'Shipping Address',
-  'Show details'                => 'Show details',
   'Stock'                       => 'Stock',
   'Storno Invoice'              => 'Storno Invoice',
   'Storno Packing List'         => 'Storno Packing List',
index 05a7378..5e165a9 100644 (file)
@@ -4,8 +4,6 @@
 # This file will be auto-generated by locales.pl. Do not edit it.
 
 @lost = (
-  { 'text' => 'Receipt printing failed!', 'translation' => '' },
-  { 'text' => 'successfully deleted!', 'translation' => '' },
   { 'text' => 'C', 'translation' => '' },
   { 'text' => 'Sales', 'translation' => '' },
   { 'text' => 'collected on sales', 'translation' => '' },
@@ -54,6 +52,8 @@
   { 'text' => 'O', 'translation' => '' },
   { 'text' => 'Accounts', 'translation' => '' },
   { 'text' => 'Retained Earnings', 'translation' => '' },
+  { 'text' => 'Ship rcvd', 'translation' => '' },
+  { 'text' => 'Ship', 'translation' => '' },
 );
 
 1;
index 551a553..a40506c 100644 (file)
@@ -40,6 +40,7 @@ $self->{texts} = {
   'Add Vendor'                  => 'Add Vendor',
   'Add Vendor Invoice'          => 'Add Vendor Invoice',
   'Add Warehouse'               => 'Add Warehouse',
+  'Add bank account'            => 'Add bank account',
   'Administration area'         => 'Administration area',
   'Advance turnover tax return' => 'Advance turnover tax return',
   'All reports'                 => 'All reports',
@@ -47,6 +48,9 @@ $self->{texts} = {
   'Audit Control'               => 'Audit Control',
   'BWA'                         => 'BWA',
   'Balance Sheet'               => 'Balance Sheet',
+  'Bank accounts'               => 'Bank accounts',
+  'Bank transfer via SEPA'      => 'Bank transfer via SEPA',
+  'Bank transfers via SEPA'     => 'Bank transfers via SEPA',
   'Batch Printing'              => 'Batch Printing',
   'Bcc'                         => 'Bcc',
   'Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.' => 'Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.',
@@ -131,6 +135,7 @@ $self->{texts} = {
   'List Printer'                => 'List Printer',
   'List Tax'                    => 'List Tax',
   'List Warehouses'             => 'List Warehouses',
+  'List bank accounts'          => 'List bank accounts',
   'Logout'                      => 'Logout',
   'Manage license keys'         => 'Manage license keys',
   'Master Data'                 => 'Master Data',
index 3739518..c25d1c3 100644 (file)
@@ -39,6 +39,7 @@ $self->{texts} = {
   'Add Vendor'                  => 'Add Vendor',
   'Add Vendor Invoice'          => 'Add Vendor Invoice',
   'Add Warehouse'               => 'Add Warehouse',
+  'Add bank account'            => 'Add bank account',
   'Administration area'         => 'Administration area',
   'Advance turnover tax return' => 'Advance turnover tax return',
   'All reports'                 => 'All reports',
@@ -46,6 +47,9 @@ $self->{texts} = {
   'Audit Control'               => 'Audit Control',
   'BWA'                         => 'BWA',
   'Balance Sheet'               => 'Balance Sheet',
+  'Bank accounts'               => 'Bank accounts',
+  'Bank transfer via SEPA'      => 'Bank transfer via SEPA',
+  'Bank transfers via SEPA'     => 'Bank transfers via SEPA',
   'Batch Printing'              => 'Batch Printing',
   'Bcc'                         => 'Bcc',
   'Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.' => 'Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.',
@@ -130,6 +134,7 @@ $self->{texts} = {
   'List Printer'                => 'List Printer',
   'List Tax'                    => 'List Tax',
   'List Warehouses'             => 'List Warehouses',
+  'List bank accounts'          => 'List bank accounts',
   'Logout'                      => 'Logout',
   'Manage license keys'         => 'Manage license keys',
   'Master Data'                 => 'Master Data',
index 8ee0961..563cd2f 100644 (file)
@@ -82,6 +82,8 @@ $missing = {
   'Account deleted!'            => '',
   'Account for fees'            => '',
   'Account for interest'        => '',
+  'Account number'              => '',
+  'Account number #1, bank code #2, #3' => '',
   'Account saved!'              => '',
   'Accounting Group deleted!'   => '',
   'Accounting Group saved!'     => '',
@@ -134,6 +136,7 @@ $missing = {
   'Add Warehouse'               => '',
   'Add a new group'             => '',
   'Add and edit units'          => '',
+  'Add bank account'            => '',
   'Add custom variable'         => '',
   'Add note'                    => '',
   'Add to group'                => '',
@@ -149,7 +152,9 @@ $missing = {
   'All changes in that file have been reverted.' => '',
   'All database upgrades have been applied.' => '',
   'All general ledger entries'  => '',
+  'All of the exports you have selected were already closed.' => '',
   'All reports'                 => '',
+  'All the selected exports have already been closed, or all of their items have already been executed.' => '',
   'Allow access'                => '',
   'Allow the following users access to my follow-ups:' => '',
   'Alternatively you can create a new part which will then be selected.' => '',
@@ -221,6 +226,12 @@ $missing = {
   'Bank Code Number'            => '',
   'Bank Connection Tax Office'  => '',
   'Bank Connections'            => '',
+  'Bank accounts'               => '',
+  'Bank code'                   => '',
+  'Bank transfer amount'        => '',
+  'Bank transfer payment list for export #1' => '',
+  'Bank transfer via SEPA'      => '',
+  'Bank transfers via SEPA'     => '',
   'Base unit'                   => '',
   'Basic data'                  => '',
   'Batch Printing'              => '',
@@ -319,6 +330,7 @@ $missing = {
   'Change Lx-Office installation settings (all menu entries beneath \'System\')' => '',
   'Charge Number'               => '',
   'Charge number'               => '',
+  'Chart'                       => '',
   'Chart Type'                  => '',
   'Chart balance'               => '',
   'Chart of Accounts'           => '',
@@ -336,6 +348,7 @@ $missing = {
   'Click on login name to edit!' => '',
   'Close'                       => '',
   'Close Books up to'           => '',
+  'Close SEPA exports'          => '',
   'Close Window'                => '',
   'Closed'                      => '',
   'Collective Orders only work for orders from one customer!' => '',
@@ -385,6 +398,8 @@ $missing = {
   'Create and edit sales orders' => '',
   'Create and edit sales quotations' => '',
   'Create and edit vendor invoices' => '',
+  'Create bank transfer'        => '',
+  'Create bank transfer via SEPA XML' => '',
   'Create invoice?'             => '',
   'Create new'                  => '',
   'Create tables'               => '',
@@ -501,6 +516,8 @@ $missing = {
   'Description (Click on Description for details)' => '',
   'Description missing!'        => '',
   'Description must not be empty!' => '',
+  'Destination BIC'             => '',
+  'Destination IBAN'            => '',
   'Destination bin'             => '',
   'Destination warehouse'       => '',
   'Destination warehouse and bin' => '',
@@ -512,6 +529,7 @@ $missing = {
   'Display'                     => '',
   'Display file'                => '',
   'Display options'             => '',
+  'Do you really want to close the following SEPA exports? No payment will be recorded for bank transfers that haven\'t been marked as executed yet.' => '',
   'Do you really want to delete AP transaction #1?' => '',
   'Do you really want to delete AR transaction #1?' => '',
   'Do you really want to delete GL transaction #1?' => '',
@@ -524,6 +542,7 @@ $missing = {
   'Document'                    => '',
   'Documents in the WebDAV repository' => '',
   'Done'                        => '',
+  'Download SEPA XML export file' => '',
   'Download the backup'         => '',
   'Draft saved.'                => '',
   'Drawing'                     => '',
@@ -609,6 +628,7 @@ $missing = {
   'Edit Vendor Invoice'         => '',
   'Edit Warehouse'              => '',
   'Edit and delete a group'     => '',
+  'Edit bank account'           => '',
   'Edit custom variable'        => '',
   'Edit file'                   => '',
   'Edit greetings'              => '',
@@ -627,11 +647,13 @@ $missing = {
   'Edit the stylesheet'         => '',
   'Edit units'                  => '',
   'Editable'                    => '',
+  'Either there are no open invoices, or you have already initiated bank transfers with the open amounts for those that are still open.' => '',
   'Element disabled'            => '',
   'Employee'                    => '',
   'Empty transaction!'          => '',
   'Enter a description for this new draft.' => '',
   'Enter longdescription'       => '',
+  'Enter the requested execution date or leave empty for the quickest possible execution:' => '',
   'Enter up to 3 letters separated by a colon (i.e CAD:USD:EUR) for your native and foreign currencies' => '',
   'Equity'                      => '',
   'Error'                       => '',
@@ -650,6 +672,10 @@ $missing = {
   'Exchangerate Difference'     => '',
   'Exchangerate for payment missing!' => '',
   'Exchangerate missing!'       => '',
+  'Executed'                    => '',
+  'Execution date'              => '',
+  'Execution date from'         => '',
+  'Execution date to'           => '',
   'Existing Buchungsgruppen'    => '',
   'Existing Datasets'           => '',
   'Existing pending follow-ups for this item' => '',
@@ -666,6 +692,9 @@ $missing = {
   'Export Stammdaten'           => '',
   'Export as CSV'               => '',
   'Export as PDF'               => '',
+  'Export date'                 => '',
+  'Export date from'            => '',
+  'Export date to'              => '',
   'Extended'                    => '',
   'Extension Of Time'           => '',
   'Factor'                      => '',
@@ -813,6 +842,7 @@ $missing = {
   'Invoice deleted!'            => '',
   'Invoice for fees'            => '',
   'Invoice has already been storno\'d!' => '',
+  'Invoice number'              => '',
   'Invoice with Storno (abbreviation)' => '',
   'Invoices'                    => '',
   'Is this a summary account to record' => '',
@@ -890,8 +920,12 @@ $missing = {
   'List Tax'                    => '',
   'List Transactions'           => '',
   'List Warehouses'             => '',
+  'List bank accounts'          => '',
   'List export'                 => '',
+  'List of bank accounts'       => '',
+  'List of bank transfers'      => '',
   'List of custom variables'    => '',
+  'List open SEPA exports'      => '',
   'Load draft'                  => '',
   'Local Tax Office Preferences' => '',
   'Lock System'                 => '',
@@ -919,6 +953,7 @@ $missing = {
   'Mar'                         => '',
   'March'                       => '',
   'Margins'                     => '',
+  'Mark as closed'              => '',
   'Mark as paid?'               => '',
   'Mark closed'                 => '',
   'Marked as paid'              => '',
@@ -952,6 +987,7 @@ $missing = {
   'Monat'                       => '',
   'Monthly'                     => '',
   'More than one control file with the tag \'%s\' exist.' => '',
+  'Multi mode not supported.'   => '',
   'Multibyte Encoding'          => '',
   'MwSt. inkl.'                 => '',
   'Name'                        => '',
@@ -963,6 +999,7 @@ $missing = {
   'New Buchungsgruppe [% loop.count %]' => '',
   'New Templates'               => '',
   'New assembly'                => '',
+  'New bank account'            => '',
   'New contact'                 => '',
   'New customer'                => '',
   'New invoice'                 => '',
@@ -982,6 +1019,7 @@ $missing = {
   'No Vendor was found matching the search parameters.' => '',
   'No action defined.'          => '',
   'No backup file has been uploaded.' => '',
+  'No bank information has been entered in this vendor\'s master data entry. You cannot create bank transfers unless you enter bank information.' => '',
   'No bins have been added to this warehouse yet.' => '',
   'No customer has been selected yet.' => '',
   'No data was found.'          => '',
@@ -996,6 +1034,7 @@ $missing = {
   'No part was found matching the search parameters.' => '',
   'No prices will be updated because no prices have been entered.' => '',
   'No problems were recognized.' => '',
+  'No transfers were executed in this export.' => '',
   'No unknown units where found.' => '',
   'No user has been selected.'  => '',
   'No valid number entered for pricegroup "#1".' => '',
@@ -1040,6 +1079,7 @@ $missing = {
   'One or more Perl modules missing' => '',
   'Only due follow-ups'         => '',
   'Open'                        => '',
+  'Open amount'                 => '',
   'OpenDocument/OASIS'          => '',
   'Openings'                    => '',
   'Optional comment'            => '',
@@ -1097,6 +1137,7 @@ $missing = {
   'Payment Terms missing in row ' => '',
   'Payment Terms saved!'        => '',
   'Payment date missing!'       => '',
+  'Payment list as PDF'         => '',
   'Payment posted!'             => '',
   'Payment terms deleted!'      => '',
   'Payments'                    => '',
@@ -1108,6 +1149,7 @@ $missing = {
   'Phone1'                      => '',
   'Phone2'                      => '',
   'Pick List'                   => '',
+  'Please Check the bank information for each vendor:' => '',
   'Please ask your administrator to create warehouses and bins.' => '',
   'Please enter a license key.' => '',
   'Please enter a number of licenses.' => '',
@@ -1126,6 +1168,7 @@ $missing = {
   'Please select a vendor from the list below.' => '',
   'Please select the chart of accounts this installation is using from the list below.' => '',
   'Please select the database you want to backup' => '',
+  'Please select the source bank account for the transfers:' => '',
   'Please seletct the dataset you want to delete:' => '',
   'Please specify a description for the warehouse designated for these goods.' => '',
   'Plural'                      => '',
@@ -1133,6 +1176,7 @@ $missing = {
   'Portrait'                    => '',
   'Post'                        => '',
   'Post Payment'                => '',
+  'Post payments'               => '',
   'Postscript'                  => '',
   'Posustva_coa'                => '',
   'Preferences'                 => '',
@@ -1141,6 +1185,7 @@ $missing = {
   'Preis'                       => '',
   'Preisgruppe'                 => '',
   'Preisklasse'                 => '',
+  'Prepare bank transfer via SEPA XML' => '',
   'Prepayment'                  => '',
   'Preview'                     => '',
   'Previous transdate text'     => '',
@@ -1195,6 +1240,7 @@ $missing = {
   'Purchase Prices'             => '',
   'Purchase delivery order'     => '',
   'Purchase invoices'           => '',
+  'Purpose'                     => '',
   'Qty'                         => '',
   'Qty according to delivery order' => '',
   'Qty in stock'                => '',
@@ -1255,6 +1301,9 @@ $missing = {
   'Request for Quotation'       => '',
   'Request for Quotations'      => '',
   'Request quotation'           => '',
+  'Requested execution date'    => '',
+  'Requested execution date from' => '',
+  'Requested execution date to' => '',
   'Required by'                 => '',
   'Restore Dataset'             => '',
   'Revenue'                     => '',
@@ -1265,6 +1314,8 @@ $missing = {
   'SAVED'                       => '',
   'SAVED FOR DUNNING'           => '',
   'SCREENED'                    => '',
+  'SEPA XML download'           => '',
+  'SEPA exports:'               => '',
   'Saldo Credit'                => '',
   'Saldo Debit'                 => '',
   'Saldo neu'                   => '',
@@ -1286,6 +1337,7 @@ $missing = {
   'Sat. Phone'                  => '',
   'Satz %'                      => '',
   'Save'                        => '',
+  'Save Draft'                  => '',
   'Save account first to insert taxkeys' => '',
   'Save and AP Transaction'     => '',
   'Save and AR Transaction'     => '',
@@ -1336,8 +1388,6 @@ $missing = {
   'Set eMail text'              => '',
   'Setup Menu'                  => '',
   'Setup Templates'             => '',
-  'Ship'                        => '',
-  'Ship rcvd'                   => '',
   'Ship to'                     => '',
   'Ship via'                    => '',
   'Shipping Address'            => '',
@@ -1346,8 +1396,10 @@ $missing = {
   'Shopartikel'                 => '',
   'Short'                       => '',
   'Show'                        => '',
+  'Show Salesman'               => '',
   'Show TODO list'              => '',
   'Show by default'             => '',
+  'Show custom variable search inputs' => '',
   'Show details'                => '',
   'Show follow ups...'          => '',
   'Show old dunnings'           => '',
@@ -1361,6 +1413,9 @@ $missing = {
   'Sold'                        => '',
   'Solution'                    => '',
   'Source'                      => '',
+  'Source BIC'                  => '',
+  'Source IBAN'                 => '',
+  'Source bank account'         => '',
   'Source bin'                  => '',
   'Spoolfile'                   => '',
   'Start Dunning Process'       => '',
@@ -1373,6 +1428,7 @@ $missing = {
   'Statement sent to'           => '',
   'Statements sent to printer!' => '',
   'Step 1 of 3: Parts'          => '',
+  'Step 2'                      => '',
   'Step 2 of 3: Services'       => '',
   'Step 3 of 3: Assemblies'     => '',
   'Step 3 of 3: Default units'  => '',
@@ -1400,6 +1456,7 @@ $missing = {
   'TODO list options'           => '',
   'TOP100'                      => '',
   'TOTAL'                       => '',
+  'Target bank account'         => '',
   'Tax'                         => '',
   'Tax Consultant'              => '',
   'Tax Included'                => '',
@@ -1443,11 +1500,13 @@ $missing = {
   'Text field variables: \'WIDTH=w HEIGHT=h\' sets the width and height of the text field. They default to 30 and 5 respectively.' => '',
   'Text variables: \'MAXLENGTH=n\' sets the maximum entry length to \'n\'.' => '',
   'Text, text field and number variables: The default value will be used as-is.' => '',
+  'That export does not exist.' => '',
   'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => '',
   'The AP transaction #1 has been deleted.' => '',
   'The AR transaction #1 has been deleted.' => '',
   'The GL transaction #1 has been deleted.' => '',
   'The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.' => '',
+  'The SEPA export has been created.' => '',
   'The access rights have been saved.' => '',
   'The assembly has been created.' => '',
   'The assistant could not find anything wrong with #1. Maybe the problem has been solved in the meantime.' => '',
@@ -1455,6 +1514,7 @@ $missing = {
   'The authentication database is not reachable at the moment. Either it hasn\'t been set up yet or the database server might be down. Please contact your administrator.' => '',
   'The available options depend on the varibale type:' => '',
   'The backup you upload here has to be a file created with &quot;pg_dump -o -Ft&quot;.' => '',
+  'The bank information must not be empty.' => '',
   'The base unit does not exist or it is about to be deleted in row %d.' => '',
   'The base unit does not exist.' => '',
   'The base unit relations must not contain loops (e.g. by saying that unit A\'s base unit is B, B\'s base unit is C and C\'s base unit is A) in row %d.' => '',
@@ -1521,6 +1581,7 @@ $missing = {
   'The parts have been removed.' => '',
   'The parts have been stocked.' => '',
   'The parts have been transferred.' => '',
+  'The payments have been posted.' => '',
   'The pg_dump process could not be started.' => '',
   'The pg_restore process could not be started.' => '',
   'The preferred one is to install packages provided by your operating system distribution (e.g. Debian or RPM packages).' => '',
@@ -1532,7 +1593,9 @@ $missing = {
   'The second reason is that Lx-Office allowed the user to enter the tax amount manually regardless of the taxkey used.' => '',
   'The second way is to use Perl\'s CPAN module and let it download and install the module for you.' => '',
   'The selected  PostgreSQL installation uses UTF-8 as its encoding. Therefore you have to configure Lx-Office to use UTF-8 as well.' => '',
+  'The selected bank account does not exist anymore.' => '',
   'The selected bin does not exist.' => '',
+  'The selected exports have been closed.' => '',
   'The selected warehouse does not exist.' => '',
   'The selected warehouse is empty.' => '',
   'The session is invalid or has expired.' => '',
@@ -1698,6 +1761,7 @@ $missing = {
   'Verrechnungseinheit'         => '',
   'Version'                     => '',
   'View License'                => '',
+  'View SEPA export'            => '',
   'View warehouse content'      => '',
   'Von Konto: '                 => '',
   'WEBDAV access'               => '',
@@ -1753,11 +1817,18 @@ $missing = {
   'You did not enter a name!'   => '',
   'You do not have the permissions to access this function.' => '',
   'You have entered or selected the following shipping address for this customer:' => '',
+  'You have not added bank accounts yet.' => '',
   'You have not selected any delivery order.' => '',
+  'You have not selected any export.' => '',
+  'You have not selected any item.' => '',
+  'You have selected none of the invoices.' => '',
   'You have to chose a dimension unit and a service unit which will then be assigned to those entries.' => '',
   'You have to chose which unit to save for each of them.' => '',
   'You have to create at least one group, grant it access to Lx-Office\'s functions and assign users to it.' => '',
   'You have to create new Buchungsgruppen for all the combinations of inventory, income and expense accounts that have been used already.' => '',
+  'You have to enter a company name in your user preferences (see the "Program" menu, "Preferences").' => '',
+  'You have to fill in at least an account number, the bank code, the IBAN and the BIC.' => '',
+  'You have to specify an execution date for each antry.' => '',
   'You must chose a user.'      => '',
   'You will now be forwarded to the administration panel.' => '',
   'You\'re not editing a file.' => '',
@@ -1781,6 +1852,9 @@ $missing = {
   'as at'                       => '',
   'assembly_list'               => '',
   'back'                        => '',
+  'bank_transfer_payment_list_#1' => '',
+  'bankaccounts'                => '',
+  'banktransfers'               => '',
   'bin_list'                    => '',
   'bis'                         => '',
   'button'                      => '',
@@ -1789,13 +1863,16 @@ $missing = {
   'chart_of_accounts'           => '',
   'choice'                      => '',
   'choice part'                 => '',
+  'click here to edit cvars'    => '',
   'close'                       => '',
+  'closed'                      => '',
   'config/authentication.pl: Key "DB_config" is missing.' => '',
   'config/authentication.pl: Key "LDAP_config" is missing.' => '',
   'config/authentication.pl: Missing parameters in "DB_config". Required parameters are "host", "db" and "user".' => '',
   'config/authentication.pl: Missing parameters in "LDAP_config". Required parameters are "host", "attribute" and "base_dn".' => '',
   'continue'                    => '',
   'correction'                  => '',
+  'cp_greeting to cp_gender migration' => '',
   'customer'                    => '',
   'customer_list'               => '',
   'customernumber not unique!'  => '',
@@ -1812,6 +1889,7 @@ $missing = {
   'eMail?'                      => '',
   'ea'                          => '',
   'emailed to'                  => '',
+  'executed'                    => '',
   'female'                      => '',
   'follow_up_list'              => '',
   'for'                         => '',
@@ -1839,10 +1917,13 @@ $missing = {
   'no'                          => '',
   'no chargenumber'             => '',
   'none (pricegroup)'           => '',
+  'not executed'                => '',
   'not transferred in yet'      => '',
   'not transferred out yet'     => '',
+  'not yet executed'            => '',
   'number'                      => '',
   'oe.pl::search called with unknown type' => '',
+  'open'                        => '',
   'order'                       => '',
   'our vendor number at customer' => '',
   'packing_list'                => '',
index 1626976..f14cbfe 100644 (file)
@@ -279,12 +279,9 @@ $self->{texts} = {
   'Sep'                         => 'Sep',
   'September'                   => 'September',
   'Serial No.'                  => 'Serial No.',
-  'Ship'                        => 'Ship',
-  'Ship rcvd'                   => 'Ship rcvd',
   'Ship to'                     => 'Ship to',
   'Ship via'                    => 'Ship via',
   'Shipping Address'            => 'Shipping Address',
-  'Show details'                => 'Show details',
   'Stock'                       => 'Stock',
   'Storno Invoice'              => 'Storno Invoice',
   'Storno Packing List'         => 'Storno Packing List',
diff --git a/locale/en/sepa b/locale/en/sepa
new file mode 100644 (file)
index 0000000..742d910
--- /dev/null
@@ -0,0 +1,279 @@
+#!/usr/bin/perl
+
+$self->{texts} = {
+  'A temporary file could not be created. Please verify that the directory "#1" is writeable by the webserver.' => 'A temporary file could not be created. Please verify that the directory "#1" is writeable by the webserver.',
+  'ADDED'                       => 'ADDED',
+  'AP'                          => 'Purchases',
+  'AP Transaction'              => 'Purchase Transaction',
+  'AR'                          => 'Sales',
+  'AR Transaction'              => 'Sales Transaction',
+  'Account number #1, bank code #2, #3' => 'Account number #1, bank code #2, #3',
+  'Address'                     => 'Address',
+  'Advance turnover tax return' => 'Advance turnover tax return',
+  'All of the exports you have selected were already closed.' => 'All of the exports you have selected were already closed.',
+  'All reports'                 => 'All reports',
+  'All the selected exports have already been closed, or all of their items have already been executed.' => 'All the selected exports have already been closed, or all of their items have already been executed.',
+  'Amount'                      => 'Amount',
+  'Attempt to call an undefined sub named \'%s\'' => 'Attempt to call an undefined sub named \'%s\'',
+  'Bank transfer payment list for export #1' => 'Bank transfer payment list for export #1',
+  'Bcc'                         => 'Bcc',
+  'Bin List'                    => 'Bin List',
+  'Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.' => 'Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.',
+  'CANCELED'                    => 'CANCELED',
+  'CR'                          => 'CR',
+  'CRM admin'                   => 'CRM admin',
+  'CRM create customers, vendors and contacts' => 'CRM create customers, vendors and contacts',
+  'CRM follow up'               => 'CRM follow up',
+  'CRM know how'                => 'CRM know how',
+  'CRM notices'                 => 'CRM notices',
+  'CRM opportunity'             => 'CRM opportunity',
+  'CRM optional software'       => 'CRM optional software',
+  'CRM other'                   => 'CRM other',
+  'CRM search'                  => 'CRM search',
+  'CRM send email'              => 'CRM send email',
+  'CRM services'                => 'CRM services',
+  'CRM status'                  => 'CRM status',
+  'CRM termin'                  => 'CRM termin',
+  'CRM user'                    => 'CRM user',
+  'CSV export -- options'       => 'CSV export -- options',
+  'Cc'                          => 'Cc',
+  'Change Lx-Office installation settings (all menu entries beneath \'System\')' => 'Change Lx-Office installation settings (all menu entries beneath \'System\')',
+  'Close SEPA exports'          => 'Close SEPA exports',
+  'Closed'                      => 'Closed',
+  'Confirmation'                => 'Confirmation',
+  'Contact'                     => 'Contact',
+  'Could not spawn the printer command.' => 'Could not spawn the printer command.',
+  'Create and edit RFQs'        => 'Create and edit RFQs',
+  'Create and edit customers and vendors' => 'Create and edit customers and vendors',
+  'Create and edit dunnings'    => 'Create and edit dunnings',
+  'Create and edit invoices and credit notes' => 'Create and edit invoices and credit notes',
+  'Create and edit parts, services, assemblies' => 'Create and edit parts, services, assemblies',
+  'Create and edit projects'    => 'Create and edit projects',
+  'Create and edit purchase delivery orders' => 'Create and edit purchase delivery orders',
+  'Create and edit purchase orders' => 'Create and edit purchase orders',
+  'Create and edit sales delivery orders' => 'Create and edit sales delivery orders',
+  'Create and edit sales orders' => 'Create and edit sales orders',
+  'Create and edit sales quotations' => 'Create and edit sales quotations',
+  'Create and edit vendor invoices' => 'Create and edit vendor invoices',
+  'Create bank transfer via SEPA XML' => 'Create bank transfer via SEPA XML',
+  'Credit Note'                 => 'Credit Note',
+  'Customer'                    => 'Customer',
+  'Customer Number'             => 'Customer Number',
+  'Customer details'            => 'Customer details',
+  'DATEV Export'                => 'DATEV Export',
+  'DELETED'                     => 'DELETED',
+  'DR'                          => 'DR',
+  'DUNNING STARTED'             => 'DUNNING STARTED',
+  'Dataset upgrade'             => 'Dataset upgrade',
+  'Date'                        => 'Date',
+  'Delivery Order'              => 'Delivery Order',
+  'Dependency loop detected:'   => 'Dependency loop detected:',
+  'Destination BIC'             => 'Destination BIC',
+  'Destination IBAN'            => 'Destination IBAN',
+  'Directory'                   => 'Directory',
+  'Dunning'                     => 'Dunning',
+  'ELSE'                        => 'ELSE',
+  'Either there are no open invoices, or you have already initiated bank transfers with the open amounts for those that are still open.' => 'Either there are no open invoices, or you have already initiated bank transfers with the open amounts for those that are still open.',
+  'Employee'                    => 'Employee',
+  'Enter longdescription'       => 'Enter longdescription',
+  'Error in database control file \'%s\': %s' => 'Error in database control file \'%s\': %s',
+  'Executed'                    => 'Executed',
+  'Execution date'              => 'Execution date',
+  'Execution date from'         => 'Execution date from',
+  'Execution date to'           => 'Execution date to',
+  'Export date'                 => 'Export date',
+  'Export date from'            => 'Export date from',
+  'Export date to'              => 'Export date to',
+  'File'                        => 'File',
+  'GL Transaction'              => 'GL Transaction',
+  'General ledger and cash'     => 'General ledger and cash',
+  'History'                     => 'History',
+  'Invoice'                     => 'Invoice',
+  'Invoice number'              => 'Invoice number',
+  'List of bank transfers'      => 'List of bank transfers',
+  'MAILED'                      => 'MAILED',
+  'Manage license keys'         => 'Manage license keys',
+  'Mark as paid?'               => 'Mark as paid?',
+  'Marked as paid'              => 'Marked as paid',
+  'Master Data'                 => 'Master Data',
+  'May set the BCC field when sending emails' => 'May set the BCC field when sending emails',
+  'Message'                     => 'Message',
+  'Missing \'description\' field.' => 'Missing \'description\' field.',
+  'Missing \'tag\' field.'      => 'Missing \'tag\' field.',
+  'Missing parameter #1 in call to sub #2.' => 'Missing parameter #1 in call to sub #2.',
+  'Missing parameter (at least one of #1) in call to sub #2.' => 'Missing parameter (at least one of #1) in call to sub #2.',
+  'More than one control file with the tag \'%s\' exist.' => 'More than one control file with the tag \'%s\' exist.',
+  'Multi mode not supported.'   => 'Multi mode not supported.',
+  'Name'                        => 'Name',
+  'No'                          => 'No',
+  'No %s was found matching the search parameters.' => 'No %s was found matching the search parameters.',
+  'No Customer was found matching the search parameters.' => 'No Customer was found matching the search parameters.',
+  'No Vendor was found matching the search parameters.' => 'No Vendor was found matching the search parameters.',
+  'No action defined.'          => 'No action defined.',
+  'No customer has been selected yet.' => 'No customer has been selected yet.',
+  'No or an unknown authenticantion module specified in "config/authentication.pl".' => 'No or an unknown authenticantion module specified in "config/authentication.pl".',
+  'No part was found matching the search parameters.' => 'No part was found matching the search parameters.',
+  'No transfers were executed in this export.' => 'No transfers were executed in this export.',
+  'No vendor has been selected yet.' => 'No vendor has been selected yet.',
+  'Number'                      => 'Number',
+  'Others'                      => 'Others',
+  'PAYMENT POSTED'              => 'PAYMENT POSTED',
+  'PDF export -- options'       => 'PDF export -- options',
+  'POSTED'                      => 'POSTED',
+  'POSTED AS NEW'               => 'POSTED AS NEW',
+  'PRINTED'                     => 'PRINTED',
+  'Packing List'                => 'Packing List',
+  'Page #1/#2'                  => 'Page #1/#2',
+  'Part Number'                 => 'Part Number',
+  'Part description'            => 'Part description',
+  'Pick List'                   => 'Pick List',
+  'Please enter values'         => 'Please enter values',
+  'Prepare bank transfer via SEPA XML' => 'Prepare bank transfer via SEPA XML',
+  'Preview'                     => 'Preview',
+  'Proforma Invoice'            => 'Proforma Invoice',
+  'Purchase Order'              => 'Purchase Order',
+  'Quotation'                   => 'Quotation',
+  'RFQ'                         => 'RFQ',
+  'Receipt, payment, reconciliation' => 'Receipt, payment, reconciliation',
+  'Reference'                   => 'Reference',
+  'Reports'                     => 'Reports',
+  'Request quotation'           => 'Request quotation',
+  'Requested execution date from' => 'Requested execution date from',
+  'Requested execution date to' => 'Requested execution date to',
+  'SAVED'                       => 'SAVED',
+  'SAVED FOR DUNNING'           => 'SAVED FOR DUNNING',
+  'SCREENED'                    => 'SCREENED',
+  'Sales Invoice'               => 'Sales Invoice',
+  'Sales Order'                 => 'Sales Order',
+  'Sales quotation'             => 'Sales quotation',
+  'Select a Customer'           => 'Select a Customer',
+  'Select a customer'           => 'Select a customer',
+  'Select a part'               => 'Select a part',
+  'Select a vendor'             => 'Select a vendor',
+  'Source BIC'                  => 'Source BIC',
+  'Source IBAN'                 => 'Source IBAN',
+  'Storno Invoice'              => 'Storno Invoice',
+  'Storno Packing List'         => 'Storno Packing List',
+  'Subject'                     => 'Subject',
+  'That export does not exist.' => 'That export does not exist.',
+  'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )',
+  'The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.' => 'The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.',
+  'The bank information must not be empty.' => 'The bank information must not be empty.',
+  'The config file "config/authentication.pl" contained invalid Perl code:' => 'The config file "config/authentication.pl" contained invalid Perl code:',
+  'The config file "config/authentication.pl" was not found.' => 'The config file "config/authentication.pl" was not found.',
+  'The connection to the LDAP server cannot be encrypted (SSL/TLS startup failure). Please check config/authentication.pl.' => 'The connection to the LDAP server cannot be encrypted (SSL/TLS startup failure). Please check config/authentication.pl.',
+  'The connection to the authentication database failed:' => 'The connection to the authentication database failed:',
+  'The connection to the template database failed:' => 'The connection to the template database failed:',
+  'The creation of the authentication database failed:' => 'The creation of the authentication database failed:',
+  'The list has been printed.'  => 'The list has been printed.',
+  'The payments have been posted.' => 'The payments have been posted.',
+  'The selected bank account does not exist anymore.' => 'The selected bank account does not exist anymore.',
+  'The selected exports have been closed.' => 'The selected exports have been closed.',
+  'To (email)'                  => 'To (email)',
+  'Transactions, AR transactions, AP transactions' => 'Transactions, AR transactions, AP transactions',
+  'Trying to call a sub without a name' => 'Trying to call a sub without a name',
+  'Unit'                        => 'Unit',
+  'Unknown dependency \'%s\'.'  => 'Unknown dependency \'%s\'.',
+  'Value'                       => 'Value',
+  'Variable'                    => 'Variable',
+  'Vendor'                      => 'Vendor',
+  'Vendor Invoice'              => 'Vendor Invoice',
+  'Vendor details'              => 'Vendor details',
+  'View SEPA export'            => 'View SEPA export',
+  'View warehouse content'      => 'View warehouse content',
+  'Warehouse management'        => 'Warehouse management',
+  'Yes'                         => 'Yes',
+  'You do not have the permissions to access this function.' => 'You do not have the permissions to access this function.',
+  'You have not added bank accounts yet.' => 'You have not added bank accounts yet.',
+  'You have not selected any export.' => 'You have not selected any export.',
+  'You have not selected any item.' => 'You have not selected any item.',
+  'You have selected none of the invoices.' => 'You have selected none of the invoices.',
+  'You have to enter a company name in your user preferences (see the "Program" menu, "Preferences").' => 'You have to enter a company name in your user preferences (see the "Program" menu, "Preferences").',
+  'You have to specify an execution date for each antry.' => 'You have to specify an execution date for each antry.',
+  'Your PostgreSQL installationen uses UTF-8 as its encoding. Therefore you have to configure Lx-Office to use UTF-8 as well.' => 'Your PostgreSQL installationen uses UTF-8 as its encoding. Therefore you have to configure Lx-Office to use UTF-8 as well.',
+  '[email]'                     => '[email]',
+  'bank_transfer_payment_list_#1' => 'bank_transfer_payment_list_#1',
+  'banktransfers'               => 'banktransfers',
+  'bin_list'                    => 'bin_list',
+  'closed'                      => 'closed',
+  'config/authentication.pl: Key "DB_config" is missing.' => 'config/authentication.pl: Key "DB_config" is missing.',
+  'config/authentication.pl: Key "LDAP_config" is missing.' => 'config/authentication.pl: Key "LDAP_config" is missing.',
+  'config/authentication.pl: Missing parameters in "DB_config". Required parameters are "host", "db" and "user".' => 'config/authentication.pl: Missing parameters in "DB_config". Required parameters are "host", "db" and "user".',
+  'config/authentication.pl: Missing parameters in "LDAP_config". Required parameters are "host", "attribute" and "base_dn".' => 'config/authentication.pl: Missing parameters in "LDAP_config". Required parameters are "host", "attribute" and "base_dn".',
+  'customer'                    => 'customer',
+  'executed'                    => 'executed',
+  'invoice'                     => 'invoice',
+  'no'                          => 'no',
+  'not yet executed'            => 'not yet executed',
+  'open'                        => 'open',
+  'packing_list'                => 'packing_list',
+  'pick_list'                   => 'pick_list',
+  'proforma'                    => 'proforma',
+  'purchase_order'              => 'purchase_order',
+  'report_generator_dispatch_to is not defined.' => 'report_generator_dispatch_to is not defined.',
+  'report_generator_nextsub is not defined.' => 'report_generator_nextsub is not defined.',
+  'request_quotation'           => 'request_quotation',
+  'sales_order'                 => 'sales_order',
+  'sales_quotation'             => 'sales_quotation',
+  'vendor'                      => 'vendor',
+  'yes'                         => 'yes',
+};
+
+$self->{subs} = {
+  'E'                           => 'E',
+  'H'                           => 'H',
+  'NTI'                         => 'NTI',
+  'Q'                           => 'Q',
+  'ap_transaction'              => 'ap_transaction',
+  'ar_transaction'              => 'ar_transaction',
+  'bank_transfer_add'           => 'bank_transfer_add',
+  'bank_transfer_create'        => 'bank_transfer_create',
+  'bank_transfer_download_sepa_xml' => 'bank_transfer_download_sepa_xml',
+  'bank_transfer_edit'          => 'bank_transfer_edit',
+  'bank_transfer_list'          => 'bank_transfer_list',
+  'bank_transfer_mark_as_closed_step1' => 'bank_transfer_mark_as_closed_step1',
+  'bank_transfer_mark_as_closed_step2' => 'bank_transfer_mark_as_closed_step2',
+  'bank_transfer_payment_list_as_pdf' => 'bank_transfer_payment_list_as_pdf',
+  'bank_transfer_post_payments' => 'bank_transfer_post_payments',
+  'bank_transfer_search'        => 'bank_transfer_search',
+  'build_std_url'               => 'build_std_url',
+  'calculate_qty'               => 'calculate_qty',
+  'call_sub'                    => 'call_sub',
+  'cov_selection_internal'      => 'cov_selection_internal',
+  'delivery_customer_selection' => 'delivery_customer_selection',
+  'dispatcher'                  => 'dispatcher',
+  'format_dates'                => 'format_dates',
+  'gl_transaction'              => 'gl_transaction',
+  'mark_as_paid_common'         => 'mark_as_paid_common',
+  'part_selection_internal'     => 'part_selection_internal',
+  'reformat_numbers'            => 'reformat_numbers',
+  'report_generator_back'       => 'report_generator_back',
+  'report_generator_dispatcher' => 'report_generator_dispatcher',
+  'report_generator_do'         => 'report_generator_do',
+  'report_generator_export_as_csv' => 'report_generator_export_as_csv',
+  'report_generator_export_as_pdf' => 'report_generator_export_as_pdf',
+  'report_generator_set_default_sort' => 'report_generator_set_default_sort',
+  'retrieve_partunits'          => 'retrieve_partunits',
+  'sales_invoice'               => 'sales_invoice',
+  'select_part'                 => 'select_part',
+  'select_part_internal'        => 'select_part_internal',
+  'set_longdescription'         => 'set_longdescription',
+  'show_history'                => 'show_history',
+  'show_vc_details'             => 'show_vc_details',
+  'vendor_invoice'              => 'vendor_invoice',
+  'vendor_selection'            => 'vendor_selection',
+  'back'                        => 'back',
+  'close'                       => 'close',
+  'continue'                    => 'continue',
+  'create_bank_transfer'        => 'create_bank_transfer',
+  'export_as_csv'               => 'export_as_csv',
+  'export_as_pdf'               => 'export_as_pdf',
+  'mark_as_closed'              => 'mark_as_closed',
+  'new_part'                    => 'new_part',
+  'payment_list_as_pdf'         => 'payment_list_as_pdf',
+  'post_payments'               => 'post_payments',
+  'sepa_xml_download'           => 'sepa_xml_download',
+  'step_2'                      => 'step_2',
+};
+
+1;
index e78ff7d..61dd444 100644 (file)
@@ -298,12 +298,9 @@ $self->{texts} = {
   'Sep'                         => 'Sep',
   'September'                   => 'September',
   'Serial No.'                  => 'Serial No.',
-  'Ship'                        => 'Ship',
-  'Ship rcvd'                   => 'Ship rcvd',
   'Ship to'                     => 'Ship to',
   'Ship via'                    => 'Ship via',
   'Shipping Address'            => 'Shipping Address',
-  'Show details'                => 'Show details',
   'Stock'                       => 'Stock',
   'Storno Invoice'              => 'Storno Invoice',
   'Storno Packing List'         => 'Storno Packing List',
index 93f6213..43d83e1 100644 (file)
@@ -38,11 +38,11 @@ sub query_result {
 
   while (my $row = $sth2->fetchrow_hashref()) {
     if ($main::form->{"gender_$i"} eq "f" ) {
-                       $mchecked = "";
-                       $fchecked = "checked";
+      $mchecked = "";
+      $fchecked = "checked";
     } else {
-                       $mchecked = "checked";
-                       $fchecked = "";
+      $mchecked = "checked";
+      $fchecked = "";
     };
 
     $gender_table .= "<tr><input type=hidden name=\"cp_id_$i\" value=\"$row->{cp_id}\"> <td>$row->{cp_givenname}</td> <td>$row->{cp_name}</td> <td>$row->{cp_title} </td> <td>$row->{cp_greeting} </td><td> <input type=\"radio\" name=\"gender_$i\" value=\"m\" $mchecked> <input type=\"radio\" name=\"gender_$i\" value=\"f\" $fchecked></td></tr>\n";
index cc39713..fa205b1 100644 (file)
@@ -32,7 +32,7 @@ use lib 't';
 
 use Support::Files;
 
-use Test::More tests => scalar @Support::Files::testitems * 2;
+use Test::More tests => scalar @Support::Files::testitems * 3;
 
 my @testitems = @Support::Files::testitems; # get the files to test.
 
@@ -103,4 +103,37 @@ foreach my $file (@testitems) {
     }
 }
 
+
+# note, the html checker is not really thorough.
+# in particular it will not find standard tags with parameters.
+# the estimate wether a file is dirty or not is still pretty helpful, as it will catch most of the closing tags.
+# if you are in doubt about a specific file, you still have to check it manually.
+my $tags = qr/b|i|u|h[1-6]|a href.*|input|form|br|textarea|table|tr|td|th|body|head|html|p|button|select|option|script/;
+foreach my $file (@testitems) {
+    my $found_html_count = 0;
+    my $found_html       = '';
+    $file =~ s/\s.*$//; # nuke everything after the first space (#comment)
+    next if (!$file); # skip null entries
+    if (! open (FILE, $file)) {
+        ok(0,"could not open $file --WARNING");
+        next;
+    }
+    while (my $file_line = <FILE>) {
+        if ($file_line =~ m/(<\/?$tags>)/) {
+            $found_html_count++;
+            $found_html .= $1;
+        }
+    }
+    close (FILE);
+    if (!$found_html_count) {
+        ok(1,"$file does not contain HTML");
+    } elsif ($found_html_count < 50) {
+      TODO: { local $TODO = q(Even little amounts of HTML should go away....);
+        ok(0,"$file contains at least $found_html_count html tags.");
+      }
+    } else {
+        ok(0,"$file contains at least $found_html_count html tags.");
+    }
+}
+
 exit 0;
index 75f5329..d89ee00 100644 (file)
@@ -47,7 +47,9 @@ foreach my $file (@testitems) {
     if (grep /\t/, <FILE>) {
         ok(0, "$file contains tabs --WARNING");
     } else {
+      TODO: { local $TODO = q(Tabfreeness is not enforced at the moment.);
         ok(1, "$file has no tabs");
+      }
     }
     close (FILE);
 }
index 67982b2..c476671 100644 (file)
@@ -32,6 +32,7 @@ BEGIN { # yes the indenting is off, deal with it
 @evilwords = qw(
 anyways
 arbitary
+custemer
 databasa
 dependan
 existance
index 5311df8..cd66d9d 100644 (file)
        </select>
       </td>
      </tr>
+
+     <tr>
+      <th align="right">Show custom variable search inputs</th>
+      <td>
+       <select name="hide_cvar_search_options">
+        <option value="0"[% IF !myconfig_hide_cvar_search_options %] selected[% END %]>Show by default</option>
+        <option value="1"[% IF  myconfig_hide_cvar_search_options %] selected[% END %]>Hide by default</option>
+       </select>
+      </td>
+     </tr>
     </table>
 
     <br style="clear: left" />
index 046ad42..fab2c02 100644 (file)
@@ -192,7 +192,7 @@ window.onload = function() {
           <th align="left">BWA</th>
           <td colspan="3"><select name="pos_bwa">[% select_bwa %]</select></td>
         </tr>
-       <!-- Diese Steuerfunktion hat keine Auswirkung in der Bilanz und wird erstmal deaktiviert. -->
+        <!-- Diese Steuerfunktion hat keine Auswirkung in der Bilanz und wird erstmal deaktiviert. -->
         <!-- tr>
           <th align="left">Bilanz</th>
           <td colspan="3"><select name="pos_bilanz">[% select_bilanz %]</select></td>
index c8011a6..26100f9 100644 (file)
@@ -191,7 +191,7 @@ window.onload = function() {
           <th align="left">BWA</th>
           <td colspan="3"><select name="pos_bwa">[% select_bwa %]</select></td>
         </tr>
-       <!-- Diese Steuerfunktion hat keine Auswirkung in der Bilanz und wird erstmal deaktiviert. -->
+        <!-- Diese Steuerfunktion hat keine Auswirkung in der Bilanz und wird erstmal deaktiviert. -->
         <!-- tr>
           <th align="left">Bilanz</th>
           <td colspan="3"><select name="pos_bilanz">[% select_bilanz %]</select></td>
index 3c275de..d6b0dc9 100644 (file)
@@ -191,7 +191,7 @@ window.onload = function() {
           <th align="left"><translate>BWA</translate></th>
           <td colspan="3"><select name="pos_bwa">[% select_bwa %]</select></td>
         </tr>
-       <!-- Diese Steuerfunktion hat keine Auswirkung in der Bilanz und wird erstmal deaktiviert. -->
+        <!-- Diese Steuerfunktion hat keine Auswirkung in der Bilanz und wird erstmal deaktiviert. -->
         <!-- tr>
           <th align="left"><translate>Bilanz</translate></th>
           <td colspan="3"><select name="pos_bilanz">[% select_bilanz %]</select></td>
index b967e77..56e00a7 100644 (file)
@@ -2,7 +2,7 @@
 
    [%- FOREACH var = variables %]
    [%- IF var.searchable %]
-   <tr>
+   <tr id='cvar_filter_[% var.name %]'>
     <td align="right" valign="top">[% HTML.escape(var.description) %]</td>
     <td valign="top">
 
    </tr>
    [%- END %]
    [%- END %]
+[% IF hidden_cvar_filters %]
+   <tr><td></td><td colspan="3"><a href="#" id="cvar_filter-toggle"><i>click here to edit cvars</i></a></td></tr>
+   <script type='text/javascript'>
+     $('#cvar_filter-toggle').click(function() { $('[id^="cvar_filter"]').toggle(); $('[id^="l_cvartd_"]').toggle(); });
+     $(document).ready(function(){ $('[id^="cvar_filter_"]').hide(); $('[id^="l_cvartd_"]').hide(); });
+   </script>
+[% END %]
index 4c16c51..3fd967f 100644 (file)
@@ -8,7 +8,7 @@
    <tr>
     [%- SET start_new_row = '0' %]
     [%- END %]
-    <td>
+    <td id="[% HTML.escape(include_prefix) %]cvartd_[% HTML.escape(var.name) %]">
      <input type="checkbox"
             name="[% HTML.escape(include_prefix) %]cvar_[% HTML.escape(var.name) %]"
             id="[% HTML.escape(include_prefix) %]cvar_[% HTML.escape(var.name) %]"
diff --git a/templates/webpages/ap/search_de.html b/templates/webpages/ap/search_de.html
new file mode 100644 (file)
index 0000000..4d90314
--- /dev/null
@@ -0,0 +1,191 @@
+<body>
+
+ <form method=post name="search" action=[% script %]>
+
+  <table width=100%>
+  <tr><th class=listtop>[% title %]</th></tr>
+  <tr height="5"></tr>
+  <tr>
+   <td>
+    <table>
+     <tr>
+      <th align=right>Lieferant</th>
+      <td colspan=3>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'vendor',
+                 default       = oldvendor,
+                 style         = 'width: 250px',
+                 DATA          = ALL_VC,
+                 id_sub        = 'vc_keys',
+                 label_key     = 'name',
+                 select        = vc_select,
+                 limit         = vclimit,
+                 show_empty    = 1,
+                 allow_textbox = 1,
+                 -%]
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[name="vendor"]', params => { vc => 'vendor' } },
+]
+%]
+      </td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Abteilung</th>
+      <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'department',
+                 style         = 'width: 250px',
+                 DATA          = ALL_DEPARTMENTS,
+                 id_key        = 'id',
+                 label_key     = 'description',
+                 show_empty    = 1,
+                 allow_textbox = 0,
+            -%]
+      </td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Rechnungsnummer</th>
+      <td colspan=3><input name=invnumber size=20></td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Auftragsnummer</th>
+      <td colspan=3><input name=ordnumber size=20></td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Bemerkungen</th>
+      <td colspan=3><input name=notes size=40></td>
+     </tr>
+     <tr>
+      <th align="right">Projektnummer</th>
+      <td colspan="3">
+            [%- INCLUDE 'generic/multibox.html'
+                 name          =  'project_id',
+                 style         = "width: 250px",
+                 DATA          =  ALL_PROJECTS,
+                 id_key        = 'id',
+                 label_key     = 'projectnumber',
+                 limit         = vclimit,
+                 show_empty    = 1,
+                 allow_textbox = 0,
+            -%]
+      </td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Von</th>
+      <td>
+       <input name=transdatefrom id=transdatefrom size=11 title="dateformat | html %]" onBlur=\"check_right_date_format(this)\">
+       <input type=button name=transdatefrom id="trigger1" value=?>
+      </td>
+     <th align=right>bis</th>
+     <td>
+      <input name=transdateto id=transdateto size=11 title="[% dateformat | html %]" onBlur=\"check_right_date_format(this)\">
+      <input type=button name=transdateto name=transdateto id="trigger2" value=?>
+     </td>
+    </tr>
+   <input type=hidden name=sort value=transdate>
+   </table>
+    </td>
+    </tr>
+    <tr>
+     <td>
+      <table>
+       <tr>
+        <th align=right nowrap>In Bericht aufnehmen</th>
+        <td>
+         <table width=100%>
+          <tr>
+           <td align=right><input name=open class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Offen</td>
+           <td align=right><input name=closed class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Geschlossen</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_id" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Buchungsnummer</td>
+           <td align=right><input name="l_invnumber" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Rechnungsnummer</td>
+           <td align=right><input name="l_ordnumber" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Auftragsnummer</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_name" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Lieferant</td>
+           <td align=right><input name="l_transdate" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Rechnungsdatum</td>
+           <td align=right><input name="l_netamount" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Betrag</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_tax" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Steuer</td>
+           <td align=right><input name="l_amount" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Summe</td>
+           <td align=right><input name="l_datepaid" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Zahlungsdatum</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_paid" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>bezahlt</td>
+           <td align=right><input name="l_duedate" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Fälligkeitsdatum</td>
+           <td align=right><input name="l_due" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Betrag fällig</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_notes" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Bemerkungen</td>
+           <td align=right><input name="l_employee" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Bearbeiter</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_subtotal" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Zwischensumme</td>
+           <td align=right><input name="l_globalprojectnumber" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Projektnummer</td>
+         </tr>
+         <tr>
+          <td colspan=4 align=left><b>Lieferant </td>
+         </tr>
+         <tr>
+           <td align=right><input name="l_vendornumber" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Lieferantennummer</td>
+           <td align=right><input name="l_country" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Land</td>
+           <td align=right><input name="l_ustid" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>USt-IdNr.</td>
+           <td align=right><input name="l_taxzone" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Steuersatz</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_payment_terms" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Zahlungskonditionen</td>
+           <td align=right><input name="l_charts" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Buchungskonto</td>
+          </tr>
+         </table>
+        </td>
+       </tr>
+      </table>
+     </td>
+    </tr>
+    <tr>
+     <td><hr size=3 noshade></td>
+    </tr>
+   </table>
+   <input type=hidden name=nextsub value=[% nextsub %]>
+   <br>
+   <input class=submit type=submit name=action value="Weiter">
+  </form>
+ </body>
+ <script type="text/javascript">
+ <!--
+   Calendar.setup( { inputField : "transdatefrom", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BR", button : "trigger1" });
+   Calendar.setup( { inputField : "transdateto", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger2" });
+   $(document).ready(function(){
+    focus();
+    setupDateFormat('[% dateformat | html %]','Falsches Datumsformat!');
+    setupPoints('[% numberformat | html %]','Falsches Format');
+   })
+ //-->
+ </script>
+</html>
diff --git a/templates/webpages/ap/search_en.html b/templates/webpages/ap/search_en.html
new file mode 100644 (file)
index 0000000..39425e8
--- /dev/null
@@ -0,0 +1,191 @@
+<body>
+
+ <form method=post name="search" action=[% script %]>
+
+  <table width=100%>
+  <tr><th class=listtop>[% title %]</th></tr>
+  <tr height="5"></tr>
+  <tr>
+   <td>
+    <table>
+     <tr>
+      <th align=right>Vendor</th>
+      <td colspan=3>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'vendor',
+                 default       = oldvendor,
+                 style         = 'width: 250px',
+                 DATA          = ALL_VC,
+                 id_sub        = 'vc_keys',
+                 label_key     = 'name',
+                 select        = vc_select,
+                 limit         = vclimit,
+                 show_empty    = 1,
+                 allow_textbox = 1,
+                 -%]
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[name="vendor"]', params => { vc => 'vendor' } },
+]
+%]
+      </td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Department</th>
+      <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'department',
+                 style         = 'width: 250px',
+                 DATA          = ALL_DEPARTMENTS,
+                 id_key        = 'id',
+                 label_key     = 'description',
+                 show_empty    = 1,
+                 allow_textbox = 0,
+            -%]
+      </td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Invoice Number</th>
+      <td colspan=3><input name=invnumber size=20></td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Order Number</th>
+      <td colspan=3><input name=ordnumber size=20></td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Notes</th>
+      <td colspan=3><input name=notes size=40></td>
+     </tr>
+     <tr>
+      <th align="right">Project Number</th>
+      <td colspan="3">
+            [%- INCLUDE 'generic/multibox.html'
+                 name          =  'project_id',
+                 style         = "width: 250px",
+                 DATA          =  ALL_PROJECTS,
+                 id_key        = 'id',
+                 label_key     = 'projectnumber',
+                 limit         = vclimit,
+                 show_empty    = 1,
+                 allow_textbox = 0,
+            -%]
+      </td>
+     </tr>
+     <tr>
+      <th align=right nowrap>From</th>
+      <td>
+       <input name=transdatefrom id=transdatefrom size=11 title="dateformat | html %]" onBlur=\"check_right_date_format(this)\">
+       <input type=button name=transdatefrom id="trigger1" value=button>
+      </td>
+     <th align=right>Bis</th>
+     <td>
+      <input name=transdateto id=transdateto size=11 title="[% dateformat | html %]" onBlur=\"check_right_date_format(this)\">
+      <input type=button name=transdateto name=transdateto id="trigger2" value=button>
+     </td>
+    </tr>
+   <input type=hidden name=sort value=transdate>
+   </table>
+    </td>
+    </tr>
+    <tr>
+     <td>
+      <table>
+       <tr>
+        <th align=right nowrap>Include in Report</th>
+        <td>
+         <table width=100%>
+          <tr>
+           <td align=right><input name=open class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Open</td>
+           <td align=right><input name=closed class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Closed</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_id" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>ID</td>
+           <td align=right><input name="l_invnumber" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Invoice Number</td>
+           <td align=right><input name="l_ordnumber" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Order Number</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_name" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Vendor</td>
+           <td align=right><input name="l_transdate" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Invoice Date</td>
+           <td align=right><input name="l_netamount" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Amount</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_tax" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Tax</td>
+           <td align=right><input name="l_amount" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Total</td>
+           <td align=right><input name="l_datepaid" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Date Paid</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_paid" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Paid</td>
+           <td align=right><input name="l_duedate" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Due Date</td>
+           <td align=right><input name="l_due" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Amount Due</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_notes" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Notes</td>
+           <td align=right><input name="l_employee" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Employee</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_subtotal" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Subtotal</td>
+           <td align=right><input name="l_globalprojectnumber" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Project Number</td>
+         </tr>
+         <tr>
+          <td colspan=4 align=left><b>Vendor </td>
+         </tr>
+         <tr>
+           <td align=right><input name="l_vendornumber" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Vendor Number</td>
+           <td align=right><input name="l_country" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Country</td>
+           <td align=right><input name="l_ustid" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>USt-IdNr.</td>
+           <td align=right><input name="l_taxzone" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Steuersatz</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_payment_terms" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Payment Terms</td>
+           <td align=right><input name="l_charts" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Buchungskonto</td>
+          </tr>
+         </table>
+        </td>
+       </tr>
+      </table>
+     </td>
+    </tr>
+    <tr>
+     <td><hr size=3 noshade></td>
+    </tr>
+   </table>
+   <input type=hidden name=nextsub value=[% nextsub %]>
+   <br>
+   <input class=submit type=submit name=action value="Continue">
+  </form>
+ </body>
+ <script type="text/javascript">
+ <!--
+   Calendar.setup( { inputField : "transdatefrom", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BR", button : "trigger1" });
+   Calendar.setup( { inputField : "transdateto", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger2" });
+   $(document).ready(function(){
+    focus();
+    setupDateFormat('[% dateformat | html %]','Falsches Datumsformat!');
+    setupPoints('[% numberformat | html %]','wrongformat');
+   })
+ //-->
+ </script>
+</html>
diff --git a/templates/webpages/ap/search_master.html b/templates/webpages/ap/search_master.html
new file mode 100644 (file)
index 0000000..1b53f75
--- /dev/null
@@ -0,0 +1,191 @@
+<body>
+
+ <form method=post name="search" action=[% script %]>
+
+  <table width=100%>
+  <tr><th class=listtop>[% title %]</th></tr>
+  <tr height="5"></tr>
+  <tr>
+   <td>
+    <table>
+     <tr>
+      <th align=right><translate>Vendor</translate></th>
+      <td colspan=3>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'vendor',
+                 default       = oldvendor,
+                 style         = 'width: 250px',
+                 DATA          = ALL_VC,
+                 id_sub        = 'vc_keys',
+                 label_key     = 'name',
+                 select        = vc_select,
+                 limit         = vclimit,
+                 show_empty    = 1,
+                 allow_textbox = 1,
+                 -%]
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[name="vendor"]', params => { vc => 'vendor' } },
+]
+%]
+      </td>
+     </tr>
+     <tr>
+      <th align=right nowrap><translate>Department</translate></th>
+      <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'department',
+                 style         = 'width: 250px',
+                 DATA          = ALL_DEPARTMENTS,
+                 id_key        = 'id',
+                 label_key     = 'description',
+                 show_empty    = 1,
+                 allow_textbox = 0,
+            -%]
+      </td>
+     </tr>
+     <tr>
+      <th align=right nowrap><translate>Invoice Number</translate></th>
+      <td colspan=3><input name=invnumber size=20></td>
+     </tr>
+     <tr>
+      <th align=right nowrap><translate>Order Number</translate></th>
+      <td colspan=3><input name=ordnumber size=20></td>
+     </tr>
+     <tr>
+      <th align=right nowrap><translate>Notes</translate></th>
+      <td colspan=3><input name=notes size=40></td>
+     </tr>
+     <tr>
+      <th align="right"><translate>Project Number</translate></th>
+      <td colspan="3">
+            [%- INCLUDE 'generic/multibox.html'
+                 name          =  'project_id',
+                 style         = "width: 250px",
+                 DATA          =  ALL_PROJECTS,
+                 id_key        = 'id',
+                 label_key     = 'projectnumber',
+                 limit         = vclimit,
+                 show_empty    = 1,
+                 allow_textbox = 0,
+            -%]
+      </td>
+     </tr>
+     <tr>
+      <th align=right nowrap><translate>From</translate></th>
+      <td>
+       <input name=transdatefrom id=transdatefrom size=11 title="dateformat | html %]" onBlur=\"check_right_date_format(this)\">
+       <input type=button name=transdatefrom id="trigger1" value=<translate>button</translate>>
+      </td>
+     <th align=right><translate>Bis</translate></th>
+     <td>
+      <input name=transdateto id=transdateto size=11 title="[% dateformat | html %]" onBlur=\"check_right_date_format(this)\">
+      <input type=button name=transdateto name=transdateto id="trigger2" value=<translate>button</translate>>
+     </td>
+    </tr>
+   <input type=hidden name=sort value=transdate>
+   </table>
+    </td>
+    </tr>
+    <tr>
+     <td>
+      <table>
+       <tr>
+        <th align=right nowrap><translate>Include in Report</translate></th>
+        <td>
+         <table width=100%>
+          <tr>
+           <td align=right><input name=open class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap><translate>Open</translate></td>
+           <td align=right><input name=closed class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Closed</translate></td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_id" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>ID</translate></td>
+           <td align=right><input name="l_invnumber" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap><translate>Invoice Number</translate></td>
+           <td align=right><input name="l_ordnumber" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Order Number</translate></td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_name" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap><translate>Vendor</translate></td>
+           <td align=right><input name="l_transdate" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap><translate>Invoice Date</translate></td>
+           <td align=right><input name="l_netamount" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Amount</translate></td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_tax" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Tax</translate></td>
+           <td align=right><input name="l_amount" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap><translate>Total</translate></td>
+           <td align=right><input name="l_datepaid" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Date Paid</translate></td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_paid" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap><translate>Paid</translate></td>
+           <td align=right><input name="l_duedate" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Due Date</translate></td>
+           <td align=right><input name="l_due" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Amount Due</translate></td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_notes" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Notes</translate></td>
+           <td align=right><input name="l_employee" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Employee</translate></td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_subtotal" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Subtotal</translate></td>
+           <td align=right><input name="l_globalprojectnumber" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Project Number</translate></td>
+         </tr>
+         <tr>
+          <td colspan=4 align=left><b><translate>Vendor</translate> </td>
+         </tr>
+         <tr>
+           <td align=right><input name="l_vendornumber" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Vendor Number</translate></td>
+           <td align=right><input name="l_country" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Country</translate></td>
+           <td align=right><input name="l_ustid" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>USt-IdNr.</translate></td>
+           <td align=right><input name="l_taxzone" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Steuersatz</translate></td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_payment_terms" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Payment Terms</translate></td>
+           <td align=right><input name="l_charts" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Buchungskonto</translate></td>
+          </tr>
+         </table>
+        </td>
+       </tr>
+      </table>
+     </td>
+    </tr>
+    <tr>
+     <td><hr size=3 noshade></td>
+    </tr>
+   </table>
+   <input type=hidden name=nextsub value=[% nextsub %]>
+   <br>
+   <input class=submit type=submit name=action value="<translate>Continue</translate>">
+  </form>
+ </body>
+ <script type="text/javascript">
+ <!--
+   Calendar.setup( { inputField : "transdatefrom", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BR", button : "trigger1" });
+   Calendar.setup( { inputField : "transdateto", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger2" });
+   $(document).ready(function(){
+    focus();
+    setupDateFormat('[% dateformat | html %]','<translate>Falsches Datumsformat!</translate>');
+    setupPoints('[% numberformat | html %]','<translate>wrongformat</translate>');
+   })
+ //-->
+ </script>
+</html>
diff --git a/templates/webpages/ar/search_de.html b/templates/webpages/ar/search_de.html
new file mode 100644 (file)
index 0000000..47ac199
--- /dev/null
@@ -0,0 +1,207 @@
+<body>
+
+ <form method=post name="search" action=[% script %]>
+
+  <table width=100%>
+  <tr><th class=listtop>[% title %]</th></tr>
+  <tr height="5"></tr>
+  <tr>
+   <td>
+    <table>
+     <tr>
+      <th align=right>Kunde</th>
+      <td colspan=3>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'customer',
+                 default       = oldcustomer,
+                 style         = 'width: 250px',
+                 DATA          = ALL_VC,
+                 id_sub        = 'vc_keys',
+                 label_key     = 'name',
+                 select        = vc_select,
+                 limit         = vclimit,
+                 show_empty    = 1,
+                 allow_textbox = 1,
+                 -%]
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[name="customer"]', params => { vc => 'customer' } },
+]
+%]
+      </td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Abteilung</th>
+      <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'department',
+                 style         = 'width: 250px',
+                 DATA          = ALL_DEPARTMENTS,
+                 id_key        = 'id',
+                 label_key     = 'description',
+                 show_empty    = 1,
+                 allow_textbox = 0,
+            -%]
+      </td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Rechnungsnummer</th>
+      <td colspan=3><input name=invnumber size=20></td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Auftragsnummer</th>
+      <td colspan=3><input name=ordnumber size=20></td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Vorgangsbezeichnung</th>
+      <td colspan=3><input name=transaction_description size=40></td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Bemerkungen</th>
+      <td colspan=3><input name=notes size=40></td>
+     </tr>
+     <tr>
+      <th align="right">Projektnummer</th>
+      <td colspan="3">
+            [%- INCLUDE 'generic/multibox.html'
+                 name          =  'project_id',
+                 style         = "width: 250px",
+                 DATA          =  ALL_PROJECTS,
+                 id_key        = 'id',
+                 label_key     = 'projectnumber',
+                 limit         = vclimit,
+                 show_empty    = 1,
+                 allow_textbox = 0,
+            -%]
+      </td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Von</th>
+      <td>
+       <input name=transdatefrom id=transdatefrom size=11 title="dateformat | html %]" onBlur=\"check_right_date_format(this)\">
+       <input type=button name=transdatefrom id="trigger1" value=?>
+      </td>
+     <th align=right>bis</th>
+     <td>
+      <input name=transdateto id=transdateto size=11 title="[% dateformat | html %]" onBlur=\"check_right_date_format(this)\">
+      <input type=button name=transdateto name=transdateto id="trigger2" value=?>
+     </td>
+    </tr>
+   <input type=hidden name=sort value=transdate>
+   </table>
+    </td>
+    </tr>
+    <tr>
+     <td>
+      <table>
+       <tr>
+        <th align=right nowrap>In Bericht aufnehmen</th>
+        <td>
+         <table width=100%>
+          <tr>
+           <td align=right><input name=open class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Offen</td>
+           <td align=right><input name=closed class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Geschlossen</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_id" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Buchungsnummer</td>
+           <td align=right><input name="l_invnumber" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Rechnungsnummer</td>
+           <td align=right><input name="l_ordnumber" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Auftragsnummer</td>
+           <td align=right><input name="l_transdate" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Rechnungsdatum</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_name" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Kunde</td>
+           <td align=right><input name="l_netamount" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Betrag</td>
+           <td align=right><input name="l_tax" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Steuer</td>
+           <td align=right><input name="l_amount" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Summe</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_datepaid" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Zahlungsdatum</td>
+           <td align=right><input name="l_paid" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>bezahlt</td>
+           <td align=right><input name="l_duedate" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Fälligkeitsdatum</td>
+           <td align=right><input name="l_due" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Betrag fällig</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_notes" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Bemerkungen</td>
+           <td align=right><input name="l_salesman" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Verkäufer</td>
+           <td align=right><input name="l_shippingpoint" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Versandort</td>
+           <td align=right><input name="l_shipvia" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Transportmittel</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_marge_total" class=checkbox type=checkbox value=Y></td>
+           <td nowrap> Ertrag</td>
+           <td align=right><input name="l_marge_percent" class=checkbox type=checkbox value=Y></td>
+           <td nowrap> Ertrag prozentual</td>
+           <td align=right><input name="l_employee" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Bearbeiter</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_subtotal" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Zwischensumme</td>
+           <td align=right><input name="l_globalprojectnumber" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Projektnummer</td>
+           <td align=right><input name="l_transaction_description" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Vorgangsbezeichnung</td>
+          </tr>
+          <tr>
+           <td colspan=4 align=left><b>Kunde </td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_customernumber" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Kundennummer</td>
+           <td align=right><input name="l_country" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Land</td>
+           <td align=right><input name="l_ustid" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>USt-IdNr.</td>
+           <td align=right><input name="l_taxzone" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Steuersatz</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_payment_terms" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Zahlungskonditionen</td>
+           <td align=right><input name="l_charts" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Buchungskonto</td>
+          </tr>
+         </table>
+        </td>
+       </tr>
+      </table>
+     </td>
+    </tr>
+    <tr>
+     <td><hr size=3 noshade></td>
+    </tr>
+   </table>
+   <input type=hidden name=nextsub value=[% nextsub %]>
+   <br>
+   <input class=submit type=submit name=action value="Weiter">
+  </form>
+ </body>
+ <script type="text/javascript">
+ <!--
+   Calendar.setup( { inputField : "transdatefrom", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BR", button : "trigger1" });
+   Calendar.setup( { inputField : "transdateto", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger2" });
+   $(document).ready(function(){
+    focus();
+    setupDateFormat('[% dateformat | html %]','Falsches Datumsformat!');
+    setupPoints('[% numberformat | html %]','Falsches Format');
+   })
+ //-->
+ </script>
+</html>
diff --git a/templates/webpages/ar/search_en.html b/templates/webpages/ar/search_en.html
new file mode 100644 (file)
index 0000000..289c27f
--- /dev/null
@@ -0,0 +1,207 @@
+<body>
+
+ <form method=post name="search" action=[% script %]>
+
+  <table width=100%>
+  <tr><th class=listtop>[% title %]</th></tr>
+  <tr height="5"></tr>
+  <tr>
+   <td>
+    <table>
+     <tr>
+      <th align=right>Customer</th>
+      <td colspan=3>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'customer',
+                 default       = oldcustomer,
+                 style         = 'width: 250px',
+                 DATA          = ALL_VC,
+                 id_sub        = 'vc_keys',
+                 label_key     = 'name',
+                 select        = vc_select,
+                 limit         = vclimit,
+                 show_empty    = 1,
+                 allow_textbox = 1,
+                 -%]
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[name="customer"]', params => { vc => 'customer' } },
+]
+%]
+      </td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Department</th>
+      <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'department',
+                 style         = 'width: 250px',
+                 DATA          = ALL_DEPARTMENTS,
+                 id_key        = 'id',
+                 label_key     = 'description',
+                 show_empty    = 1,
+                 allow_textbox = 0,
+            -%]
+      </td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Invoice Number</th>
+      <td colspan=3><input name=invnumber size=20></td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Order Number</th>
+      <td colspan=3><input name=ordnumber size=20></td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Transaction description</th>
+      <td colspan=3><input name=transaction_description size=40></td>
+     </tr>
+     <tr>
+      <th align=right nowrap>Notes</th>
+      <td colspan=3><input name=notes size=40></td>
+     </tr>
+     <tr>
+      <th align="right">Project Number</th>
+      <td colspan="3">
+            [%- INCLUDE 'generic/multibox.html'
+                 name          =  'project_id',
+                 style         = "width: 250px",
+                 DATA          =  ALL_PROJECTS,
+                 id_key        = 'id',
+                 label_key     = 'projectnumber',
+                 limit         = vclimit,
+                 show_empty    = 1,
+                 allow_textbox = 0,
+            -%]
+      </td>
+     </tr>
+     <tr>
+      <th align=right nowrap>From</th>
+      <td>
+       <input name=transdatefrom id=transdatefrom size=11 title="dateformat | html %]" onBlur=\"check_right_date_format(this)\">
+       <input type=button name=transdatefrom id="trigger1" value=button>
+      </td>
+     <th align=right>Bis</th>
+     <td>
+      <input name=transdateto id=transdateto size=11 title="[% dateformat | html %]" onBlur=\"check_right_date_format(this)\">
+      <input type=button name=transdateto name=transdateto id="trigger2" value=button>
+     </td>
+    </tr>
+   <input type=hidden name=sort value=transdate>
+   </table>
+    </td>
+    </tr>
+    <tr>
+     <td>
+      <table>
+       <tr>
+        <th align=right nowrap>Include in Report</th>
+        <td>
+         <table width=100%>
+          <tr>
+           <td align=right><input name=open class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Open</td>
+           <td align=right><input name=closed class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Closed</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_id" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>ID</td>
+           <td align=right><input name="l_invnumber" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Invoice Number</td>
+           <td align=right><input name="l_ordnumber" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Order Number</td>
+           <td align=right><input name="l_transdate" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Invoice Date</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_name" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Customer</td>
+           <td align=right><input name="l_netamount" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Amount</td>
+           <td align=right><input name="l_tax" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Tax</td>
+           <td align=right><input name="l_amount" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Total</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_datepaid" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Date Paid</td>
+           <td align=right><input name="l_paid" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap>Paid</td>
+           <td align=right><input name="l_duedate" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Due Date</td>
+           <td align=right><input name="l_due" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Amount Due</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_notes" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Notes</td>
+           <td align=right><input name="l_salesman" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Salesperson</td>
+           <td align=right><input name="l_shippingpoint" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Shipping Point</td>
+           <td align=right><input name="l_shipvia" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Ship via</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_marge_total" class=checkbox type=checkbox value=Y></td>
+           <td nowrap> Ertrag</td>
+           <td align=right><input name="l_marge_percent" class=checkbox type=checkbox value=Y></td>
+           <td nowrap> Ertrag prozentual</td>
+           <td align=right><input name="l_employee" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Employee</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_subtotal" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Subtotal</td>
+           <td align=right><input name="l_globalprojectnumber" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Project Number</td>
+           <td align=right><input name="l_transaction_description" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Transaction description</td>
+          </tr>
+          <tr>
+           <td colspan=4 align=left><b>Customer </td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_customernumber" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Customer Number</td>
+           <td align=right><input name="l_country" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Country</td>
+           <td align=right><input name="l_ustid" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>USt-IdNr.</td>
+           <td align=right><input name="l_taxzone" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Steuersatz</td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_payment_terms" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Payment Terms</td>
+           <td align=right><input name="l_charts" class=checkbox type=checkbox value=Y></td>
+           <td nowrap>Buchungskonto</td>
+          </tr>
+         </table>
+        </td>
+       </tr>
+      </table>
+     </td>
+    </tr>
+    <tr>
+     <td><hr size=3 noshade></td>
+    </tr>
+   </table>
+   <input type=hidden name=nextsub value=[% nextsub %]>
+   <br>
+   <input class=submit type=submit name=action value="Continue">
+  </form>
+ </body>
+ <script type="text/javascript">
+ <!--
+   Calendar.setup( { inputField : "transdatefrom", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BR", button : "trigger1" });
+   Calendar.setup( { inputField : "transdateto", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger2" });
+   $(document).ready(function(){
+    focus();
+    setupDateFormat('[% dateformat | html %]','Falsches Datumsformat!');
+    setupPoints('[% numberformat | html %]','wrongformat');
+   })
+ //-->
+ </script>
+</html>
diff --git a/templates/webpages/ar/search_master.html b/templates/webpages/ar/search_master.html
new file mode 100644 (file)
index 0000000..ff24836
--- /dev/null
@@ -0,0 +1,207 @@
+<body>
+
+ <form method=post name="search" action=[% script %]>
+
+  <table width=100%>
+  <tr><th class=listtop>[% title %]</th></tr>
+  <tr height="5"></tr>
+  <tr>
+   <td>
+    <table>
+     <tr>
+      <th align=right><translate>Customer</translate></th>
+      <td colspan=3>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'customer',
+                 default       = oldcustomer,
+                 style         = 'width: 250px',
+                 DATA          = ALL_VC,
+                 id_sub        = 'vc_keys',
+                 label_key     = 'name',
+                 select        = vc_select,
+                 limit         = vclimit,
+                 show_empty    = 1,
+                 allow_textbox = 1,
+                 -%]
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[name="customer"]', params => { vc => 'customer' } },
+]
+%]
+      </td>
+     </tr>
+     <tr>
+      <th align=right nowrap><translate>Department</translate></th>
+      <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'department',
+                 style         = 'width: 250px',
+                 DATA          = ALL_DEPARTMENTS,
+                 id_key        = 'id',
+                 label_key     = 'description',
+                 show_empty    = 1,
+                 allow_textbox = 0,
+            -%]
+      </td>
+     </tr>
+     <tr>
+      <th align=right nowrap><translate>Invoice Number</translate></th>
+      <td colspan=3><input name=invnumber size=20></td>
+     </tr>
+     <tr>
+      <th align=right nowrap><translate>Order Number</translate></th>
+      <td colspan=3><input name=ordnumber size=20></td>
+     </tr>
+     <tr>
+      <th align=right nowrap><translate>Transaction description</translate></th>
+      <td colspan=3><input name=transaction_description size=40></td>
+     </tr>
+     <tr>
+      <th align=right nowrap><translate>Notes</translate></th>
+      <td colspan=3><input name=notes size=40></td>
+     </tr>
+     <tr>
+      <th align="right"><translate>Project Number</translate></th>
+      <td colspan="3">
+            [%- INCLUDE 'generic/multibox.html'
+                 name          =  'project_id',
+                 style         = "width: 250px",
+                 DATA          =  ALL_PROJECTS,
+                 id_key        = 'id',
+                 label_key     = 'projectnumber',
+                 limit         = vclimit,
+                 show_empty    = 1,
+                 allow_textbox = 0,
+            -%]
+      </td>
+     </tr>
+     <tr>
+      <th align=right nowrap><translate>From</translate></th>
+      <td>
+       <input name=transdatefrom id=transdatefrom size=11 title="dateformat | html %]" onBlur=\"check_right_date_format(this)\">
+       <input type=button name=transdatefrom id="trigger1" value=<translate>button</translate>>
+      </td>
+     <th align=right><translate>Bis</translate></th>
+     <td>
+      <input name=transdateto id=transdateto size=11 title="[% dateformat | html %]" onBlur=\"check_right_date_format(this)\">
+      <input type=button name=transdateto name=transdateto id="trigger2" value=<translate>button</translate>>
+     </td>
+    </tr>
+   <input type=hidden name=sort value=transdate>
+   </table>
+    </td>
+    </tr>
+    <tr>
+     <td>
+      <table>
+       <tr>
+        <th align=right nowrap><translate>Include in Report</translate></th>
+        <td>
+         <table width=100%>
+          <tr>
+           <td align=right><input name=open class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap><translate>Open</translate></td>
+           <td align=right><input name=closed class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Closed</translate></td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_id" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>ID</translate></td>
+           <td align=right><input name="l_invnumber" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap><translate>Invoice Number</translate></td>
+           <td align=right><input name="l_ordnumber" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Order Number</translate></td>
+           <td align=right><input name="l_transdate" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap><translate>Invoice Date</translate></td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_name" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap><translate>Customer</translate></td>
+           <td align=right><input name="l_netamount" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Amount</translate></td>
+           <td align=right><input name="l_tax" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Tax</translate></td>
+           <td align=right><input name="l_amount" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap><translate>Total</translate></td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_datepaid" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Date Paid</translate></td>
+           <td align=right><input name="l_paid" class=checkbox type=checkbox value=Y checked></td>
+           <td nowrap><translate>Paid</translate></td>
+           <td align=right><input name="l_duedate" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Due Date</translate></td>
+           <td align=right><input name="l_due" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Amount Due</translate></td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_notes" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Notes</translate></td>
+           <td align=right><input name="l_salesman" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Salesperson</translate></td>
+           <td align=right><input name="l_shippingpoint" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Shipping Point</translate></td>
+           <td align=right><input name="l_shipvia" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Ship via</translate></td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_marge_total" class=checkbox type=checkbox value=Y></td>
+           <td nowrap> <translate>Ertrag</translate></td>
+           <td align=right><input name="l_marge_percent" class=checkbox type=checkbox value=Y></td>
+           <td nowrap> <translate>Ertrag prozentual</translate></td>
+           <td align=right><input name="l_employee" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Employee</translate></td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_subtotal" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Subtotal</translate></td>
+           <td align=right><input name="l_globalprojectnumber" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Project Number</translate></td>
+           <td align=right><input name="l_transaction_description" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Transaction description</translate></td>
+          </tr>
+          <tr>
+           <td colspan=4 align=left><b><translate>Customer</translate> </td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_customernumber" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Customer Number</translate></td>
+           <td align=right><input name="l_country" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Country</translate></td>
+           <td align=right><input name="l_ustid" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>USt-IdNr.</translate></td>
+           <td align=right><input name="l_taxzone" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Steuersatz</translate></td>
+          </tr>
+          <tr>
+           <td align=right><input name="l_payment_terms" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Payment Terms</translate></td>
+           <td align=right><input name="l_charts" class=checkbox type=checkbox value=Y></td>
+           <td nowrap><translate>Buchungskonto</translate></td>
+          </tr>
+         </table>
+        </td>
+       </tr>
+      </table>
+     </td>
+    </tr>
+    <tr>
+     <td><hr size=3 noshade></td>
+    </tr>
+   </table>
+   <input type=hidden name=nextsub value=[% nextsub %]>
+   <br>
+   <input class=submit type=submit name=action value="<translate>Continue</translate>">
+  </form>
+ </body>
+ <script type="text/javascript">
+ <!--
+   Calendar.setup( { inputField : "transdatefrom", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BR", button : "trigger1" });
+   Calendar.setup( { inputField : "transdateto", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger2" });
+   $(document).ready(function(){
+    focus();
+    setupDateFormat('[% dateformat | html %]','<translate>Falsches Datumsformat!</translate>');
+    setupPoints('[% numberformat | html %]','<translate>wrongformat</translate>');
+   })
+ //-->
+ </script>
+</html>
diff --git a/templates/webpages/bankaccounts/bank_account_display_form_en.html b/templates/webpages/bankaccounts/bank_account_display_form_en.html
new file mode 100644 (file)
index 0000000..e6bdd65
--- /dev/null
@@ -0,0 +1,70 @@
+[% USE HTML %]
+<body>
+
+[%- IF params.error %]
+ <p><div class="error_message">[% params.error %]</div></p>
+[%- END %]
+
+ <p><div class="listtop">[% title %]</div></p>
+
+ <form method="post" action="bankaccounts.pl">
+
+  <p>
+   <table>
+    <tr>
+     <td align="right">Account number</td>
+     <td><input name="account.account_number" size="20" maxlength="100" value="[% HTML.escape(account.account_number) %]"></td>
+    </tr>
+
+    <tr>
+     <td align="right">Bank code</td>
+     <td><input name="account.bank_code" size="20" maxlength="100" value="[% HTML.escape(account.bank_code) %]"></td>
+    </tr>
+
+    <tr>
+     <td align="right">Bank</td>
+     <td><input name="account.bank" size="30" value="[% HTML.escape(account.bank) %]"></td>
+    </tr>
+
+    <tr>
+     <td align="right">IBAN</td>
+     <td><input name="account.iban" size="30" maxlength="100" value="[% HTML.escape(account.iban) %]"></td>
+    </tr>
+
+    <tr>
+     <td align="right">BIC</td>
+     <td><input name="account.bic" size="30" maxlength="100" value="[% HTML.escape(account.bic) %]"></td>
+    </tr>
+
+    <tr>
+     <td align="right">Chart</td>
+     <td>
+      [%- INCLUDE generic/multibox.html
+            name      = 'account.chart_id',
+            DATA      = CHARTS,
+            id_key    = 'id',
+            label_sub = 'chart_label',
+            style     = 'width: 300px',
+      -%]
+     </td>
+    </tr>
+
+   </table>
+  </p>
+
+  <p>
+   <input type="hidden" name="action" value="dispatcher">
+   <input type="hidden" name="account.id" value="[% HTML.escape(account.id) %]">
+   <input type="hidden" name="callback" value="[% HTML.escape(callback) %]">
+
+[%- IF account.id %]
+   <input type="submit" name="action_bank_account_save" value="Save">
+   <input type="submit" name="action_bank_account_delete" value="Delete">
+[%- ELSE %]
+   <input type="submit" name="action_bank_account_save" value="Add">
+[%- END %]
+  </p>
+ </form>
+
+</body>
+</html>
diff --git a/templates/webpages/bankaccounts/bank_account_list_bottom_en.html b/templates/webpages/bankaccounts/bank_account_list_bottom_en.html
new file mode 100644 (file)
index 0000000..1fef28b
--- /dev/null
@@ -0,0 +1,11 @@
+[% USE HTML %]
+ <form action="bankaccounts.pl" method="post">
+  <p>
+   New bank account<br>
+   <input type="submit" value="Add">
+  </p>
+
+  <input type="hidden" name="action" value="bank_account_add">
+  <input type="hidden" name="callback" value="[% HTML.escape(callback) %]">
+ </form>
+
index a8f58e9..5b98d95 100644 (file)
 
 <input type="hidden" name="action" value="show_am_history">
 
-       <table>
-               <tr>
-                       <th class ="listtop">Historien Suchmaschine</th>
-                       </th>
-               </tr>
-               <tr>
-                       <td>
-                               <script type="text/javascript">
-                                       <!--
+  <table>
+    <tr>
+      <th class ="listtop">Historien Suchmaschine</th>
+      </th>
+    </tr>
+    <tr>
+      <td>
+        <script type="text/javascript">
+          <!--
                     function uncheckOther(id) {
-                                               if(!(
-                                                   (document.getElementById('non-deleted').checked == false)
-                                               &&
-                                                   (document.getElementById('both').checked == false)
-                                                   &&
-                                                   (document.getElementById('deleted').checked == false)
-                                                 )) {
-                                                               if(id == "deleted") {
-                                                                       document.getElementById('non-deleted').checked = false;
-                                                                       document.getElementById('both').checked = false;
-                                                               }
-                                                               if(id == "non-deleted") {
-                                                                       document.getElementById('deleted').checked = false;
-                                                                       document.getElementById('both').checked = false;
-                                                               }
-                                                               if(id == "both") {
-                                                                       document.getElementById('non-deleted').checked = false;
-                                                                       document.getElementById('deleted').checked = false;
-                                                               }
-                                               }
-                                       }
+            if(!(
+                (document.getElementById('non-deleted').checked == false)
+                &&
+                (document.getElementById('both').checked == false)
+                &&
+                (document.getElementById('deleted').checked == false)
+              )) {
+                if(id == "deleted") {
+                  document.getElementById('non-deleted').checked = false;
+                  document.getElementById('both').checked = false;
+                }
+                if(id == "non-deleted") {
+                  document.getElementById('deleted').checked = false;
+                  document.getElementById('both').checked = false;
+                }
+                if(id == "both") {
+                  document.getElementById('non-deleted').checked = false;
+                  document.getElementById('deleted').checked = false;
+                }
+            }
+          }
 
-                                       var defaults = new Array('SAVED', 'DELETED', 'ADDED', 'PAYMENT POSTED', 'POSTED', 'POSTED AS NEW', 'SAVED FOR DUNNING', 'DUNNING STARTED', 'PRINTED');
-                                       var translated = new Object();
-                                       translated['SAVED'] = 'Gespeichert';
-                                       translated['DELETED'] = 'Gelöscht';
-                                       translated['ADDED'] = 'Hinzugefügt';
-                                       translated['PAYMENT POSTED'] = 'Rechung gebucht';
-                                       translated['POSTED'] = 'Gebucht';
-                                       translated['POSTED AS NEW'] = 'Als neu gebucht'
-                                       translated['SAVED FOR DUNNING'] = 'Gespeichert';
-                                       translated['DUNNING STARTED'] = 'Mahnprozess gestartet';
-                                       translated['PRINTED'] = 'Gedruckt';
+          var defaults = new Array('SAVED', 'DELETED', 'ADDED', 'PAYMENT POSTED', 'POSTED', 'POSTED AS NEW', 'SAVED FOR DUNNING', 'DUNNING STARTED', 'PRINTED');
+          var translated = new Object();
+          translated['SAVED'] = 'Gespeichert';
+          translated['DELETED'] = 'Gelöscht';
+          translated['ADDED'] = 'Hinzugefügt';
+          translated['PAYMENT POSTED'] = 'Rechung gebucht';
+          translated['POSTED'] = 'Gebucht';
+          translated['POSTED AS NEW'] = 'Als neu gebucht'
+          translated['SAVED FOR DUNNING'] = 'Gespeichert';
+          translated['DUNNING STARTED'] = 'Mahnprozess gestartet';
+          translated['PRINTED'] = 'Gedruckt';
 
-                                       var jscalender = "<table valign=\"top\">"
-                                                                       + "<tr><td colspan=\"2\"><b>Zeitraum:&nbsp;</b></td></tr>"
-                                                                       + "<tr><td>von:&nbsp;"
-                                                                       + "<input name=\"fromdate\" id=\"fromdate\" size=\"11\" title=\"[% HTML.escape(myconfig_dateformat) %]\" value=\"[% HTML.escape(fromdate) %]\">"
-                                                                       + "<input type=\"button\" name=\"fromdate\" id=\"trigger1\" value=\"?\">"
-                                                                       + "&nbsp;</td><td>bis:&nbsp;"
-                                                                       + "<input name=\"todate\" id=\"todate\" size=\"11\" title=\"[% HTML.escape(myconfig_dateformat) %]\" value=\"[% HTML.escape(todate) %]\">"
-                                                                       + "<input type=\"button\" name=\"todate\" id=\"trigger2\" value=\"?\"></td></tr></table>";
-                                       var mitarbeiter = "<table valign=\"top\">"
-                                                                       + "<tr><td><b>Mitarbeiter:</b>&nbsp;</td>"
-                                                                       + "<td><input type='text' name='mitarbeiter' id='mitarbeiter'></td>"
-                                                                       + "</tr></table>";
+          var jscalender = "<table valign=\"top\">"
+                  + "<tr><td colspan=\"2\"><b>Zeitraum:&nbsp;</b></td></tr>"
+                  + "<tr><td>von:&nbsp;"
+                  + "<input name=\"fromdate\" id=\"fromdate\" size=\"11\" title=\"[% HTML.escape(myconfig_dateformat) %]\" value=\"[% HTML.escape(fromdate) %]\">"
+                  + "<input type=\"button\" name=\"fromdate\" id=\"trigger1\" value=\"?\">"
+                  + "&nbsp;</td><td>bis:&nbsp;"
+                  + "<input name=\"todate\" id=\"todate\" size=\"11\" title=\"[% HTML.escape(myconfig_dateformat) %]\" value=\"[% HTML.escape(todate) %]\">"
+                  + "<input type=\"button\" name=\"todate\" id=\"trigger2\" value=\"?\"></td></tr></table>";
+          var mitarbeiter = "<table valign=\"top\">"
+                  + "<tr><td><b>Mitarbeiter:</b>&nbsp;</td>"
+                  + "<td><input type='text' name='mitarbeiter' id='mitarbeiter'></td>"
+                  + "</tr></table>";
 
-                                       var tempString = "";
-                                       function addForm(last, remove) {
-                                               if(last == "INIT") {
-                                                       tempString = "<select id='selectForm'><option></option>";
-                                                       for(i=0;i<defaults.length;i++) {
-                                                               tempString += "\<option value\=\'" + defaults[i] + "\'\ onClick=\"javascript:addForm(\'" + defaults[i] + "\', " + i + ");\">" + translated[defaults[i]] + "\<\/option\>" + "\n";
-                                                       }
-                                                       tempString += "</select>";
-                                                       document.getElementById('selectEmployee').innerHTML = mitarbeiter;
-                                                       document.getElementById('selectDate').innerHTML = jscalender;
-                                                       document.getElementById('selectTable').innerHTML = tempString;
+          var tempString = "";
+          function addForm(last, remove) {
+            if(last == "INIT") {
+              tempString = "<select id='selectForm'><option></option>";
+              for(i=0;i<defaults.length;i++) {
+                tempString += "\<option value\=\'" + defaults[i] + "\'\ onClick=\"javascript:addForm(\'" + defaults[i] + "\', " + i + ");\">" + translated[defaults[i]] + "\<\/option\>" + "\n";
+              }
+              tempString += "</select>";
+              document.getElementById('selectEmployee').innerHTML = mitarbeiter;
+              document.getElementById('selectDate').innerHTML = jscalender;
+              document.getElementById('selectTable').innerHTML = tempString;
 
-                                                       Calendar.setup(
-                                       {
-                                     inputField : "fromdate",
-                                     ifFormat :"%d.%m.%Y",
-                                     align : "BL",
-                                     button : "trigger1"
-                                       });
+              Calendar.setup(
+                    {
+                          inputField : "fromdate",
+                          ifFormat :"%d.%m.%Y",
+                          align : "BL",
+                          button : "trigger1"
+                      });
 
-                                           Calendar.setup(
-                                               {
-                                     inputField : "todate",
-                                         ifFormat :"%d.%m.%Y",
-                                         align : "BL",
-                                         button : "trigger2"
-                                               });
-                                               }
-                                               else {
-                                                       defaults.splice(remove,1);
-                                                       document.getElementById('inputText').innerHTML += ((document.getElementById('inputText').innerHTML == "") ? ("<b>Sie haben bereits die folgenden Einschr&auml;nkungen vorgenommen:</b><br>") : ("<br>")) + translated[last];
-                                                       if(defaults.length > 0) {
-                                                               document.getElementById('einschraenkungen').value += ((document.getElementById('einschraenkungen').value == "") ? ("") : (",")) + last;
-                                                               tempString = "<select id='selectForm'><option></option>";
-                                                               for(i=0;i<defaults.length;i++) {
-                                                                       tempString += "\<option value\=\'" + defaults[i] + "\'\ onClick=\"javascript:addForm(\'" + defaults[i] + "\', " + i + ");\">" + translated[defaults[i]] + "\<\/option\>" + "\n";
-                                                               }
-                                                               tempString += "</select>";
-                                                               document.getElementById('selectTable').innerHTML = tempString;
-                                                       }
-                                                       else {
-                                                               document.getElementById('selectTable').innerHTML = "";
-                                                       }
-                                               }
-                                       }
+                    Calendar.setup(
+                    {
+                          inputField : "todate",
+                          ifFormat :"%d.%m.%Y",
+                          align : "BL",
+                          button : "trigger2"
+                    });
+            }
+            else {
+              defaults.splice(remove,1);
+              document.getElementById('inputText').innerHTML += ((document.getElementById('inputText').innerHTML == "") ? ("<b>Sie haben bereits die folgenden Einschr&auml;nkungen vorgenommen:</b><br>") : ("<br>")) + translated[last];
+              if(defaults.length > 0) {
+                document.getElementById('einschraenkungen').value += ((document.getElementById('einschraenkungen').value == "") ? ("") : (",")) + last;
+                tempString = "<select id='selectForm'><option></option>";
+                for(i=0;i<defaults.length;i++) {
+                  tempString += "\<option value\=\'" + defaults[i] + "\'\ onClick=\"javascript:addForm(\'" + defaults[i] + "\', " + i + ");\">" + translated[defaults[i]] + "\<\/option\>" + "\n";
+                }
+                tempString += "</select>";
+                document.getElementById('selectTable').innerHTML = tempString;
+              }
+              else {
+                document.getElementById('selectTable').innerHTML = "";
+              }
+            }
+          }
 
-                                       function resetAll() {
-                                               document.getElementById('selectTable').innerHTML = "<a href=\"javascript:addForm('INIT')\">Ja";
-                                               document.getElementById('inputText').innerHTML = "";
-                                       }
-                                       //-->
-                               </script>
-                               <table>
-                                       <tr>
-                                               <td>
-                                                       <b>Wonach</b> wollen Sie suchen?:
-                                               </td>
-                                               <td>
-                                                       <select name="what2search" id="what2search">
-                                                               <option name="Artikelnummer" value="Artikelnummer" id="Artikelnummer">Artikelnummer</option>
-                                                               <option name="Kundennummer" value="Kundennummer" id="Kundennummer">Kundennummer</option>
-                                                               <option name="Lieferantennummer" value="Lieferantennummer" id="Lieferantennummer">Lieferantennummer</option>
-                                                               <option name="Projektnummer" value="Projektnummer" id="Projektnummer">Projektnummer</option>
-                                                               <option name="Buchungsnummer" value="Buchungsnummer" id="Buchungsnummer">Buchungsnummer</option>
-                                                               <option name="Eingangsrechnungnummer" value="Eingangsrechnungnummer" id="Eingangsrechnungnummer">Eingangsrechnungsnummer</option>
-                                                               <option name="Ausgangsrechnungnummer" value="Ausgangsrechnungnummer" id="Ausgangsrechnungnummer">Ausgangsrechnungsnummer</option>
+          function resetAll() {
+            document.getElementById('selectTable').innerHTML = "<a href=\"javascript:addForm('INIT')\">Ja";
+            document.getElementById('inputText').innerHTML = "";
+          }
+          //-->
+        </script>
+        <table>
+          <tr>
+            <td>
+              <b>Wonach</b> wollen Sie suchen?:
+            </td>
+            <td>
+              <select name="what2search" id="what2search">
+                <option name="Artikelnummer" value="Artikelnummer" id="Artikelnummer">Artikelnummer</option>
+                <option name="Kundennummer" value="Kundennummer" id="Kundennummer">Kundennummer</option>
+                <option name="Lieferantennummer" value="Lieferantennummer" id="Lieferantennummer">Lieferantennummer</option>
+                <option name="Projektnummer" value="Projektnummer" id="Projektnummer">Projektnummer</option>
+                <option name="Buchungsnummer" value="Buchungsnummer" id="Buchungsnummer">Buchungsnummer</option>
+                <option name="Eingangsrechnungnummer" value="Eingangsrechnungnummer" id="Eingangsrechnungnummer">Eingangsrechnungsnummer</option>
+                <option name="Ausgangsrechnungnummer" value="Ausgangsrechnungnummer" id="Ausgangsrechnungnummer">Ausgangsrechnungsnummer</option>
                 <option name="Mahnungsnummer" value="Mahnungsnummer" id="Mahnungsnummer">Mahnungsnummer</option>
-                                                       </select>
-                                               </td>
-                                       </tr>
-                                       <tr>
-                                               <td>
-                                                Nach welchem <b>Begriff</b> wollen Sie suchen?
-                                               </td>
-                                               <td>
-                                                       <input type="text" name="searchid" id="searchid" value="[% HTML.escape(searchid) %]">
-                                               </td>
-                                       </tr>
-                                       <tr>
-                                               <td valign="top">
-                                                Wollen Sie Ihre Suche <b>spezialisieren</b>?
-                                               </td>
-                                               <td>
-                                                       <table valign=\"top\" cellpadding=\"0\" marginheight=\"0\" marginwidth=\"0\" cellspacing=\"0\" topmargin=\"0\" leftmargin=\"0\">
-                                                               <tr>
-                                                                       <td>
-                                                                               <div id="selectTable"><a href="javascript:addForm('INIT')">Ja</div>
-                                                                               <div id="inputText"></div>
-                                                                       </td>
-                                                               </tr>
-                                                               <tr>
-                                                                       <td>
-                                                                               <div id="selectEmployee"></div>
-                                                                       </td>
-                                                               </tr>
-                                                               <tr>
-                                                                       <td>
-                                                                               <div id="selectDate"></div>
-                                                                       </td>
-                                                               </tr>
-                                                       </table>
-                                                       <input type="hidden" name="einschraenkungen" id="einschraenkungen" value="">
-                                               </td>
-                                       </tr>
-                                       </tr>
-                                       <tr>
-                                               <td colspan="6">
-                                                       <input type="submit" class="submit" value="abschicken">
-                                                       <input type="reset" class="submit" value="zurücksetzen" onClick="javascript:resetAll();">
-                                               </td>
-                                               <td>
-                                               </td>
-                                       </tr>
-                               </table>
-                       </td>
-               </tr>
-       </table>
+              </select>
+            </td>
+          </tr>
+          <tr>
+            <td>
+             Nach welchem <b>Begriff</b> wollen Sie suchen?
+            </td>
+            <td>
+              <input type="text" name="searchid" id="searchid" value="[% HTML.escape(searchid) %]">
+            </td>
+          </tr>
+          <tr>
+            <td valign="top">
+             Wollen Sie Ihre Suche <b>spezialisieren</b>?
+            </td>
+            <td>
+              <table valign=\"top\" cellpadding=\"0\" marginheight=\"0\" marginwidth=\"0\" cellspacing=\"0\" topmargin=\"0\" leftmargin=\"0\">
+                <tr>
+                  <td>
+                    <div id="selectTable"><a href="javascript:addForm('INIT')">Ja</a></div>
+                    <div id="inputText"></div>
+                  </td>
+                </tr>
+                <tr>
+                  <td>
+                    <div id="selectEmployee"></div>
+                  </td>
+                </tr>
+                <tr>
+                  <td>
+                    <div id="selectDate"></div>
+                  </td>
+                </tr>
+              </table>
+              <input type="hidden" name="einschraenkungen" id="einschraenkungen" value="">
+            </td>
+          </tr>
+          </tr>
+          <tr>
+            <td colspan="6">
+              <input type="submit" class="submit" value="abschicken">
+              <input type="reset" class="submit" value="zurücksetzen" onClick="javascript:resetAll();">
+            </td>
+            <td>
+            </td>
+          </tr>
+        </table>
+      </td>
+    </tr>
+  </table>
 </form>
index c9f989f..8cb75c3 100644 (file)
 
 <input type="hidden" name="action" value="show_am_history">
 
-       <table>
-               <tr>
-                       <th class ="listtop">history search engine</th>
-                       </th>
-               </tr>
-               <tr>
-                       <td>
-                               <script type="text/javascript">
-                                       <!--
+  <table>
+    <tr>
+      <th class ="listtop">history search engine</th>
+      </th>
+    </tr>
+    <tr>
+      <td>
+        <script type="text/javascript">
+          <!--
                     function uncheckOther(id) {
-                                               if(!(
-                                                   (document.getElementById('non-deleted').checked == false)
-                                               &&
-                                                   (document.getElementById('both').checked == false)
-                                                   &&
-                                                   (document.getElementById('deleted').checked == false)
-                                                 )) {
-                                                               if(id == "deleted") {
-                                                                       document.getElementById('non-deleted').checked = false;
-                                                                       document.getElementById('both').checked = false;
-                                                               }
-                                                               if(id == "non-deleted") {
-                                                                       document.getElementById('deleted').checked = false;
-                                                                       document.getElementById('both').checked = false;
-                                                               }
-                                                               if(id == "both") {
-                                                                       document.getElementById('non-deleted').checked = false;
-                                                                       document.getElementById('deleted').checked = false;
-                                                               }
-                                               }
-                                       }
+            if(!(
+                (document.getElementById('non-deleted').checked == false)
+                &&
+                (document.getElementById('both').checked == false)
+                &&
+                (document.getElementById('deleted').checked == false)
+              )) {
+                if(id == "deleted") {
+                  document.getElementById('non-deleted').checked = false;
+                  document.getElementById('both').checked = false;
+                }
+                if(id == "non-deleted") {
+                  document.getElementById('deleted').checked = false;
+                  document.getElementById('both').checked = false;
+                }
+                if(id == "both") {
+                  document.getElementById('non-deleted').checked = false;
+                  document.getElementById('deleted').checked = false;
+                }
+            }
+          }
 
-                                       var defaults = new Array('SAVED', 'DELETED', 'ADDED', 'PAYMENT POSTED', 'POSTED', 'POSTED AS NEW', 'SAVED FOR DUNNING', 'DUNNING STARTED', 'PRINTED');
-                                       var translated = new Object();
-                                       translated['SAVED'] = 'SAVED';
-                                       translated['DELETED'] = 'DELETED';
-                                       translated['ADDED'] = 'ADDED';
-                                       translated['PAYMENT POSTED'] = 'PAYMENT POSTED';
-                                       translated['POSTED'] = 'POSTED';
-                                       translated['POSTED AS NEW'] = 'POSTED AS NEW'
-                                       translated['SAVED FOR DUNNING'] = 'SAVED FOR DUNNING';
-                                       translated['DUNNING STARTED'] = 'DUNNING STARTED';
-                                       translated['PRINTED'] = 'PRINTED';
+          var defaults = new Array('SAVED', 'DELETED', 'ADDED', 'PAYMENT POSTED', 'POSTED', 'POSTED AS NEW', 'SAVED FOR DUNNING', 'DUNNING STARTED', 'PRINTED');
+          var translated = new Object();
+          translated['SAVED'] = 'SAVED';
+          translated['DELETED'] = 'DELETED';
+          translated['ADDED'] = 'ADDED';
+          translated['PAYMENT POSTED'] = 'PAYMENT POSTED';
+          translated['POSTED'] = 'POSTED';
+          translated['POSTED AS NEW'] = 'POSTED AS NEW'
+          translated['SAVED FOR DUNNING'] = 'SAVED FOR DUNNING';
+          translated['DUNNING STARTED'] = 'DUNNING STARTED';
+          translated['PRINTED'] = 'PRINTED';
 
-                                       var jscalender = "<table valign=\"top\">"
-                                                                       + "<tr><td colspan=\"2\"><b>Period:&nbsp;</b></td></tr>"
-                                                                       + "<tr><td>from (time):&nbsp;"
-                                                                       + "<input name=\"fromdate\" id=\"fromdate\" size=\"11\" title=\"[% HTML.escape(myconfig_dateformat) %]\" value=\"[% HTML.escape(fromdate) %]\">"
-                                                                       + "<input type=\"button\" name=\"fromdate\" id=\"trigger1\" value=\"?\">"
-                                                                       + "&nbsp;</td><td>to (time):&nbsp;"
-                                                                       + "<input name=\"todate\" id=\"todate\" size=\"11\" title=\"[% HTML.escape(myconfig_dateformat) %]\" value=\"[% HTML.escape(todate) %]\">"
-                                                                       + "<input type=\"button\" name=\"todate\" id=\"trigger2\" value=\"?\"></td></tr></table>";
-                                       var mitarbeiter = "<table valign=\"top\">"
-                                                                       + "<tr><td><b>Mitarbeiter:</b>&nbsp;</td>"
-                                                                       + "<td><input type='text' name='mitarbeiter' id='mitarbeiter'></td>"
-                                                                       + "</tr></table>";
+          var jscalender = "<table valign=\"top\">"
+                  + "<tr><td colspan=\"2\"><b>Period:&nbsp;</b></td></tr>"
+                  + "<tr><td>from (time):&nbsp;"
+                  + "<input name=\"fromdate\" id=\"fromdate\" size=\"11\" title=\"[% HTML.escape(myconfig_dateformat) %]\" value=\"[% HTML.escape(fromdate) %]\">"
+                  + "<input type=\"button\" name=\"fromdate\" id=\"trigger1\" value=\"?\">"
+                  + "&nbsp;</td><td>to (time):&nbsp;"
+                  + "<input name=\"todate\" id=\"todate\" size=\"11\" title=\"[% HTML.escape(myconfig_dateformat) %]\" value=\"[% HTML.escape(todate) %]\">"
+                  + "<input type=\"button\" name=\"todate\" id=\"trigger2\" value=\"?\"></td></tr></table>";
+          var mitarbeiter = "<table valign=\"top\">"
+                  + "<tr><td><b>Mitarbeiter:</b>&nbsp;</td>"
+                  + "<td><input type='text' name='mitarbeiter' id='mitarbeiter'></td>"
+                  + "</tr></table>";
 
-                                       var tempString = "";
-                                       function addForm(last, remove) {
-                                               if(last == "INIT") {
-                                                       tempString = "<select id='selectForm'><option></option>";
-                                                       for(i=0;i<defaults.length;i++) {
-                                                               tempString += "\<option value\=\'" + defaults[i] + "\'\ onClick=\"javascript:addForm(\'" + defaults[i] + "\', " + i + ");\">" + translated[defaults[i]] + "\<\/option\>" + "\n";
-                                                       }
-                                                       tempString += "</select>";
-                                                       document.getElementById('selectEmployee').innerHTML = mitarbeiter;
-                                                       document.getElementById('selectDate').innerHTML = jscalender;
-                                                       document.getElementById('selectTable').innerHTML = tempString;
+          var tempString = "";
+          function addForm(last, remove) {
+            if(last == "INIT") {
+              tempString = "<select id='selectForm'><option></option>";
+              for(i=0;i<defaults.length;i++) {
+                tempString += "\<option value\=\'" + defaults[i] + "\'\ onClick=\"javascript:addForm(\'" + defaults[i] + "\', " + i + ");\">" + translated[defaults[i]] + "\<\/option\>" + "\n";
+              }
+              tempString += "</select>";
+              document.getElementById('selectEmployee').innerHTML = mitarbeiter;
+              document.getElementById('selectDate').innerHTML = jscalender;
+              document.getElementById('selectTable').innerHTML = tempString;
 
-                                                       Calendar.setup(
-                                       {
-                                     inputField : "fromdate",
-                                     ifFormat :"%d.%m.%Y",
-                                     align : "BL",
-                                     button : "trigger1"
-                                       });
+              Calendar.setup(
+                    {
+                          inputField : "fromdate",
+                          ifFormat :"%d.%m.%Y",
+                          align : "BL",
+                          button : "trigger1"
+                      });
 
-                                           Calendar.setup(
-                                               {
-                                     inputField : "todate",
-                                         ifFormat :"%d.%m.%Y",
-                                         align : "BL",
-                                         button : "trigger2"
-                                               });
-                                               }
-                                               else {
-                                                       defaults.splice(remove,1);
-                                                       document.getElementById('inputText').innerHTML += ((document.getElementById('inputText').innerHTML == "") ? ("<b>You've already chosen the following limitations:</b><br>") : ("<br>")) + translated[last];
-                                                       if(defaults.length > 0) {
-                                                               document.getElementById('einschraenkungen').value += ((document.getElementById('einschraenkungen').value == "") ? ("") : (",")) + last;
-                                                               tempString = "<select id='selectForm'><option></option>";
-                                                               for(i=0;i<defaults.length;i++) {
-                                                                       tempString += "\<option value\=\'" + defaults[i] + "\'\ onClick=\"javascript:addForm(\'" + defaults[i] + "\', " + i + ");\">" + translated[defaults[i]] + "\<\/option\>" + "\n";
-                                                               }
-                                                               tempString += "</select>";
-                                                               document.getElementById('selectTable').innerHTML = tempString;
-                                                       }
-                                                       else {
-                                                               document.getElementById('selectTable').innerHTML = "";
-                                                       }
-                                               }
-                                       }
+                    Calendar.setup(
+                    {
+                          inputField : "todate",
+                          ifFormat :"%d.%m.%Y",
+                          align : "BL",
+                          button : "trigger2"
+                    });
+            }
+            else {
+              defaults.splice(remove,1);
+              document.getElementById('inputText').innerHTML += ((document.getElementById('inputText').innerHTML == "") ? ("<b>You've already chosen the following limitations:</b><br>") : ("<br>")) + translated[last];
+              if(defaults.length > 0) {
+                document.getElementById('einschraenkungen').value += ((document.getElementById('einschraenkungen').value == "") ? ("") : (",")) + last;
+                tempString = "<select id='selectForm'><option></option>";
+                for(i=0;i<defaults.length;i++) {
+                  tempString += "\<option value\=\'" + defaults[i] + "\'\ onClick=\"javascript:addForm(\'" + defaults[i] + "\', " + i + ");\">" + translated[defaults[i]] + "\<\/option\>" + "\n";
+                }
+                tempString += "</select>";
+                document.getElementById('selectTable').innerHTML = tempString;
+              }
+              else {
+                document.getElementById('selectTable').innerHTML = "";
+              }
+            }
+          }
 
-                                       function resetAll() {
-                                               document.getElementById('selectTable').innerHTML = "<a href=\"javascript:addForm('INIT')\">Yes";
-                                               document.getElementById('inputText').innerHTML = "";
-                                       }
-                                       //-->
-                               </script>
-                               <table>
-                                       <tr>
-                                               <td>
-                                                       <b>What</b> do you want to look for?:
-                                               </td>
-                                               <td>
-                                                       <select name="what2search" id="what2search">
-                                                               <option name="Artikelnummer" value="Artikelnummer" id="Artikelnummer">Part Number</option>
-                                                               <option name="Kundennummer" value="Kundennummer" id="Kundennummer">Customer Number</option>
-                                                               <option name="Lieferantennummer" value="Lieferantennummer" id="Lieferantennummer">Vendor Number</option>
-                                                               <option name="Projektnummer" value="Projektnummer" id="Projektnummer">Project Number</option>
-                                                               <option name="Buchungsnummer" value="Buchungsnummer" id="Buchungsnummer">ID</option>
-                                                               <option name="Eingangsrechnungnummer" value="Eingangsrechnungnummer" id="Eingangsrechnungnummer">Incoming invoice number</option>
-                                                               <option name="Ausgangsrechnungnummer" value="Ausgangsrechnungnummer" id="Ausgangsrechnungnummer">Sales invoice number</option>
+          function resetAll() {
+            document.getElementById('selectTable').innerHTML = "<a href=\"javascript:addForm('INIT')\">Yes";
+            document.getElementById('inputText').innerHTML = "";
+          }
+          //-->
+        </script>
+        <table>
+          <tr>
+            <td>
+              <b>What</b> do you want to look for?:
+            </td>
+            <td>
+              <select name="what2search" id="what2search">
+                <option name="Artikelnummer" value="Artikelnummer" id="Artikelnummer">Part Number</option>
+                <option name="Kundennummer" value="Kundennummer" id="Kundennummer">Customer Number</option>
+                <option name="Lieferantennummer" value="Lieferantennummer" id="Lieferantennummer">Vendor Number</option>
+                <option name="Projektnummer" value="Projektnummer" id="Projektnummer">Project Number</option>
+                <option name="Buchungsnummer" value="Buchungsnummer" id="Buchungsnummer">ID</option>
+                <option name="Eingangsrechnungnummer" value="Eingangsrechnungnummer" id="Eingangsrechnungnummer">Incoming invoice number</option>
+                <option name="Ausgangsrechnungnummer" value="Ausgangsrechnungnummer" id="Ausgangsrechnungnummer">Sales invoice number</option>
                 <option name="Mahnungsnummer" value="Mahnungsnummer" id="Mahnungsnummer">Dunning number</option>
-                                                       </select>
-                                               </td>
-                                       </tr>
-                                       <tr>
-                                               <td>
-                                                What's the <b>term</b> you're looking for?
-                                               </td>
-                                               <td>
-                                                       <input type="text" name="searchid" id="searchid" value="[% HTML.escape(searchid) %]">
-                                               </td>
-                                       </tr>
-                                       <tr>
-                                               <td valign="top">
-                                                Do you want to <b>limit</b> your search?
-                                               </td>
-                                               <td>
-                                                       <table valign=\"top\" cellpadding=\"0\" marginheight=\"0\" marginwidth=\"0\" cellspacing=\"0\" topmargin=\"0\" leftmargin=\"0\">
-                                                               <tr>
-                                                                       <td>
-                                                                               <div id="selectTable"><a href="javascript:addForm('INIT')">Yes</div>
-                                                                               <div id="inputText"></div>
-                                                                       </td>
-                                                               </tr>
-                                                               <tr>
-                                                                       <td>
-                                                                               <div id="selectEmployee"></div>
-                                                                       </td>
-                                                               </tr>
-                                                               <tr>
-                                                                       <td>
-                                                                               <div id="selectDate"></div>
-                                                                       </td>
-                                                               </tr>
-                                                       </table>
-                                                       <input type="hidden" name="einschraenkungen" id="einschraenkungen" value="">
-                                               </td>
-                                       </tr>
-                                       </tr>
-                                       <tr>
-                                               <td colspan="6">
-                                                       <input type="submit" class="submit" value="submit">
-                                                       <input type="reset" class="submit" value="reset" onClick="javascript:resetAll();">
-                                               </td>
-                                               <td>
-                                               </td>
-                                       </tr>
-                               </table>
-                       </td>
-               </tr>
-       </table>
+              </select>
+            </td>
+          </tr>
+          <tr>
+            <td>
+             What's the <b>term</b> you're looking for?
+            </td>
+            <td>
+              <input type="text" name="searchid" id="searchid" value="[% HTML.escape(searchid) %]">
+            </td>
+          </tr>
+          <tr>
+            <td valign="top">
+             Do you want to <b>limit</b> your search?
+            </td>
+            <td>
+              <table valign=\"top\" cellpadding=\"0\" marginheight=\"0\" marginwidth=\"0\" cellspacing=\"0\" topmargin=\"0\" leftmargin=\"0\">
+                <tr>
+                  <td>
+                    <div id="selectTable"><a href="javascript:addForm('INIT')">Yes</a></div>
+                    <div id="inputText"></div>
+                  </td>
+                </tr>
+                <tr>
+                  <td>
+                    <div id="selectEmployee"></div>
+                  </td>
+                </tr>
+                <tr>
+                  <td>
+                    <div id="selectDate"></div>
+                  </td>
+                </tr>
+              </table>
+              <input type="hidden" name="einschraenkungen" id="einschraenkungen" value="">
+            </td>
+          </tr>
+          </tr>
+          <tr>
+            <td colspan="6">
+              <input type="submit" class="submit" value="submit">
+              <input type="reset" class="submit" value="reset" onClick="javascript:resetAll();">
+            </td>
+            <td>
+            </td>
+          </tr>
+        </table>
+      </td>
+    </tr>
+  </table>
 </form>
index e2a9ba7..1f8411f 100644 (file)
 
 <input type="hidden" name="action" value="show_am_history">
 
-       <table>
-               <tr>
-                       <th class ="listtop"><translate>history search engine</translate></th>
-                       </th>
-               </tr>
-               <tr>
-                       <td>
-                               <script type="text/javascript">
-                                       <!--
+  <table>
+    <tr>
+      <th class ="listtop"><translate>history search engine</translate></th>
+      </th>
+    </tr>
+    <tr>
+      <td>
+        <script type="text/javascript">
+          <!--
                     function uncheckOther(id) {
-                                               if(!(
-                                                   (document.getElementById('non-deleted').checked == false)
-                                               &&
-                                                   (document.getElementById('both').checked == false)
-                                                   &&
-                                                   (document.getElementById('deleted').checked == false)
-                                                 )) {
-                                                               if(id == "deleted") {
-                                                                       document.getElementById('non-deleted').checked = false;
-                                                                       document.getElementById('both').checked = false;
-                                                               }
-                                                               if(id == "non-deleted") {
-                                                                       document.getElementById('deleted').checked = false;
-                                                                       document.getElementById('both').checked = false;
-                                                               }
-                                                               if(id == "both") {
-                                                                       document.getElementById('non-deleted').checked = false;
-                                                                       document.getElementById('deleted').checked = false;
-                                                               }
-                                               }
-                                       }
+            if(!(
+                (document.getElementById('non-deleted').checked == false)
+                &&
+                (document.getElementById('both').checked == false)
+                &&
+                (document.getElementById('deleted').checked == false)
+              )) {
+                if(id == "deleted") {
+                  document.getElementById('non-deleted').checked = false;
+                  document.getElementById('both').checked = false;
+                }
+                if(id == "non-deleted") {
+                  document.getElementById('deleted').checked = false;
+                  document.getElementById('both').checked = false;
+                }
+                if(id == "both") {
+                  document.getElementById('non-deleted').checked = false;
+                  document.getElementById('deleted').checked = false;
+                }
+            }
+          }
 
-                                       var defaults = new Array('SAVED', 'DELETED', 'ADDED', 'PAYMENT POSTED', 'POSTED', 'POSTED AS NEW', 'SAVED FOR DUNNING', 'DUNNING STARTED', 'PRINTED');
-                                       var translated = new Object();
-                                       translated['SAVED'] = '<translate>SAVED</translate>';
-                                       translated['DELETED'] = '<translate>DELETED</translate>';
-                                       translated['ADDED'] = '<translate>ADDED</translate>';
-                                       translated['PAYMENT POSTED'] = '<translate>PAYMENT POSTED</translate>';
-                                       translated['POSTED'] = '<translate>POSTED</translate>';
-                                       translated['POSTED AS NEW'] = '<translate>POSTED AS NEW</translate>'
-                                       translated['SAVED FOR DUNNING'] = '<translate>SAVED FOR DUNNING</translate>';
-                                       translated['DUNNING STARTED'] = '<translate>DUNNING STARTED</translate>';
-                                       translated['PRINTED'] = '<translate>PRINTED</translate>';
+          var defaults = new Array('SAVED', 'DELETED', 'ADDED', 'PAYMENT POSTED', 'POSTED', 'POSTED AS NEW', 'SAVED FOR DUNNING', 'DUNNING STARTED', 'PRINTED');
+          var translated = new Object();
+          translated['SAVED'] = '<translate>SAVED</translate>';
+          translated['DELETED'] = '<translate>DELETED</translate>';
+          translated['ADDED'] = '<translate>ADDED</translate>';
+          translated['PAYMENT POSTED'] = '<translate>PAYMENT POSTED</translate>';
+          translated['POSTED'] = '<translate>POSTED</translate>';
+          translated['POSTED AS NEW'] = '<translate>POSTED AS NEW</translate>'
+          translated['SAVED FOR DUNNING'] = '<translate>SAVED FOR DUNNING</translate>';
+          translated['DUNNING STARTED'] = '<translate>DUNNING STARTED</translate>';
+          translated['PRINTED'] = '<translate>PRINTED</translate>';
 
-                                       var jscalender = "<table valign=\"top\">"
-                                                                       + "<tr><td colspan=\"2\"><b><translate>Period</translate>:&nbsp;</b></td></tr>"
-                                                                       + "<tr><td><translate>from (time)</translate>:&nbsp;"
-                                                                       + "<input name=\"fromdate\" id=\"fromdate\" size=\"11\" title=\"[% HTML.escape(myconfig_dateformat) %]\" value=\"[% HTML.escape(fromdate) %]\">"
-                                                                       + "<input type=\"button\" name=\"fromdate\" id=\"trigger1\" value=\"?\">"
-                                                                       + "&nbsp;</td><td><translate>to (time)</translate>:&nbsp;"
-                                                                       + "<input name=\"todate\" id=\"todate\" size=\"11\" title=\"[% HTML.escape(myconfig_dateformat) %]\" value=\"[% HTML.escape(todate) %]\">"
-                                                                       + "<input type=\"button\" name=\"todate\" id=\"trigger2\" value=\"?\"></td></tr></table>";
-                                       var mitarbeiter = "<table valign=\"top\">"
-                                                                       + "<tr><td><b>Mitarbeiter:</b>&nbsp;</td>"
-                                                                       + "<td><input type='text' name='mitarbeiter' id='mitarbeiter'></td>"
-                                                                       + "</tr></table>";
+          var jscalender = "<table valign=\"top\">"
+                  + "<tr><td colspan=\"2\"><b><translate>Period</translate>:&nbsp;</b></td></tr>"
+                  + "<tr><td><translate>from (time)</translate>:&nbsp;"
+                  + "<input name=\"fromdate\" id=\"fromdate\" size=\"11\" title=\"[% HTML.escape(myconfig_dateformat) %]\" value=\"[% HTML.escape(fromdate) %]\">"
+                  + "<input type=\"button\" name=\"fromdate\" id=\"trigger1\" value=\"?\">"
+                  + "&nbsp;</td><td><translate>to (time)</translate>:&nbsp;"
+                  + "<input name=\"todate\" id=\"todate\" size=\"11\" title=\"[% HTML.escape(myconfig_dateformat) %]\" value=\"[% HTML.escape(todate) %]\">"
+                  + "<input type=\"button\" name=\"todate\" id=\"trigger2\" value=\"?\"></td></tr></table>";
+          var mitarbeiter = "<table valign=\"top\">"
+                  + "<tr><td><b>Mitarbeiter:</b>&nbsp;</td>"
+                  + "<td><input type='text' name='mitarbeiter' id='mitarbeiter'></td>"
+                  + "</tr></table>";
 
-                                       var tempString = "";
-                                       function addForm(last, remove) {
-                                               if(last == "INIT") {
-                                                       tempString = "<select id='selectForm'><option></option>";
-                                                       for(i=0;i<defaults.length;i++) {
-                                                               tempString += "\<option value\=\'" + defaults[i] + "\'\ onClick=\"javascript:addForm(\'" + defaults[i] + "\', " + i + ");\">" + translated[defaults[i]] + "\<\/option\>" + "\n";
-                                                       }
-                                                       tempString += "</select>";
-                                                       document.getElementById('selectEmployee').innerHTML = mitarbeiter;
-                                                       document.getElementById('selectDate').innerHTML = jscalender;
-                                                       document.getElementById('selectTable').innerHTML = tempString;
+          var tempString = "";
+          function addForm(last, remove) {
+            if(last == "INIT") {
+              tempString = "<select id='selectForm'><option></option>";
+              for(i=0;i<defaults.length;i++) {
+                tempString += "\<option value\=\'" + defaults[i] + "\'\ onClick=\"javascript:addForm(\'" + defaults[i] + "\', " + i + ");\">" + translated[defaults[i]] + "\<\/option\>" + "\n";
+              }
+              tempString += "</select>";
+              document.getElementById('selectEmployee').innerHTML = mitarbeiter;
+              document.getElementById('selectDate').innerHTML = jscalender;
+              document.getElementById('selectTable').innerHTML = tempString;
 
-                                                       Calendar.setup(
-                                       {
-                                     inputField : "fromdate",
-                                     ifFormat :"%d.%m.%Y",
-                                     align : "BL",
-                                     button : "trigger1"
-                                       });
+              Calendar.setup(
+                    {
+                          inputField : "fromdate",
+                          ifFormat :"%d.%m.%Y",
+                          align : "BL",
+                          button : "trigger1"
+                      });
 
-                                           Calendar.setup(
-                                               {
-                                     inputField : "todate",
-                                         ifFormat :"%d.%m.%Y",
-                                         align : "BL",
-                                         button : "trigger2"
-                                               });
-                                               }
-                                               else {
-                                                       defaults.splice(remove,1);
-                                                       document.getElementById('inputText').innerHTML += ((document.getElementById('inputText').innerHTML == "") ? ("<b><translate>You've already chosen the following limitations:</translate></b><br>") : ("<br>")) + translated[last];
-                                                       if(defaults.length > 0) {
-                                                               document.getElementById('einschraenkungen').value += ((document.getElementById('einschraenkungen').value == "") ? ("") : (",")) + last;
-                                                               tempString = "<select id='selectForm'><option></option>";
-                                                               for(i=0;i<defaults.length;i++) {
-                                                                       tempString += "\<option value\=\'" + defaults[i] + "\'\ onClick=\"javascript:addForm(\'" + defaults[i] + "\', " + i + ");\">" + translated[defaults[i]] + "\<\/option\>" + "\n";
-                                                               }
-                                                               tempString += "</select>";
-                                                               document.getElementById('selectTable').innerHTML = tempString;
-                                                       }
-                                                       else {
-                                                               document.getElementById('selectTable').innerHTML = "";
-                                                       }
-                                               }
-                                       }
+                    Calendar.setup(
+                    {
+                          inputField : "todate",
+                          ifFormat :"%d.%m.%Y",
+                          align : "BL",
+                          button : "trigger2"
+                    });
+            }
+            else {
+              defaults.splice(remove,1);
+              document.getElementById('inputText').innerHTML += ((document.getElementById('inputText').innerHTML == "") ? ("<b><translate>You've already chosen the following limitations:</translate></b><br>") : ("<br>")) + translated[last];
+              if(defaults.length > 0) {
+                document.getElementById('einschraenkungen').value += ((document.getElementById('einschraenkungen').value == "") ? ("") : (",")) + last;
+                tempString = "<select id='selectForm'><option></option>";
+                for(i=0;i<defaults.length;i++) {
+                  tempString += "\<option value\=\'" + defaults[i] + "\'\ onClick=\"javascript:addForm(\'" + defaults[i] + "\', " + i + ");\">" + translated[defaults[i]] + "\<\/option\>" + "\n";
+                }
+                tempString += "</select>";
+                document.getElementById('selectTable').innerHTML = tempString;
+              }
+              else {
+                document.getElementById('selectTable').innerHTML = "";
+              }
+            }
+          }
 
-                                       function resetAll() {
-                                               document.getElementById('selectTable').innerHTML = "<a href=\"javascript:addForm('INIT')\"><translate>Yes</translate>";
-                                               document.getElementById('inputText').innerHTML = "";
-                                       }
-                                       //-->
-                               </script>
-                               <table>
-                                       <tr>
-                                               <td>
-                                                       <translate><b>What</b> do you want to look for?</translate>:
-                                               </td>
-                                               <td>
-                                                       <select name="what2search" id="what2search">
-                                                               <option name="Artikelnummer" value="Artikelnummer" id="Artikelnummer"><translate>Part Number</translate></option>
-                                                               <option name="Kundennummer" value="Kundennummer" id="Kundennummer"><translate>Customer Number</translate></option>
-                                                               <option name="Lieferantennummer" value="Lieferantennummer" id="Lieferantennummer"><translate>Vendor Number</translate></option>
-                                                               <option name="Projektnummer" value="Projektnummer" id="Projektnummer"><translate>Project Number</translate></option>
-                                                               <option name="Buchungsnummer" value="Buchungsnummer" id="Buchungsnummer"><translate>ID</translate></option>
-                                                               <option name="Eingangsrechnungnummer" value="Eingangsrechnungnummer" id="Eingangsrechnungnummer"><translate>Incoming invoice number</translate></option>
-                                                               <option name="Ausgangsrechnungnummer" value="Ausgangsrechnungnummer" id="Ausgangsrechnungnummer"><translate>Sales invoice number</translate></option>
+          function resetAll() {
+            document.getElementById('selectTable').innerHTML = "<a href=\"javascript:addForm('INIT')\"><translate>Yes</translate>";
+            document.getElementById('inputText').innerHTML = "";
+          }
+          //-->
+        </script>
+        <table>
+          <tr>
+            <td>
+              <translate><b>What</b> do you want to look for?</translate>:
+            </td>
+            <td>
+              <select name="what2search" id="what2search">
+                <option name="Artikelnummer" value="Artikelnummer" id="Artikelnummer"><translate>Part Number</translate></option>
+                <option name="Kundennummer" value="Kundennummer" id="Kundennummer"><translate>Customer Number</translate></option>
+                <option name="Lieferantennummer" value="Lieferantennummer" id="Lieferantennummer"><translate>Vendor Number</translate></option>
+                <option name="Projektnummer" value="Projektnummer" id="Projektnummer"><translate>Project Number</translate></option>
+                <option name="Buchungsnummer" value="Buchungsnummer" id="Buchungsnummer"><translate>ID</translate></option>
+                <option name="Eingangsrechnungnummer" value="Eingangsrechnungnummer" id="Eingangsrechnungnummer"><translate>Incoming invoice number</translate></option>
+                <option name="Ausgangsrechnungnummer" value="Ausgangsrechnungnummer" id="Ausgangsrechnungnummer"><translate>Sales invoice number</translate></option>
                 <option name="Mahnungsnummer" value="Mahnungsnummer" id="Mahnungsnummer"><translate>Dunning number</translate></option>
-                                                       </select>
-                                               </td>
-                                       </tr>
-                                       <tr>
-                                               <td>
-                                                <translate>What's the <b>term</b> you're looking for?</translate>
-                                               </td>
-                                               <td>
-                                                       <input type="text" name="searchid" id="searchid" value="[% HTML.escape(searchid) %]">
-                                               </td>
-                                       </tr>
-                                       <tr>
-                                               <td valign="top">
-                                                <translate>Do you want to <b>limit</b> your search?</translate>
-                                               </td>
-                                               <td>
-                                                       <table valign=\"top\" cellpadding=\"0\" marginheight=\"0\" marginwidth=\"0\" cellspacing=\"0\" topmargin=\"0\" leftmargin=\"0\">
-                                                               <tr>
-                                                                       <td>
-                                                                               <div id="selectTable"><a href="javascript:addForm('INIT')"><translate>Yes</translate></div>
-                                                                               <div id="inputText"></div>
-                                                                       </td>
-                                                               </tr>
-                                                               <tr>
-                                                                       <td>
-                                                                               <div id="selectEmployee"></div>
-                                                                       </td>
-                                                               </tr>
-                                                               <tr>
-                                                                       <td>
-                                                                               <div id="selectDate"></div>
-                                                                       </td>
-                                                               </tr>
-                                                       </table>
-                                                       <input type="hidden" name="einschraenkungen" id="einschraenkungen" value="">
-                                               </td>
-                                       </tr>
-                                       </tr>
-                                       <tr>
-                                               <td colspan="6">
-                                                       <input type="submit" class="submit" value="<translate>submit</translate>">
-                                                       <input type="reset" class="submit" value="<translate>reset</translate>" onClick="javascript:resetAll();">
-                                               </td>
-                                               <td>
-                                               </td>
-                                       </tr>
-                               </table>
-                       </td>
-               </tr>
-       </table>
+              </select>
+            </td>
+          </tr>
+          <tr>
+            <td>
+             <translate>What's the <b>term</b> you're looking for?</translate>
+            </td>
+            <td>
+              <input type="text" name="searchid" id="searchid" value="[% HTML.escape(searchid) %]">
+            </td>
+          </tr>
+          <tr>
+            <td valign="top">
+             <translate>Do you want to <b>limit</b> your search?</translate>
+            </td>
+            <td>
+              <table valign=\"top\" cellpadding=\"0\" marginheight=\"0\" marginwidth=\"0\" cellspacing=\"0\" topmargin=\"0\" leftmargin=\"0\">
+                <tr>
+                  <td>
+                    <div id="selectTable"><a href="javascript:addForm('INIT')"><translate>Yes</translate></a></div>
+                    <div id="inputText"></div>
+                  </td>
+                </tr>
+                <tr>
+                  <td>
+                    <div id="selectEmployee"></div>
+                  </td>
+                </tr>
+                <tr>
+                  <td>
+                    <div id="selectDate"></div>
+                  </td>
+                </tr>
+              </table>
+              <input type="hidden" name="einschraenkungen" id="einschraenkungen" value="">
+            </td>
+          </tr>
+          </tr>
+          <tr>
+            <td colspan="6">
+              <input type="submit" class="submit" value="<translate>submit</translate>">
+              <input type="reset" class="submit" value="<translate>reset</translate>" onClick="javascript:resetAll();">
+            </td>
+            <td>
+            </td>
+          </tr>
+        </table>
+      </td>
+    </tr>
+  </table>
 </form>
index e7f90d8..1fb0f24 100644 (file)
 [% END %]
 
 <table>
-       <tr>
-               <th class="listtop">
+  <tr>
+    <th class="listtop">
       <table height="0" width="0" cellpadding="0" cellspacing="0" marginheight="0" marginwidth="0" border="0">
         <tr>
           <td align="center" valign="middle">
-                            &nbsp;Zeitpunkt&nbsp;
+           &nbsp;Zeitpunkt&nbsp;
           </td>
           <td valign="top">
            [% PROCESS column_header THIS_COLUMN=ITIME THIS_COLUMN_DOWN=ITIMEBY column='h.itime' %]
           </td>
         </tr>
       </table>
-               </th>
-               <th class=listtop>
+    </th>
+    <th class=listtop>
       <table height="0" width="0" cellpadding="0" cellspacing="0" marginheight="0" marginwidth="0" border="0">
         <tr>
           <td align="center" valign="middle">
           </td>
         </tr>
       </table>
-               </th>
-               <th class=listtop>
+    </th>
+    <th class=listtop>
       <table>
         <tr>
           <td>
-                             &nbsp;Aktion&nbsp;
+            &nbsp;Aktion&nbsp;
           </td>
         </tr>
       </table>
-               </th>
-               <th class=listtop>
+    </th>
+    <th class=listtop>
       <table>
         <tr>
           <td>
         </tr>
       </table>
     </th>
-       </tr>
+  </tr>
   <tbody>
 [% FOREACH row = DATEN %]
   <tr class="listrow[% loop.count % 2 %]">
-               <td nowrap>
-                       &nbsp;[% HTML.escape(row.itime) %]&nbsp;
-               </td>
-               <td nowrap>
-                       &nbsp;[% HTML.escape(row.name) %]&nbsp;
-               </td>
-               <td>
-                       &nbsp;[% HTML.escape(row.addition) %]&nbsp;
-               </td>
-               <td>
+    <td nowrap>
+      &nbsp;[% HTML.escape(row.itime) %]&nbsp;
+    </td>
+    <td nowrap>
+      &nbsp;[% HTML.escape(row.name) %]&nbsp;
+    </td>
+    <td>
+      &nbsp;[% HTML.escape(row.addition) %]&nbsp;
+    </td>
+    <td>
       &nbsp;[% HTML.escape(row.what_done) %]&nbsp;
     </td>
     <td>
     <td>
       &nbsp;[% HTML.escape(row.snumbers) %]&nbsp;
     </td>
-       </tr>
+  </tr>
 [% END %]
 </tbody>
 </table>
index bde1bc7..2493eb0 100644 (file)
 [% END %]
 
 <table>
-       <tr>
-               <th class="listtop">
+  <tr>
+    <th class="listtop">
       <table height="0" width="0" cellpadding="0" cellspacing="0" marginheight="0" marginwidth="0" border="0">
         <tr>
           <td align="center" valign="middle">
-                            &nbsp;Zeitpunkt&nbsp;
+           &nbsp;Zeitpunkt&nbsp;
           </td>
           <td valign="top">
            [% PROCESS column_header THIS_COLUMN=ITIME THIS_COLUMN_DOWN=ITIMEBY column='h.itime' %]
           </td>
         </tr>
       </table>
-               </th>
-               <th class=listtop>
+    </th>
+    <th class=listtop>
       <table height="0" width="0" cellpadding="0" cellspacing="0" marginheight="0" marginwidth="0" border="0">
         <tr>
           <td align="center" valign="middle">
           </td>
         </tr>
       </table>
-               </th>
-               <th class=listtop>
+    </th>
+    <th class=listtop>
       <table>
         <tr>
           <td>
-                             &nbsp;Aktion&nbsp;
+            &nbsp;Aktion&nbsp;
           </td>
         </tr>
       </table>
-               </th>
-               <th class=listtop>
+    </th>
+    <th class=listtop>
       <table>
         <tr>
           <td>
         </tr>
       </table>
     </th>
-       </tr>
+  </tr>
   <tbody>
 [% FOREACH row = DATEN %]
   <tr class="listrow[% loop.count % 2 %]">
-               <td nowrap>
-                       &nbsp;[% HTML.escape(row.itime) %]&nbsp;
-               </td>
-               <td nowrap>
-                       &nbsp;[% HTML.escape(row.name) %]&nbsp;
-               </td>
-               <td>
-                       &nbsp;[% HTML.escape(row.addition) %]&nbsp;
-               </td>
-               <td>
+    <td nowrap>
+      &nbsp;[% HTML.escape(row.itime) %]&nbsp;
+    </td>
+    <td nowrap>
+      &nbsp;[% HTML.escape(row.name) %]&nbsp;
+    </td>
+    <td>
+      &nbsp;[% HTML.escape(row.addition) %]&nbsp;
+    </td>
+    <td>
       &nbsp;[% HTML.escape(row.what_done) %]&nbsp;
     </td>
     <td>
     <td>
       &nbsp;[% HTML.escape(row.snumbers) %]&nbsp;
     </td>
-       </tr>
+  </tr>
 [% END %]
 </tbody>
 </table>
index 4e28b33..5847496 100644 (file)
 [% END %]
 
 <table>
-       <tr>
-               <th class="listtop">
+  <tr>
+    <th class="listtop">
       <table height="0" width="0" cellpadding="0" cellspacing="0" marginheight="0" marginwidth="0" border="0">
         <tr>
           <td align="center" valign="middle">
-                            &nbsp;<translate>Zeitpunkt</translate>&nbsp;
+           &nbsp;<translate>Zeitpunkt</translate>&nbsp;
           </td>
           <td valign="top">
            [% PROCESS column_header THIS_COLUMN=ITIME THIS_COLUMN_DOWN=ITIMEBY column='h.itime' %]
           </td>
         </tr>
       </table>
-               </th>
-               <th class=listtop>
+    </th>
+    <th class=listtop>
       <table height="0" width="0" cellpadding="0" cellspacing="0" marginheight="0" marginwidth="0" border="0">
         <tr>
           <td align="center" valign="middle">
           </td>
         </tr>
       </table>
-               </th>
-               <th class=listtop>
+    </th>
+    <th class=listtop>
       <table>
         <tr>
           <td>
-                             &nbsp;<translate>Aktion</translate>&nbsp;
+            &nbsp;<translate>Aktion</translate>&nbsp;
           </td>
         </tr>
       </table>
-               </th>
-               <th class=listtop>
+    </th>
+    <th class=listtop>
       <table>
         <tr>
           <td>
         </tr>
       </table>
     </th>
-       </tr>
+  </tr>
   <tbody>
 [% FOREACH row = DATEN %]
   <tr class="listrow[% loop.count % 2 %]">
-               <td nowrap>
-                       &nbsp;[% HTML.escape(row.itime) %]&nbsp;
-               </td>
-               <td nowrap>
-                       &nbsp;[% HTML.escape(row.name) %]&nbsp;
-               </td>
-               <td>
-                       &nbsp;[% HTML.escape(row.addition) %]&nbsp;
-               </td>
-               <td>
+    <td nowrap>
+      &nbsp;[% HTML.escape(row.itime) %]&nbsp;
+    </td>
+    <td nowrap>
+      &nbsp;[% HTML.escape(row.name) %]&nbsp;
+    </td>
+    <td>
+      &nbsp;[% HTML.escape(row.addition) %]&nbsp;
+    </td>
+    <td>
       &nbsp;[% HTML.escape(row.what_done) %]&nbsp;
     </td>
     <td>
     <td>
       &nbsp;[% HTML.escape(row.snumbers) %]&nbsp;
     </td>
-       </tr>
+  </tr>
 [% END %]
 </tbody>
 </table>
diff --git a/templates/webpages/ct/ajax_autocomplete_de.html b/templates/webpages/ct/ajax_autocomplete_de.html
new file mode 100644 (file)
index 0000000..25ab8c3
--- /dev/null
@@ -0,0 +1,6 @@
+[%- USE HTML %]
+[%- FOREACH vc = CT %]
+[%- IF loop.count < limit %]
+[% vc.$column %]
+[%- END %]
+[%- END %]
diff --git a/templates/webpages/ct/ajax_autocomplete_en.html b/templates/webpages/ct/ajax_autocomplete_en.html
new file mode 100644 (file)
index 0000000..25ab8c3
--- /dev/null
@@ -0,0 +1,6 @@
+[%- USE HTML %]
+[%- FOREACH vc = CT %]
+[%- IF loop.count < limit %]
+[% vc.$column %]
+[%- END %]
+[%- END %]
diff --git a/templates/webpages/ct/ajax_autocomplete_master.html b/templates/webpages/ct/ajax_autocomplete_master.html
new file mode 100644 (file)
index 0000000..25ab8c3
--- /dev/null
@@ -0,0 +1,6 @@
+[%- USE HTML %]
+[%- FOREACH vc = CT %]
+[%- IF loop.count < limit %]
+[% vc.$column %]
+[%- END %]
+[%- END %]
index dd94ad6..a435449 100644 (file)
      <tr>
       <th align="right">Steuernummer</th>
       <td><input name="taxnumber" size="20" value="[% HTML.escape(taxnumber) %]"></td>
-      <!-- Anm.: R&B 15.11.2008        VAT Reg No ist Ust-ID in GB, aber generell sollte es laut Richardson die sales tax id sein -->
-       <th align="right">USt-IdNr.</th>
+      <!-- Anm.: R&B 15.11.2008     VAT Reg No ist Ust-ID in GB, aber generell sollte es laut Richardson die sales tax id sein -->
+      <th align="right">USt-IdNr.</th>
       <td><input name="ustid" maxlength="14" size="20" value="[% HTML.escape(ustid) %]"></td>
       [%- IF is_customer %]
       <th align="right">unsere Lieferanten-Nr. beim Kunden</th>
       <td><input name="c_vendor_id" size="10" value="[% HTML.escape(c_vendor_id) %]"></td>
       [%- ELSE %]
       <th align="right">Kundennummer</th>
-       <td><input name="v_customer_id" size="10" value="[% HTML.escape(v_customer_id) %]"></td>
+      <td><input name="v_customer_id" size="10" value="[% HTML.escape(v_customer_id) %]"></td>
       [%- END %]
      </tr>
 
      }
    }
   -->
-  
+
   </script>
 
 
index f532b07..1483d4d 100644 (file)
      <tr>
       <th align="right">Tax Number / SSN</th>
       <td><input name="taxnumber" size="20" value="[% HTML.escape(taxnumber) %]"></td>
-      <!-- Anm.: R&B 15.11.2008        VAT Reg No ist Ust-ID in GB, aber generell sollte es laut Richardson die sales tax id sein -->
-       <th align="right">sales tax identification number</th>
+      <!-- Anm.: R&B 15.11.2008     VAT Reg No ist Ust-ID in GB, aber generell sollte es laut Richardson die sales tax id sein -->
+      <th align="right">sales tax identification number</th>
       <td><input name="ustid" maxlength="14" size="20" value="[% HTML.escape(ustid) %]"></td>
       [%- IF is_customer %]
       <th align="right">our vendor number at customer</th>
       <td><input name="c_vendor_id" size="10" value="[% HTML.escape(c_vendor_id) %]"></td>
       [%- ELSE %]
       <th align="right">Customer Number</th>
-       <td><input name="v_customer_id" size="10" value="[% HTML.escape(v_customer_id) %]"></td>
+      <td><input name="v_customer_id" size="10" value="[% HTML.escape(v_customer_id) %]"></td>
       [%- END %]
      </tr>
 
      }
    }
   -->
-  
+
   </script>
 
 
index 00d0fa1..43291e0 100644 (file)
      <tr>
       <th align="right"><translate>Tax Number / SSN</translate></th>
       <td><input name="taxnumber" size="20" value="[% HTML.escape(taxnumber) %]"></td>
-      <!-- Anm.: R&B 15.11.2008        VAT Reg No ist Ust-ID in GB, aber generell sollte es laut Richardson die sales tax id sein -->
-       <th align="right"><translate>sales tax identification number</translate></th>
+      <!-- Anm.: R&B 15.11.2008     VAT Reg No ist Ust-ID in GB, aber generell sollte es laut Richardson die sales tax id sein -->
+      <th align="right"><translate>sales tax identification number</translate></th>
       <td><input name="ustid" maxlength="14" size="20" value="[% HTML.escape(ustid) %]"></td>
       [%- IF is_customer %]
       <th align="right"><translate>our vendor number at customer</translate></th>
       <td><input name="c_vendor_id" size="10" value="[% HTML.escape(c_vendor_id) %]"></td>
       [%- ELSE %]
       <th align="right"><translate>Customer Number</translate></th>
-       <td><input name="v_customer_id" size="10" value="[% HTML.escape(v_customer_id) %]"></td>
+      <td><input name="v_customer_id" size="10" value="[% HTML.escape(v_customer_id) %]"></td>
       [%- END %]
      </tr>
 
      }
    }
   -->
-  
+
   </script>
 
 
index 310f173..ea5222e 100644 (file)
         <label for="l_fax">Fax</label>
        </td>
        <td>
-       <input name="l_zipcode" id="l_zipcode" type="checkbox" class="checkbox" value="Y" checked>
+        <input name="l_zipcode" id="l_zipcode" type="checkbox" class="checkbox" value="Y" checked>
         <label for="l_zipcode">PLZ</label>
        </td>
       </tr>
         <input name="l_business" id="l_business" type="checkbox" class="checkbox" value="Y">
         <label for="l_business">[% IF IS_CUSTOMER %]Kundentyp[% ELSE %]Lieferantentyp[% END %]</label>
        </td>
-       <td>
+       <td>
         <input name="l_city" id="l_city" type="checkbox" class="checkbox" value="Y" checked>
         <label for="l_city">Stadt</label>
-       </td>
+      </td>
       </tr>
 
       <tr>
         <input name="l_quonumber" id="l_quonumber" type="checkbox" class="checkbox" value="Y">
         <label for="l_quonumber">[% IF IS_CUSTOMER %]Angebote[% ELSE %]Preisanfragen[% END %]</label>
        </td>
-       <td>
-       </td>
+       <td>
+       </td>
       </tr>
 
       [% CUSTOM_VARIABLES_INCLUSION_CODE %]
index 8ab082b..d7a9e68 100644 (file)
         <label for="l_fax">Fax</label>
        </td>
        <td>
-       <input name="l_zipcode" id="l_zipcode" type="checkbox" class="checkbox" value="Y" checked>
+        <input name="l_zipcode" id="l_zipcode" type="checkbox" class="checkbox" value="Y" checked>
         <label for="l_zipcode">Zipcode</label>
        </td>
       </tr>
         <input name="l_business" id="l_business" type="checkbox" class="checkbox" value="Y">
         <label for="l_business">[% IF IS_CUSTOMER %]Customer type[% ELSE %]Vendor type[% END %]</label>
        </td>
-       <td>
+       <td>
         <input name="l_city" id="l_city" type="checkbox" class="checkbox" value="Y" checked>
         <label for="l_city">City</label>
-       </td>
+      </td>
       </tr>
 
       <tr>
         <input name="l_quonumber" id="l_quonumber" type="checkbox" class="checkbox" value="Y">
         <label for="l_quonumber">[% IF IS_CUSTOMER %]Quotations[% ELSE %]RFQs[% END %]</label>
        </td>
-       <td>
-       </td>
+       <td>
+       </td>
       </tr>
 
       [% CUSTOM_VARIABLES_INCLUSION_CODE %]
index c18b0f9..6d0e6da 100644 (file)
         <label for="l_fax"><translate>Fax</translate></label>
        </td>
        <td>
-       <input name="l_zipcode" id="l_zipcode" type="checkbox" class="checkbox" value="Y" checked>
+        <input name="l_zipcode" id="l_zipcode" type="checkbox" class="checkbox" value="Y" checked>
         <label for="l_zipcode"><translate>Zipcode</translate></label>
        </td>
       </tr>
         <input name="l_business" id="l_business" type="checkbox" class="checkbox" value="Y">
         <label for="l_business">[% IF IS_CUSTOMER %]<translate>Customer type</translate>[% ELSE %]<translate>Vendor type</translate>[% END %]</label>
        </td>
-       <td>
+       <td>
         <input name="l_city" id="l_city" type="checkbox" class="checkbox" value="Y" checked>
         <label for="l_city"><translate>City</translate></label>
-       </td>
+      </td>
       </tr>
 
       <tr>
         <input name="l_quonumber" id="l_quonumber" type="checkbox" class="checkbox" value="Y">
         <label for="l_quonumber">[% IF IS_CUSTOMER %]<translate>Quotations</translate>[% ELSE %]<translate>RFQs</translate>[% END %]</label>
        </td>
-       <td>
-       </td>
+       <td>
+       </td>
       </tr>
 
       [% CUSTOM_VARIABLES_INCLUSION_CODE %]
diff --git a/templates/webpages/dbupgrade/cp_greeting_update_form_en.html b/templates/webpages/dbupgrade/cp_greeting_update_form_en.html
new file mode 100644 (file)
index 0000000..02e7b97
--- /dev/null
@@ -0,0 +1,36 @@
+[% USE HTML %]<div class="listtop">cp_greeting to cp_gender migration</div>
+
+
+<form action="[% script %]" method="POST">
+<br>
+<p> The method for generating greetings ("Dear Mr. Smith") is being changed so the greeting is controlled by the gender. For this a new database field cp_gender is introduced, while the old database field cp_greeting will be removed. The various translations (Mr./Herr/Monsieur) will be stored in the database, under generic_translations. The print variable cp_greeting still exists, however, so print templates don't have to be changed, and the variable is assigned according to the gender of the contact person and the desired language.</p>
+
+<p>During the conversion process all contact persons need to be assigned a gender. The gender is detected automatically where possible, but in some cases will have to be set manually.</p>
+
+During the conversion process:<br>
+1. All contact persons will have their gender set to "m" (male) as a default<br>
+2. All contact persons where the greeting contains "frau,mrs,miss" are set to "f" (female)<br>
+
+<p>The gender of the following contact persons couldn't be determined automatically from the greeting, please set the gender manually:</p>
+[% gender_table %]
+
+
+<p>Please enter your desired default greeting for men and women. To change the
+default greeting or add a greeting in more languages, go to: System -> Languages -> Greetings
+</p>
+
+<p>
+Greeting for men: [% default_greeting_text_male %] <br>
+Greeting for women: [% default_greeting_text_female %] <br>
+</p>
+
+<br><br>
+The data from the cp_greeting field will now be dropped. To prevent any data loss if you used the cp_greeting field for anything else, we suggest you transfer this information to the cp_title field:
+<br>
+[% title_table %]
+
+<input type=hidden name="do_migrate" value="1"> 
+<input type=submit VALUE="submit">
+
+</form>
+
index a29e0e9..289f57b 100644 (file)
         <td>
          [%- UNLESS !delivered && SHOW_VC_DROP_DOWN %]
          <input type="text" value="[% HTML.escape(oldvcname) %]" name="[% HTML.escape(vc) %]"[% RO %]>
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[name="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
          [%- ELSE %]
          <select name="[% vc %]" class="fixed_width" onchange="document.do.update_button.click();"[% RO %]>
           [%- FOREACH row = ALL_VC %]
          </td>
         </tr>
         [%- END %]
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[name="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
 
         [%- IF ALL_SHIPTO.size %]
         <tr>
index 284862a..9ea8387 100644 (file)
         <td>
          [%- UNLESS !delivered && SHOW_VC_DROP_DOWN %]
          <input type="text" value="[% HTML.escape(oldvcname) %]" name="[% HTML.escape(vc) %]"[% RO %]>
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[name="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
          [%- ELSE %]
          <select name="[% vc %]" class="fixed_width" onchange="document.do.update_button.click();"[% RO %]>
           [%- FOREACH row = ALL_VC %]
          </td>
         </tr>
         [%- END %]
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[name="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
 
         [%- IF ALL_SHIPTO.size %]
         <tr>
index ce7f57a..617a225 100644 (file)
         <td>
          [%- UNLESS !delivered && SHOW_VC_DROP_DOWN %]
          <input type="text" value="[% HTML.escape(oldvcname) %]" name="[% HTML.escape(vc) %]"[% RO %]>
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[name="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
          [%- ELSE %]
          <select name="[% vc %]" class="fixed_width" onchange="document.do.update_button.click();"[% RO %]>
           [%- FOREACH row = ALL_VC %]
          </td>
         </tr>
         [%- END %]
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[name="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
 
         [%- IF ALL_SHIPTO.size %]
         <tr>
index 0ad75a0..9593047 100644 (file)
      <td colspan="3">
       [%- UNLESS SHOW_VC_DROP_DOWN %]
       <input type="text" name="[% HTML.escape(vc) %]" class="fixed_width">
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[name="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
       [%- ELSE %]
       <select name="[% vc %]" class="fixed_width">
        <option></option>
index c8477cc..32ef4a5 100644 (file)
      <td colspan="3">
       [%- UNLESS SHOW_VC_DROP_DOWN %]
       <input type="text" name="[% HTML.escape(vc) %]" class="fixed_width">
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[name="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
       [%- ELSE %]
       <select name="[% vc %]" class="fixed_width">
        <option></option>
index 1875911..832b71a 100644 (file)
      <td colspan="3">
       [%- UNLESS SHOW_VC_DROP_DOWN %]
       <input type="text" name="[% HTML.escape(vc) %]" class="fixed_width">
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[name="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
       [%- ELSE %]
       <select name="[% vc %]" class="fixed_width">
        <option></option>
index dc50f16..770e730 100644 (file)
         <input type="button" name="dunningto" id="trigger4" value="?">
        </td>
       </tr>
-
+      <tr>
+       <th align="right">Salesman</th>
+       <td>
+        [%- INCLUDE 'generic/multibox.html'
+            name          = 'salesman_id',
+            style         = 'width: 250px',
+            DATA          =  ALL_SALESMEN,
+            id_key        = 'id',
+            label_sub     = 'salesman_labels',
+            limit         = vclimit,
+            show_empty    = 1,
+            allow_textbox = 0,
+         -%]
+       </td>
+      </tr>
      </table>
     </td>
    </tr>
       <tr>
        <th align="right" nowrap>Show old dunnings</th>
        <td><input type="checkbox" value="1" name="showold"></td>
+       <th align="right" nowrap>Show Salesman</th>
+       <td><input type="checkbox" value="1" name="l_salesman"></td>
       </tr>
      </table>
     </td>
diff --git a/templates/webpages/generic/autocomplete.html b/templates/webpages/generic/autocomplete.html
new file mode 100644 (file)
index 0000000..5bd35c0
--- /dev/null
@@ -0,0 +1,58 @@
+[%#-
+     Autocompletion
+
+  This template enables auto completion for input fields.
+  Calling Syntax is:
+
+    INCLUDE 'generic/autocomplete', [
+      { SPEC_1 },
+      { SPEC_2 },
+      ...
+    ]
+
+  where SPEC is a hash containing the following keys:
+
+   script   : the script that is called for autocompletion, defaults to the invoking script
+   action   : action in the ajax script, defaults to 'ajax_autocomplete'
+   selector : a jquery selector, specifying the input fields
+   column   : specifies the column that is represented by the bound field. typically description or name.
+   params   : additional params that should be included in the request, like customer/vendor information. expects a hash.
+
+  TODO FIELDS:
+   - addition fields like type, vc etc.
+   - additional dependencies, see jquery.autocomplete documentation
+   - hook function on select, again see jquery documentation
+   - limit: maximum number of results shown.
+
+  a simple SPEC would look like this:
+
+   { selector => '#description', column => 'description' }
+     # field with id="description" should be autocompleted with descriptions
+
+   { script => 'ic.pl', selector => '[name^="partnumber_"]', column => 'partnumber' }
+     # let ic.pl autocomplete by partnumbers, bind this to all fields where the name begins with "partnumber_"
+
+
+
+    The Backend Side
+
+  The called function will recieve the queried string as hashkey "q" in form, as well as every other param specified here.
+  It should generate a generic ajax header (see form), followed by newline separated list of possible completion values.
+
+%]
+<script type='text/javascript'>
+[%- FOREACH token = AUTOCOMPLETES %]
+[%- DEFAULT token.script         = script              %]
+[%- DEFAULT token.action         = 'ajax_autocomplete' %]
+[%- DEFAULT token.INPUT_ENCODING = 'utf8'              %]
+[%- FOREACH key = token.params.keys %]
+[%- token.additional_url = token.additional_url _ '&' _ key _ '=' _ token.params.$key %]
+[%- END %]
+[%- token.url = token.script
+              _ '?action=' _ token.action
+              _ '&INPUT_ENCODING=' _ token.INPUT_ENCODING %]
+[%- SET token.url = token.url _ '&column=' _ token.column IF token.column %]
+[%- SET token.url = token.url _ token.additional_url IF token.additional_url %]
+$(document).ready( $('[% token.selector %]').autocomplete('[% token.url %]'));
+[%- END %]
+</script>
diff --git a/templates/webpages/ic/ajax_autocomplete_de.html b/templates/webpages/ic/ajax_autocomplete_de.html
new file mode 100644 (file)
index 0000000..5bbd3b6
--- /dev/null
@@ -0,0 +1,6 @@
+[%- USE HTML %]
+[%- FOREACH part = parts %]
+[% IF loop.count < limit %]
+[% part.$column %]
+[%- END %]
+[%- END %]
diff --git a/templates/webpages/ic/ajax_autocomplete_en.html b/templates/webpages/ic/ajax_autocomplete_en.html
new file mode 100644 (file)
index 0000000..5bbd3b6
--- /dev/null
@@ -0,0 +1,6 @@
+[%- USE HTML %]
+[%- FOREACH part = parts %]
+[% IF loop.count < limit %]
+[% part.$column %]
+[%- END %]
+[%- END %]
diff --git a/templates/webpages/ic/ajax_autocomplete_master.html b/templates/webpages/ic/ajax_autocomplete_master.html
new file mode 100644 (file)
index 0000000..5bbd3b6
--- /dev/null
@@ -0,0 +1,6 @@
+[%- USE HTML %]
+[%- FOREACH part = parts %]
+[% IF loop.count < limit %]
+[% part.$column %]
+[%- END %]
+[%- END %]
index e4faaa3..755902e 100644 (file)
@@ -7,7 +7,7 @@
       <table border="0" width="100%">
         <tr>
           <th colspan="2" align=right>Summe&nbsp;</th>
-         <th align=right>Einkaufspreis:[% LxERP.format_amount(assembly_purchase_price_total, 2) %]  Verkaufspreis: [% LxERP.format_amount(assemblytotal, 2) %]</th>
+          <th align=right>Einkaufspreis:[% LxERP.format_amount(assembly_purchase_price_total, 2) %]  Verkaufspreis: [% LxERP.format_amount(assemblytotal, 2) %]</th>
         </tr>
       </table>
     </td>
index 62bda45..cf9f621 100644 (file)
@@ -7,7 +7,7 @@
       <table border="0" width="100%">
         <tr>
           <th colspan="2" align=right>Total&nbsp;</th>
-         <th align=right>Purchase Price:[% LxERP.format_amount(assembly_purchase_price_total, 2) %]  Sell Price: [% LxERP.format_amount(assemblytotal, 2) %]</th>
+          <th align=right>Purchase Price:[% LxERP.format_amount(assembly_purchase_price_total, 2) %]  Sell Price: [% LxERP.format_amount(assemblytotal, 2) %]</th>
         </tr>
       </table>
     </td>
index bcee92a..ed08335 100644 (file)
@@ -7,7 +7,7 @@
       <table border="0" width="100%">
         <tr>
           <th colspan="2" align=right><translate>Total</translate>&nbsp;</th>
-         <th align=right><translate>Purchase Price</translate>:[% LxERP.format_amount(assembly_purchase_price_total, 2) %]  <translate>Sell Price</translate>: [% LxERP.format_amount(assemblytotal, 2) %]</th>
+          <th align=right><translate>Purchase Price</translate>:[% LxERP.format_amount(assembly_purchase_price_total, 2) %]  <translate>Sell Price</translate>: [% LxERP.format_amount(assemblytotal, 2) %]</th>
         </tr>
       </table>
     </td>
index 27ae14a..3b1da96 100644 (file)
            <label for="l_priceupdate">Erneuert am</label>
           </td>
           <td>
-           <!-- auskommentiert fuer bug nummer 852 - ggf. fuer einen standardlagerplatz verwertet jb 18.5.09-->
+          <!-- auskommentiert fuer bug nummer 852 - ggf. fuer einen standardlagerplatz verwertet jb 18.5.09-->
            <!--input name="l_bin" id="l_bin" class="checkbox" type="checkbox" value="Y">
            <label for="l_bin">Lagerplatz</label -->
            <input name="l_deliverydate" id="l_deliverydate" class="checkbox" type="checkbox" value="Y">
index ff87d62..09f6633 100644 (file)
            <label for="l_priceupdate">Updated</label>
           </td>
           <td>
-           <!-- auskommentiert fuer bug nummer 852 - ggf. fuer einen standardlagerplatz verwertet jb 18.5.09-->
+          <!-- auskommentiert fuer bug nummer 852 - ggf. fuer einen standardlagerplatz verwertet jb 18.5.09-->
            <!--input name="l_bin" id="l_bin" class="checkbox" type="checkbox" value="Y">
            <label for="l_bin">Bin</label -->
            <input name="l_deliverydate" id="l_deliverydate" class="checkbox" type="checkbox" value="Y">
index cfb4ddf..cdd6660 100644 (file)
            <label for="l_priceupdate"><translate>Updated</translate></label>
           </td>
           <td>
-           <!-- auskommentiert fuer bug nummer 852 - ggf. fuer einen standardlagerplatz verwertet jb 18.5.09-->
+          <!-- auskommentiert fuer bug nummer 852 - ggf. fuer einen standardlagerplatz verwertet jb 18.5.09-->
            <!--input name="l_bin" id="l_bin" class="checkbox" type="checkbox" value="Y">
            <label for="l_bin"><translate>Bin</translate></label -->
            <input name="l_deliverydate" id="l_deliverydate" class="checkbox" type="checkbox" value="Y">
diff --git a/templates/webpages/ir/_payments_de.html b/templates/webpages/ir/_payments_de.html
new file mode 100644 (file)
index 0000000..4b5119f
--- /dev/null
@@ -0,0 +1,87 @@
+[%- USE LxERP %]
+  <tr>
+   <td>
+    <table width="100%">
+     <tr class="listheading">
+[% IF is_type_credit_note %]
+      <th colspan="6" class="listheading">Zahlungsausgänge</th>
+[% ELSE %]
+      <th colspan="6" class="listheading">Zahlungseingänge</th>
+[%- END %]
+     </tr>
+
+
+     <tr>
+      <th>Datum</th>
+      <th>Beleg</th>
+      <th>Memo</th>
+      <th>Betrag</th>
+[% IF show_exchangerate %]
+      <th>Wechselkurs.</th>
+[% END %]
+      <th>Konto</th>
+     </tr>
+
+
+[% FOREACH i = paid_indices %]
+  [% SET datepaid      = 'datepaid_'      _ i %]
+  [% SET source        = 'source_'        _ i %]
+  [% SET memo          = 'memo_'          _ i %]
+  [% SET paid          = 'paid_'          _ i %]
+  [% SET selectAP_paid_ref = 'selectAP_paid_' _ i %]
+
+     <tr>
+
+    <td align="center">
+      <input id="datepaid_[% i %]" name="datepaid_[% i %]" size="11" title="[% dateformat %]" value="[% $datepaid %]">
+      <input type="button" name="datepaid_[% i %]" id="trigger_datepaid_[% i %]" value="?">
+     </td>
+     <td align=center><input name="source_[% i %]" size="11" value="[% $source %]"></td>
+     <td align="center"><input name="memo_[% i %]" size="11" value="[% $memo %]"></td>
+     <td align="center"><input name="paid_[% i %]" size="11" value="[% LxERP.format_amount($paid, 2, 1) %]"></td>
+[% IF show_exchangerate %]
+     <td align="center">
+  [% SET forex        = 'forex_'        _ i %]
+  [% SET exchangerate = 'exchangerate_' _ i %]
+  [% IF forex %]
+        <input type="hidden" name="exchangerate_[% i %]" value="[% LxERP.format_amount($exchangerate, 2) %]">
+        [% LxERP.format_amount(exchangerate, 2) %]
+  [% ELSE %]
+        <input name="exchangerate_[% i %]" size="10" value="[% LxERP.format_amount($exchangerate, 2, 1) %]">
+  [% END %]
+        <input type="hidden" name="forex_[% i %]" value="[% $forex %]">;
+     </td>
+[% END %]
+     <td align="center"><select name="AP_paid_[% i %]">[% $selectAP_paid_ref %]</select></td>
+
+    </tr>
+    <script type='text/javascript'>
+     Calendar.setup({ inputField : "datepaid_[% i %]", ifFormat :"[% myconfig_jsc_dateformat %]", align : "TR", button : "trigger_datepaid_[% i %]" });
+     $('input[name="paid_[% i %]"]').blur(function(){ check_right_number_format(this) });
+     $('#datepaid_[% i %]').blur(function(){ check_right_date_format(this) });
+    </script>
+
+[% END # foreach %]
+
+    <tr>
+      <td></td>
+      <td></td>
+      <td align="center">Summe</td>
+      <td align="center">[% LxERP.foramt_amount(totalpaid, 2) | html %]</td>
+    </tr>
+    <tr>
+      <td></td>
+      <td></td>
+      <td align="center">Fehlbetrag</td>
+      <td align="center">[% LxERP.format_amount(paid_missing, 2) | html %]</td>
+    </tr>
+
+     <input type="hidden" name="paidaccounts" value="[% paidaccounts %]">
+     <input type="hidden" name="selectAP_paid" value="[% selectAP_paid %]">
+     <input type="hidden" name="oldinvtotal" value="[% oldinvtotal %]">
+
+     <input type="hidden" name="oldtotalpaid" value="[% totalpaid %]">
+    </table>
+
+    </td>
+  </tr>
diff --git a/templates/webpages/ir/_payments_en.html b/templates/webpages/ir/_payments_en.html
new file mode 100644 (file)
index 0000000..ac88eeb
--- /dev/null
@@ -0,0 +1,87 @@
+[%- USE LxERP %]
+  <tr>
+   <td>
+    <table width="100%">
+     <tr class="listheading">
+[% IF is_type_credit_note %]
+      <th colspan="6" class="listheading">Payments</th>
+[% ELSE %]
+      <th colspan="6" class="listheading">Incoming Payments</th>
+[%- END %]
+     </tr>
+
+
+     <tr>
+      <th>Date</th>
+      <th>Source</th>
+      <th>Memo</th>
+      <th>Amount</th>
+[% IF show_exchangerate %]
+      <th>Exch</th>
+[% END %]
+      <th>Account</th>
+     </tr>
+
+
+[% FOREACH i = paid_indices %]
+  [% SET datepaid      = 'datepaid_'      _ i %]
+  [% SET source        = 'source_'        _ i %]
+  [% SET memo          = 'memo_'          _ i %]
+  [% SET paid          = 'paid_'          _ i %]
+  [% SET selectAP_paid_ref = 'selectAP_paid_' _ i %]
+
+     <tr>
+
+    <td align="center">
+      <input id="datepaid_[% i %]" name="datepaid_[% i %]" size="11" title="[% dateformat %]" value="[% $datepaid %]">
+      <input type="button" name="datepaid_[% i %]" id="trigger_datepaid_[% i %]" value="?">
+     </td>
+     <td align=center><input name="source_[% i %]" size="11" value="[% $source %]"></td>
+     <td align="center"><input name="memo_[% i %]" size="11" value="[% $memo %]"></td>
+     <td align="center"><input name="paid_[% i %]" size="11" value="[% LxERP.format_amount($paid, 2, 1) %]"></td>
+[% IF show_exchangerate %]
+     <td align="center">
+  [% SET forex        = 'forex_'        _ i %]
+  [% SET exchangerate = 'exchangerate_' _ i %]
+  [% IF forex %]
+        <input type="hidden" name="exchangerate_[% i %]" value="[% LxERP.format_amount($exchangerate, 2) %]">
+        [% LxERP.format_amount(exchangerate, 2) %]
+  [% ELSE %]
+        <input name="exchangerate_[% i %]" size="10" value="[% LxERP.format_amount($exchangerate, 2, 1) %]">
+  [% END %]
+        <input type="hidden" name="forex_[% i %]" value="[% $forex %]">;
+     </td>
+[% END %]
+     <td align="center"><select name="AP_paid_[% i %]">[% $selectAP_paid_ref %]</select></td>
+
+    </tr>
+    <script type='text/javascript'>
+     Calendar.setup({ inputField : "datepaid_[% i %]", ifFormat :"[% myconfig_jsc_dateformat %]", align : "TR", button : "trigger_datepaid_[% i %]" });
+     $('input[name="paid_[% i %]"]').blur(function(){ check_right_number_format(this) });
+     $('#datepaid_[% i %]').blur(function(){ check_right_date_format(this) });
+    </script>
+
+[% END # foreach %]
+
+    <tr>
+      <td></td>
+      <td></td>
+      <td align="center">Total</td>
+      <td align="center">[% LxERP.foramt_amount(totalpaid, 2) | html %]</td>
+    </tr>
+    <tr>
+      <td></td>
+      <td></td>
+      <td align="center">Missing amount</td>
+      <td align="center">[% LxERP.format_amount(paid_missing, 2) | html %]</td>
+    </tr>
+
+     <input type="hidden" name="paidaccounts" value="[% paidaccounts %]">
+     <input type="hidden" name="selectAP_paid" value="[% selectAP_paid %]">
+     <input type="hidden" name="oldinvtotal" value="[% oldinvtotal %]">
+
+     <input type="hidden" name="oldtotalpaid" value="[% totalpaid %]">
+    </table>
+
+    </td>
+  </tr>
diff --git a/templates/webpages/ir/_payments_master.html b/templates/webpages/ir/_payments_master.html
new file mode 100644 (file)
index 0000000..d2e6bf8
--- /dev/null
@@ -0,0 +1,87 @@
+[%- USE LxERP %]
+  <tr>
+   <td>
+    <table width="100%">
+     <tr class="listheading">
+[% IF is_type_credit_note %]
+      <th colspan="6" class="listheading"><translate>Payments</translate></th>
+[% ELSE %]
+      <th colspan="6" class="listheading"><translate>Incoming Payments</translate></th>
+[%- END %]
+     </tr>
+
+
+     <tr>
+      <th><translate>Date</translate></th>
+      <th><translate>Source</translate></th>
+      <th><translate>Memo</translate></th>
+      <th><translate>Amount</translate></th>
+[% IF show_exchangerate %]
+      <th><translate>Exch</translate></th>
+[% END %]
+      <th><translate>Account</translate></th>
+     </tr>
+
+
+[% FOREACH i = paid_indices %]
+  [% SET datepaid      = 'datepaid_'      _ i %]
+  [% SET source        = 'source_'        _ i %]
+  [% SET memo          = 'memo_'          _ i %]
+  [% SET paid          = 'paid_'          _ i %]
+  [% SET selectAP_paid_ref = 'selectAP_paid_' _ i %]
+
+     <tr>
+
+    <td align="center">
+      <input id="datepaid_[% i %]" name="datepaid_[% i %]" size="11" title="[% dateformat %]" value="[% $datepaid %]">
+      <input type="button" name="datepaid_[% i %]" id="trigger_datepaid_[% i %]" value="?">
+     </td>
+     <td align=center><input name="source_[% i %]" size="11" value="[% $source %]"></td>
+     <td align="center"><input name="memo_[% i %]" size="11" value="[% $memo %]"></td>
+     <td align="center"><input name="paid_[% i %]" size="11" value="[% LxERP.format_amount($paid, 2, 1) %]"></td>
+[% IF show_exchangerate %]
+     <td align="center">
+  [% SET forex        = 'forex_'        _ i %]
+  [% SET exchangerate = 'exchangerate_' _ i %]
+  [% IF forex %]
+        <input type="hidden" name="exchangerate_[% i %]" value="[% LxERP.format_amount($exchangerate, 2) %]">
+        [% LxERP.format_amount(exchangerate, 2) %]
+  [% ELSE %]
+        <input name="exchangerate_[% i %]" size="10" value="[% LxERP.format_amount($exchangerate, 2, 1) %]">
+  [% END %]
+        <input type="hidden" name="forex_[% i %]" value="[% $forex %]">;
+     </td>
+[% END %]
+     <td align="center"><select name="AP_paid_[% i %]">[% $selectAP_paid_ref %]</select></td>
+
+    </tr>
+    <script type='text/javascript'>
+     Calendar.setup({ inputField : "datepaid_[% i %]", ifFormat :"[% myconfig_jsc_dateformat %]", align : "TR", button : "trigger_datepaid_[% i %]" });
+     $('input[name="paid_[% i %]"]').blur(function(){ check_right_number_format(this) });
+     $('#datepaid_[% i %]').blur(function(){ check_right_date_format(this) });
+    </script>
+
+[% END # foreach %]
+
+    <tr>
+      <td></td>
+      <td></td>
+      <td align="center"><translate>Total</translate></td>
+      <td align="center">[% LxERP.foramt_amount(totalpaid, 2) | html %]</td>
+    </tr>
+    <tr>
+      <td></td>
+      <td></td>
+      <td align="center"><translate>Missing amount</translate></td>
+      <td align="center">[% LxERP.format_amount(paid_missing, 2) | html %]</td>
+    </tr>
+
+     <input type="hidden" name="paidaccounts" value="[% paidaccounts %]">
+     <input type="hidden" name="selectAP_paid" value="[% selectAP_paid %]">
+     <input type="hidden" name="oldinvtotal" value="[% oldinvtotal %]">
+
+     <input type="hidden" name="oldtotalpaid" value="[% totalpaid %]">
+    </table>
+
+    </td>
+  </tr>
diff --git a/templates/webpages/ir/form_footer_de.html b/templates/webpages/ir/form_footer_de.html
new file mode 100644 (file)
index 0000000..9208ab4
--- /dev/null
@@ -0,0 +1,133 @@
+[%- USE HTML %]
+[%- USE LxERP %]
+  <tr>
+   <td>
+    <table width="100%">
+     <tr valign="bottom">
+      <td>
+       <table>
+        <tr>
+         <th align="left">Bemerkungen</th>
+         <th align="left">interne Bemerkungen</th>
+        </tr>
+        <tr valign="top">
+         <td>
+          <textarea name="notes" rows="[% rows %]" cols="26" wrap="soft">[% notes %]</textarea>
+         </td>
+         <td>
+          <textarea name="intnotes" rows="[% rows %]" cols="35" wrap="soft">[% intnotes %]</textarea>
+         </td>
+        </tr>
+[%- IF id && follow_ups.size %]
+        <tr>
+          <td colspan="2">
+            [%- LxERP.format_string('Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
+                                     follow_ups.size, follow_ups_unfinished) | html
+            %]
+          <td>
+        </tr>
+[%- END %]
+       </table>
+      </td>
+      <td align="right">
+  [%- IF taxaccounts %]
+       <input name="taxincluded" class="checkbox" type="checkbox" [% IF taxincluded %]checked[% END %]>
+       <b>Steuer im Preis inbegriffen</b>
+       <br>
+       <br>
+  [%- END %]
+       <table>
+
+[%- UNLESS taxincluded %]
+        <tr>
+         <th align="right">Zwischensumme</th>
+         <td align="right">[% LxERP.format_amount(invsubtotal, 2) %]</td>
+       </tr>
+[%- END %]
+
+[%# tax %]
+[% FOREACH item = taxaccounts_array %]
+[% SET description_ref = item _ '_description' %]
+[% SET rate_ref        = item _ '_rate' %]
+[% SET total_ref       = item _ '_total' %]
+[% SET netto_ref       = item _ '_netto' %]
+       <tr>
+        <th align="right">Enthaltene [% $description_ref | html %]&nbsp;[% $rate_ref * 100 %]%</th>
+        <td align="right">[% LxERP.format_amount($total_ref, 2) %]</td>
+       </tr>
+  [%- IF taxincluded %]
+       <tr>
+        <th align="right">Nettobetrag</th>
+        <td align="right">[% LxERP.format_amount($netto_ref, 2) %]</td>
+       </tr>
+  [%- END %]
+[%- END %]
+
+        <tr>
+         <th align="right">Summe</th>
+         <td align="right">[% LxERP.format_amount(invtotal, 2) %]</td>
+        </tr>
+       </table>
+      </td>
+     </tr>
+    </table>
+   </td>
+  </tr>
+
+[% PROCESS 'webdav/_list_de.html' %]
+
+[% PROCESS 'ir/_payments_de.html' %]
+
+  <tr>
+    <td><hr size="3" noshade></td>
+  </tr>
+  <tr>
+    <td>
+[% print_options %]
+    </td>
+  </tr>
+ </table>
+
+
+
+  [% IF id %]
+
+    <input class="submit" type="submit" accesskey="u" name="action" id="update_button" value="Erneuern">
+[% IF  show_storno %]
+    <input class="submit" type="submit" name="action" value="Storno">
+[% END %]
+    <input class="submit" type="submit" name="action" value="Zahlung buchen">
+    <input class="submit" type="submit" name="action" value="Als Vorlage verwenden">
+
+[% IF show_delete %]
+    <input class="submit" type="submit" name="action" value="Löschen">
+[% END %]
+
+    <input type="button" class="submit" onclick="follow_up_window()" value="Wiedervorlage">
+
+ [% ELSE # no id %]
+   [% UNLESS locked %]
+      <input class="submit" type="submit" name="action" id="update_button" value="Erneuern">
+      <input class="submit" type="submit" name="action" value="Buchen">
+      <input class="submit" type="submit" name="action" value="Entwurf speichern">
+   [%- END %]
+ [% END # id %]
+
+  [% IF id %]
+      [%#- button for saving history %]
+      <input type="button" class="submit" onclick="set_history_window([% id | html %]);" name="history" id="history" value="Historie">
+
+      <input type="submit" class="submit" name="action" value="als bezahlt markieren">
+  [% END %]
+
+<input type="hidden" name="rowcount" value="[% rowcount %]">
+<input type="hidden" name="callback" value="[% callback %]">
+<input type="hidden" name="draft_id" value="[% draft_id %]">
+<input type="hidden" name="draft_description" value="[% draft_description %]">
+<input type="hidden" name="vendor_discount" value="[% vendor_discount %]">
+
+</form>
+
+</body>
+
+</html>
diff --git a/templates/webpages/ir/form_footer_en.html b/templates/webpages/ir/form_footer_en.html
new file mode 100644 (file)
index 0000000..5f3700b
--- /dev/null
@@ -0,0 +1,133 @@
+[%- USE HTML %]
+[%- USE LxERP %]
+  <tr>
+   <td>
+    <table width="100%">
+     <tr valign="bottom">
+      <td>
+       <table>
+        <tr>
+         <th align="left">Notes</th>
+         <th align="left">Internal Notes</th>
+        </tr>
+        <tr valign="top">
+         <td>
+          <textarea name="notes" rows="[% rows %]" cols="26" wrap="soft">[% notes %]</textarea>
+         </td>
+         <td>
+          <textarea name="intnotes" rows="[% rows %]" cols="35" wrap="soft">[% intnotes %]</textarea>
+         </td>
+        </tr>
+[%- IF id && follow_ups.size %]
+        <tr>
+          <td colspan="2">
+            [%- LxERP.format_string('There are #1 unfinished follow-ups of which #2 are due.',
+                                     follow_ups.size, follow_ups_unfinished) | html
+            %]
+          <td>
+        </tr>
+[%- END %]
+       </table>
+      </td>
+      <td align="right">
+  [%- IF taxaccounts %]
+       <input name="taxincluded" class="checkbox" type="checkbox" [% IF taxincluded %]checked[% END %]>
+       <b>Tax Included</b>
+       <br>
+       <br>
+  [%- END %]
+       <table>
+
+[%- UNLESS taxincluded %]
+        <tr>
+         <th align="right">Subtotal</th>
+         <td align="right">[% LxERP.format_amount(invsubtotal, 2) %]</td>
+       </tr>
+[%- END %]
+
+[%# tax %]
+[% FOREACH item = taxaccounts_array %]
+[% SET description_ref = item _ '_description' %]
+[% SET rate_ref        = item _ '_rate' %]
+[% SET total_ref       = item _ '_total' %]
+[% SET netto_ref       = item _ '_netto' %]
+       <tr>
+        <th align="right">Enthaltene [% $description_ref | html %]&nbsp;[% $rate_ref * 100 %]%</th>
+        <td align="right">[% LxERP.format_amount($total_ref, 2) %]</td>
+       </tr>
+  [%- IF taxincluded %]
+       <tr>
+        <th align="right">Nettobetrag</th>
+        <td align="right">[% LxERP.format_amount($netto_ref, 2) %]</td>
+       </tr>
+  [%- END %]
+[%- END %]
+
+        <tr>
+         <th align="right">Total</th>
+         <td align="right">[% LxERP.format_amount(invtotal, 2) %]</td>
+        </tr>
+       </table>
+      </td>
+     </tr>
+    </table>
+   </td>
+  </tr>
+
+[% PROCESS 'webdav/_list_master.html' %]
+
+[% PROCESS 'ir/_payments_master.html' %]
+
+  <tr>
+    <td><hr size="3" noshade></td>
+  </tr>
+  <tr>
+    <td>
+[% print_options %]
+    </td>
+  </tr>
+ </table>
+
+
+
+  [% IF id %]
+
+    <input class="submit" type="submit" accesskey="u" name="action" id="update_button" value="Update">
+[% IF  show_storno %]
+    <input class="submit" type="submit" name="action" value="Storno">
+[% END %]
+    <input class="submit" type="submit" name="action" value="Post Payment">
+    <input class="submit" type="submit" name="action" value="Use As Template">
+
+[% IF show_delete %]
+    <input class="submit" type="submit" name="action" value="Delete">
+[% END %]
+
+    <input type="button" class="submit" onclick="follow_up_window()" value="Follow-Up">
+
+ [% ELSE # no id %]
+   [% UNLESS locked %]
+      <input class="submit" type="submit" name="action" id="update_button" value="Update">
+      <input class="submit" type="submit" name="action" value="Post">
+      <input class="submit" type="submit" name="action" value="Save Draft">
+   [%- END %]
+ [% END # id %]
+
+  [% IF id %]
+      [%#- button for saving history %]
+      <input type="button" class="submit" onclick="set_history_window([% id | html %]);" name="history" id="history" value="history">
+
+      <input type="submit" class="submit" name="action" value="mark as paid">
+  [% END %]
+
+<input type="hidden" name="rowcount" value="[% rowcount %]">
+<input type="hidden" name="callback" value="[% callback %]">
+<input type="hidden" name="draft_id" value="[% draft_id %]">
+<input type="hidden" name="draft_description" value="[% draft_description %]">
+<input type="hidden" name="vendor_discount" value="[% vendor_discount %]">
+
+</form>
+
+</body>
+
+</html>
diff --git a/templates/webpages/ir/form_footer_master.html b/templates/webpages/ir/form_footer_master.html
new file mode 100644 (file)
index 0000000..2b4793a
--- /dev/null
@@ -0,0 +1,133 @@
+[%- USE HTML %]
+[%- USE LxERP %]
+  <tr>
+   <td>
+    <table width="100%">
+     <tr valign="bottom">
+      <td>
+       <table>
+        <tr>
+         <th align="left"><translate>Notes</translate></th>
+         <th align="left"><translate>Internal Notes</translate></th>
+        </tr>
+        <tr valign="top">
+         <td>
+          <textarea name="notes" rows="[% rows %]" cols="26" wrap="soft">[% notes %]</textarea>
+         </td>
+         <td>
+          <textarea name="intnotes" rows="[% rows %]" cols="35" wrap="soft">[% intnotes %]</textarea>
+         </td>
+        </tr>
+[%- IF id && follow_ups.size %]
+        <tr>
+          <td colspan="2">
+            [%- LxERP.format_string('<translate>There are #1 unfinished follow-ups of which #2 are due.</translate>',
+                                     follow_ups.size, follow_ups_unfinished) | html
+            %]
+          <td>
+        </tr>
+[%- END %]
+       </table>
+      </td>
+      <td align="right">
+  [%- IF taxaccounts %]
+       <input name="taxincluded" class="checkbox" type="checkbox" [% IF taxincluded %]checked[% END %]>
+       <b><translate>Tax Included</translate></b>
+       <br>
+       <br>
+  [%- END %]
+       <table>
+
+[%- UNLESS taxincluded %]
+        <tr>
+         <th align="right"><translate>Subtotal</translate></th>
+         <td align="right">[% LxERP.format_amount(invsubtotal, 2) %]</td>
+       </tr>
+[%- END %]
+
+[%# tax %]
+[% FOREACH item = taxaccounts_array %]
+[% SET description_ref = item _ '_description' %]
+[% SET rate_ref        = item _ '_rate' %]
+[% SET total_ref       = item _ '_total' %]
+[% SET netto_ref       = item _ '_netto' %]
+       <tr>
+        <th align="right">Enthaltene [% $description_ref | html %]&nbsp;[% $rate_ref * 100 %]%</th>
+        <td align="right">[% LxERP.format_amount($total_ref, 2) %]</td>
+       </tr>
+  [%- IF taxincluded %]
+       <tr>
+        <th align="right">Nettobetrag</th>
+        <td align="right">[% LxERP.format_amount($netto_ref, 2) %]</td>
+       </tr>
+  [%- END %]
+[%- END %]
+
+        <tr>
+         <th align="right"><translate>Total</translate></th>
+         <td align="right">[% LxERP.format_amount(invtotal, 2) %]</td>
+        </tr>
+       </table>
+      </td>
+     </tr>
+    </table>
+   </td>
+  </tr>
+
+[% PROCESS 'webdav/_list_<translate>master</translate>.html' %]
+
+[% PROCESS 'ir/_payments_<translate>master</translate>.html' %]
+
+  <tr>
+    <td><hr size="3" noshade></td>
+  </tr>
+  <tr>
+    <td>
+[% print_options %]
+    </td>
+  </tr>
+ </table>
+
+
+
+  [% IF id %]
+
+    <input class="submit" type="submit" accesskey="u" name="action" id="update_button" value="<translate>Update</translate>">
+[% IF  show_storno %]
+    <input class="submit" type="submit" name="action" value="<translate>Storno</translate>">
+[% END %]
+    <input class="submit" type="submit" name="action" value="<translate>Post Payment</translate>">
+    <input class="submit" type="submit" name="action" value="<translate>Use As Template</translate>">
+
+[% IF show_delete %]
+    <input class="submit" type="submit" name="action" value="<translate>Delete</translate>">
+[% END %]
+
+    <input type="button" class="submit" onclick="follow_up_window()" value="<translate>Follow-Up</translate>">
+
+ [% ELSE # no id %]
+   [% UNLESS locked %]
+      <input class="submit" type="submit" name="action" id="update_button" value="<translate>Update</translate>">
+      <input class="submit" type="submit" name="action" value="<translate>Post</translate>">
+      <input class="submit" type="submit" name="action" value="<translate>Save Draft</translate>">
+   [%- END %]
+ [% END # id %]
+
+  [% IF id %]
+      [%#- button for saving history %]
+      <input type="button" class="submit" onclick="set_history_window([% id | html %]);" name="history" id="history" value="<translate>history</translate>">
+
+      <input type="submit" class="submit" name="action" value="<translate>mark as paid</translate>">
+  [% END %]
+
+<input type="hidden" name="rowcount" value="[% rowcount %]">
+<input type="hidden" name="callback" value="[% callback %]">
+<input type="hidden" name="draft_id" value="[% draft_id %]">
+<input type="hidden" name="draft_description" value="[% draft_description %]">
+<input type="hidden" name="vendor_discount" value="[% vendor_discount %]">
+
+</form>
+
+</body>
+
+</html>
diff --git a/templates/webpages/ir/form_header_de.html b/templates/webpages/ir/form_header_de.html
new file mode 100644 (file)
index 0000000..cbe1a0a
--- /dev/null
@@ -0,0 +1,236 @@
+[%- USE HTML %]
+[%- USE LxERP %]
+[%- SET follow_up_trans_info = invnumber _ ' (' _ vendor_name _ ')' %]
+<body>
+<script type="text/javascript" src="js/common.js"></script>
+<script type="text/javascript" src="js/delivery_vendor_selection.js"></script>
+<script type="text/javascript" src="js/vendor_selection.js"></script>
+<script type="text/javascript" src="js/calculate_qty.js"></script>
+<script type="text/javascript" src="js/follow_up.js"></script>
+<script type="text/javascript" src="js/customer_or_vendor_selection.js"></script>
+
+<form method="post" name="invoice" action="[% script %]">
+
+<p>[% saved_message %]</p>
+
+[%- FOREACH key = HIDDENS %]
+<input type="hidden" name="[% HTML.escape(key) %]" value="[% HTML.escape($key)  %]">
+[%- END %]
+<input type="hidden" name="follow_up_trans_id_1" value="[% id %]">
+<input type="hidden" name="follow_up_trans_type_1" value="sales_invoice">
+<input type="hidden" name="follow_up_trans_info_1" value="[% HTML.escape(follow_up_trans_info) %]">
+<input type="hidden" name="follow_up_rowcount" value="1">
+
+<input type="hidden" name="lizenzen" value="[% lizenzen %]">
+
+<p><div class="listtop" width="100%">[% title %]</div></p>
+
+<table width="100%">
+  <tr>
+    <td valign="top">
+      <table>
+        <tr>
+          <th align="right">Lieferant</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'vendor',
+                 style         = 'width: 250px',
+                 DATA          = ALL_VENDORS,
+                 id_sub        = 'vc_keys',
+                 label_key     = 'name',
+                 select        = vc_select,
+                 limit         = vclimit,
+                 allow_textbox = 1,
+                 onChange      = "document.getElementById('update_button').click();" -%]
+            <input type="button" value="D" onclick="show_vc_details('[% vc | html %]')">
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[id="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
+          </td>
+          <input type="hidden" name="vendor_klass" value="[% HTML.escape(vendor_klass) %]">
+          <input type="hidden" name="vendor_id" value="[% HTML.escape(vendor_id) %]">
+          <input type="hidden" name="oldvendor" value="[% HTML.escape(oldvendor) %]">
+          <input type="hidden" name="selectvendor" value="[% HTML.escape(selectvendor) %]">
+        </tr>
+[%- IF ALL_CONTACTS.size %]
+        <tr>
+          <th align="right">Ansprechpartner</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'cp_id',
+                 style      = 'width: 250px',
+                 DATA       = ALL_CONTACTS,
+                 id_key     = 'cp_id',
+                 label_sub  = 'contact_labels',
+                 show_empty = 1 -%]
+          </td>
+        </tr>
+[%- END %]
+        <tr>
+          <td align="right">Kreditlimit</td>
+          <td>
+            [% LxERP.format_amount(creditlimit, 0, '0') %]; Rest
+            <span class="plus[% IF is_credit_remaining_negativ %]0[% ELSE %]1[% END %]">[% LxERP.format_amount(creditremaining,0 ,'0') %]</span>
+          </td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Buchen auf</th>
+          <td colspan="3"><select name="AP" style="width:250px;">[% selectAP %]</select></td>
+          <input type="hidden" name="selectAP" value="[% selectAP %]">
+        </tr>
+        <tr>
+          <th align="right">Steuersatz</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'taxzone_id'
+                 style      = 'width: 250px'
+                 DATA       = ALL_TAXZONES
+                 id_key     = 'id'
+                 readonly   = (id ? 1 : 0)
+                 label_key  = 'description' -%]
+          </td>
+  [%- IF id %]
+          <input type='hidden' name='taxzone_id' value='[% taxzone_id %]'>
+  [%- END %]
+        </tr>
+[%- IF all_departments %]
+        <tr>
+          <th align="right" nowrap>Abteilung</th>
+          <td colspan="3">
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'department_id',
+                 style      = 'width: 250px',
+                 DATA       = all_departments,
+                 id_key     = 'id',
+                 label_sub  = 'department_labels',
+                 show_empty = 1 -%]
+          </td>
+        </tr>
+[%- END %]
+[%- IF currencies %]
+        <tr>
+          <th align="right">Währung</th>
+          <td>[% currencies %]</td>
+        </tr>
+[%- END %]
+        <input type="hidden" name="fxgain_accno" value="[% fxgain_accno %]">
+        <input type="hidden" name="fxloss_accno" value="[% fxloss_accno %]">
+[%- IF show_exchangerate %]
+        <tr>
+          <th align="right">Wechselkurs</th>
+          <td>
+           [%- IF forex %]
+            [% LxERP.format_amount(exchangerate, 2) %]
+           [%- ELSE %]
+            <input name="exchangerate" size="10" value="[% HTML.escape(LxERP.format_amount(exchangerate)) %]">
+           [%- END %]
+          </td>
+        </tr>
+[%- END %]
+      </table>
+    </td>
+    <td align="right" valign="top">
+      <table>
+        <tr>
+          <th align="right">Bearbeiter</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'employee_id',
+                 DATA       = ALL_EMPLOYEES,
+                 id_key     = 'id',
+                 label_sub  = 'sales_employee_labels' -%]
+          </td>
+        </tr>
+
+[%- IF is_type_credit_note %]
+        <tr>
+          <th align="right" nowrap>Gutschriftnummer</th>
+          <td colspan="3"><input size='11' name="invnumber" value="[% HTML.escape(invnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right">Gutschriftdatum</th>
+          <td nowrap>
+            <input name="invdate" id="invdate" size="11" title="[% dateformat %]" value="[% invdate %]" onBlur="check_right_date_format(this)">
+            <input type="button" name="invdate_button" id="trigger1" value="?">
+          </td>
+        </tr>
+[%- ELSE %]
+        <tr>
+          <th align="right" nowrap>Rechnungsnummer</th>
+          <td colspan="3"><input size='11' name="invnumber" value="[% HTML.escape(invnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right">Rechnungsdatum</th>
+          <td nowrap>
+            <input name="invdate" id="invdate" size="11" title="[% dateformat %]" value="[% invdate %]" onBlur="check_right_date_format(this)">
+            <input type="button" name="invdate_button" id="trigger1" value="?">
+          </td>
+        </tr>
+        <tr>
+          <th align="right">Fälligkeitsdatum</th>
+          <td width="13">
+            <input name="duedate" id="duedate" size="11" title="[% dateformat %]" value="[% duedate %]" onBlur="check_right_date_format(this)">
+            <input type="button" name="duedate_button" id="trigger2" value="?">
+          </td>
+        </tr>
+[%- END %]
+
+        <tr>
+          <th align="right" nowrap>Auftragsnummer</th>
+          <td colspan="3"><input size='11' name="ordnumber" value="[% HTML.escape(ordnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Auftragsdatum</th>
+          <td><input name="orddate" id="orddate" size="11" title="[% dateformat %]" value="[% orddate %]" onBlur="check_right_date_format(this)">
+          <input type="button" name="b_orddate" id="trigger_orddate" value="?"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Angebotsdatum</th>
+          <td><input name="quodate" id="quodate" size="11" title="[% dateformat %]" value="[% quodate %]" onBlur="check_right_date_format(this)">
+           <input type="button" name="b_quodate" id="trigger_quodate" value="?"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Projektnummer</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'globalproject_id',
+                 DATA       = ALL_PROJECTS,
+                 id_key     = 'id',
+                 label_key  = 'projectnumber',
+                 show_empty = 1,
+                 onChange   = "document.getElementById('update_button').click();" -%]
+          </td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+    </td>
+  </tr>
+  <tr>
+    <td>
+    </td>
+  </tr>
+  <script type="text/javascript" src="js/show_form_details.js"></script>
+  <script type="text/javascript" src="js/show_vc_details.js"></script>
+  <script type="text/javascript" src="js/show_history.js"></script>
+  <script type="text/javascript">
+   <!--
+     Calendar.setup({ inputField : "invdate",      ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger1" });
+     Calendar.setup({ inputField : "duedate",      ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger2" });
+     Calendar.setup({ inputField : "orddate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger_orddate" });
+     Calendar.setup({ inputField : "quodate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger_quodate" });
+     $('document').ready(function(){
+[% IF creditwarning != '' %]
+       alert('Kreditlimit überschritten!');
+[% ELSE %]
+       focus();
+[% END %]
+       setupDateFormat('[% dateformat %]', 'Falsches Datumsformat!');
+       setupPoints('[% numberformat %]', 'Falsches Format');
+     });
+   //-->
+  </script>
+
+  <input type="hidden" name="webdav" value="[% webdav %]">
diff --git a/templates/webpages/ir/form_header_en.html b/templates/webpages/ir/form_header_en.html
new file mode 100644 (file)
index 0000000..fb3c52b
--- /dev/null
@@ -0,0 +1,236 @@
+[%- USE HTML %]
+[%- USE LxERP %]
+[%- SET follow_up_trans_info = invnumber _ ' (' _ vendor_name _ ')' %]
+<body>
+<script type="text/javascript" src="js/common.js"></script>
+<script type="text/javascript" src="js/delivery_vendor_selection.js"></script>
+<script type="text/javascript" src="js/vendor_selection.js"></script>
+<script type="text/javascript" src="js/calculate_qty.js"></script>
+<script type="text/javascript" src="js/follow_up.js"></script>
+<script type="text/javascript" src="js/customer_or_vendor_selection.js"></script>
+
+<form method="post" name="invoice" action="[% script %]">
+
+<p>[% saved_message %]</p>
+
+[%- FOREACH key = HIDDENS %]
+<input type="hidden" name="[% HTML.escape(key) %]" value="[% HTML.escape($key)  %]">
+[%- END %]
+<input type="hidden" name="follow_up_trans_id_1" value="[% id %]">
+<input type="hidden" name="follow_up_trans_type_1" value="sales_invoice">
+<input type="hidden" name="follow_up_trans_info_1" value="[% HTML.escape(follow_up_trans_info) %]">
+<input type="hidden" name="follow_up_rowcount" value="1">
+
+<input type="hidden" name="lizenzen" value="[% lizenzen %]">
+
+<p><div class="listtop" width="100%">[% title %]</div></p>
+
+<table width="100%">
+  <tr>
+    <td valign="top">
+      <table>
+        <tr>
+          <th align="right">Vendor</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'vendor',
+                 style         = 'width: 250px',
+                 DATA          = ALL_VENDORS,
+                 id_sub        = 'vc_keys',
+                 label_key     = 'name',
+                 select        = vc_select,
+                 limit         = vclimit,
+                 allow_textbox = 1,
+                 onChange      = "document.getElementById('update_button').click();" -%]
+            <input type="button" value="Details (one letter abbreviation)" onclick="show_vc_details('[% vc | html %]')">
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[id="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
+          </td>
+          <input type="hidden" name="vendor_klass" value="[% HTML.escape(vendor_klass) %]">
+          <input type="hidden" name="vendor_id" value="[% HTML.escape(vendor_id) %]">
+          <input type="hidden" name="oldvendor" value="[% HTML.escape(oldvendor) %]">
+          <input type="hidden" name="selectvendor" value="[% HTML.escape(selectvendor) %]">
+        </tr>
+[%- IF ALL_CONTACTS.size %]
+        <tr>
+          <th align="right">Contact Person</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'cp_id',
+                 style      = 'width: 250px',
+                 DATA       = ALL_CONTACTS,
+                 id_key     = 'cp_id',
+                 label_sub  = 'contact_labels',
+                 show_empty = 1 -%]
+          </td>
+        </tr>
+[%- END %]
+        <tr>
+          <td align="right">Credit Limit</td>
+          <td>
+            [% LxERP.format_amount(creditlimit, 0, '0') %]; Remaining
+            <span class="plus[% IF is_credit_remaining_negativ %]0[% ELSE %]1[% END %]">[% LxERP.format_amount(creditremaining,0 ,'0') %]</span>
+          </td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Record in</th>
+          <td colspan="3"><select name="AP" style="width:250px;">[% selectAP %]</select></td>
+          <input type="hidden" name="selectAP" value="[% selectAP %]">
+        </tr>
+        <tr>
+          <th align="right">Steuersatz</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'taxzone_id'
+                 style      = 'width: 250px'
+                 DATA       = ALL_TAXZONES
+                 id_key     = 'id'
+                 readonly   = (id ? 1 : 0)
+                 label_key  = 'description' -%]
+          </td>
+  [%- IF id %]
+          <input type='hidden' name='taxzone_id' value='[% taxzone_id %]'>
+  [%- END %]
+        </tr>
+[%- IF all_departments %]
+        <tr>
+          <th align="right" nowrap>Department</th>
+          <td colspan="3">
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'department_id',
+                 style      = 'width: 250px',
+                 DATA       = all_departments,
+                 id_key     = 'id',
+                 label_sub  = 'department_labels',
+                 show_empty = 1 -%]
+          </td>
+        </tr>
+[%- END %]
+[%- IF currencies %]
+        <tr>
+          <th align="right">Currency</th>
+          <td>[% currencies %]</td>
+        </tr>
+[%- END %]
+        <input type="hidden" name="fxgain_accno" value="[% fxgain_accno %]">
+        <input type="hidden" name="fxloss_accno" value="[% fxloss_accno %]">
+[%- IF show_exchangerate %]
+        <tr>
+          <th align="right">Exchangerate</th>
+          <td>
+           [%- IF forex %]
+            [% LxERP.format_amount(exchangerate, 2) %]
+           [%- ELSE %]
+            <input name="exchangerate" size="10" value="[% HTML.escape(LxERP.format_amount(exchangerate)) %]">
+           [%- END %]
+          </td>
+        </tr>
+[%- END %]
+      </table>
+    </td>
+    <td align="right" valign="top">
+      <table>
+        <tr>
+          <th align="right">Employee</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'employee_id',
+                 DATA       = ALL_EMPLOYEES,
+                 id_key     = 'id',
+                 label_sub  = 'sales_employee_labels' -%]
+          </td>
+        </tr>
+
+[%- IF is_type_credit_note %]
+        <tr>
+          <th align="right" nowrap>Credit Note Number</th>
+          <td colspan="3"><input size='11' name="invnumber" value="[% HTML.escape(invnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right">Credit Note Date</th>
+          <td nowrap>
+            <input name="invdate" id="invdate" size="11" title="[% dateformat %]" value="[% invdate %]" onBlur="check_right_date_format(this)">
+            <input type="button" name="invdate_button" id="trigger1" value="button">
+          </td>
+        </tr>
+[%- ELSE %]
+        <tr>
+          <th align="right" nowrap>Invoice Number</th>
+          <td colspan="3"><input size='11' name="invnumber" value="[% HTML.escape(invnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right">Invoice Date</th>
+          <td nowrap>
+            <input name="invdate" id="invdate" size="11" title="[% dateformat %]" value="[% invdate %]" onBlur="check_right_date_format(this)">
+            <input type="button" name="invdate_button" id="trigger1" value="button">
+          </td>
+        </tr>
+        <tr>
+          <th align="right">Due Date</th>
+          <td width="13">
+            <input name="duedate" id="duedate" size="11" title="[% dateformat %]" value="[% duedate %]" onBlur="check_right_date_format(this)">
+            <input type="button" name="duedate_button" id="trigger2" value="button">
+          </td>
+        </tr>
+[%- END %]
+
+        <tr>
+          <th align="right" nowrap>Order Number</th>
+          <td colspan="3"><input size='11' name="ordnumber" value="[% HTML.escape(ordnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Order Date</th>
+          <td><input name="orddate" id="orddate" size="11" title="[% dateformat %]" value="[% orddate %]" onBlur="check_right_date_format(this)">
+          <input type="button" name="b_orddate" id="trigger_orddate" value="?"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Quotation Date</th>
+          <td><input name="quodate" id="quodate" size="11" title="[% dateformat %]" value="[% quodate %]" onBlur="check_right_date_format(this)">
+           <input type="button" name="b_quodate" id="trigger_quodate" value="?"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Project Number</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'globalproject_id',
+                 DATA       = ALL_PROJECTS,
+                 id_key     = 'id',
+                 label_key  = 'projectnumber',
+                 show_empty = 1,
+                 onChange   = "document.getElementById('update_button').click();" -%]
+          </td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+    </td>
+  </tr>
+  <tr>
+    <td>
+    </td>
+  </tr>
+  <script type="text/javascript" src="js/show_form_details.js"></script>
+  <script type="text/javascript" src="js/show_vc_details.js"></script>
+  <script type="text/javascript" src="js/show_history.js"></script>
+  <script type="text/javascript">
+   <!--
+     Calendar.setup({ inputField : "invdate",      ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger1" });
+     Calendar.setup({ inputField : "duedate",      ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger2" });
+     Calendar.setup({ inputField : "orddate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger_orddate" });
+     Calendar.setup({ inputField : "quodate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger_quodate" });
+     $('document').ready(function(){
+[% IF creditwarning != '' %]
+       alert('Credit Limit exceeded!!!');
+[% ELSE %]
+       focus();
+[% END %]
+       setupDateFormat('[% dateformat %]', 'Falsches Datumsformat!');
+       setupPoints('[% numberformat %]', 'wrongformat');
+     });
+   //-->
+  </script>
+
+  <input type="hidden" name="webdav" value="[% webdav %]">
diff --git a/templates/webpages/ir/form_header_master.html b/templates/webpages/ir/form_header_master.html
new file mode 100644 (file)
index 0000000..c092782
--- /dev/null
@@ -0,0 +1,236 @@
+[%- USE HTML %]
+[%- USE LxERP %]
+[%- SET follow_up_trans_info = invnumber _ ' (' _ vendor_name _ ')' %]
+<body>
+<script type="text/javascript" src="js/common.js"></script>
+<script type="text/javascript" src="js/delivery_vendor_selection.js"></script>
+<script type="text/javascript" src="js/vendor_selection.js"></script>
+<script type="text/javascript" src="js/calculate_qty.js"></script>
+<script type="text/javascript" src="js/follow_up.js"></script>
+<script type="text/javascript" src="js/customer_or_vendor_selection.js"></script>
+
+<form method="post" name="invoice" action="[% script %]">
+
+<p>[% saved_message %]</p>
+
+[%- FOREACH key = HIDDENS %]
+<input type="hidden" name="[% HTML.escape(key) %]" value="[% HTML.escape($key)  %]">
+[%- END %]
+<input type="hidden" name="follow_up_trans_id_1" value="[% id %]">
+<input type="hidden" name="follow_up_trans_type_1" value="sales_invoice">
+<input type="hidden" name="follow_up_trans_info_1" value="[% HTML.escape(follow_up_trans_info) %]">
+<input type="hidden" name="follow_up_rowcount" value="1">
+
+<input type="hidden" name="lizenzen" value="[% lizenzen %]">
+
+<p><div class="listtop" width="100%">[% title %]</div></p>
+
+<table width="100%">
+  <tr>
+    <td valign="top">
+      <table>
+        <tr>
+          <th align="right"><translate>Vendor</translate></th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'vendor',
+                 style         = 'width: 250px',
+                 DATA          = ALL_VENDORS,
+                 id_sub        = 'vc_keys',
+                 label_key     = 'name',
+                 select        = vc_select,
+                 limit         = vclimit,
+                 allow_textbox = 1,
+                 onChange      = "document.getElementById('update_button').click();" -%]
+            <input type="button" value="<translate>Details (one letter abbreviation)</translate>" onclick="show_vc_details('[% vc | html %]')">
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[id="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
+          </td>
+          <input type="hidden" name="vendor_klass" value="[% HTML.escape(vendor_klass) %]">
+          <input type="hidden" name="vendor_id" value="[% HTML.escape(vendor_id) %]">
+          <input type="hidden" name="oldvendor" value="[% HTML.escape(oldvendor) %]">
+          <input type="hidden" name="selectvendor" value="[% HTML.escape(selectvendor) %]">
+        </tr>
+[%- IF ALL_CONTACTS.size %]
+        <tr>
+          <th align="right"><translate>Contact Person</translate></th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'cp_id',
+                 style      = 'width: 250px',
+                 DATA       = ALL_CONTACTS,
+                 id_key     = 'cp_id',
+                 label_sub  = 'contact_labels',
+                 show_empty = 1 -%]
+          </td>
+        </tr>
+[%- END %]
+        <tr>
+          <td align="right"><translate>Credit Limit</translate></td>
+          <td>
+            [% LxERP.format_amount(creditlimit, 0, '0') %]; <translate>Remaining</translate>
+            <span class="plus[% IF is_credit_remaining_negativ %]0[% ELSE %]1[% END %]">[% LxERP.format_amount(creditremaining,0 ,'0') %]</span>
+          </td>
+        </tr>
+        <tr>
+          <th align="right" nowrap><translate>Record in</translate></th>
+          <td colspan="3"><select name="AP" style="width:250px;">[% selectAP %]</select></td>
+          <input type="hidden" name="selectAP" value="[% selectAP %]">
+        </tr>
+        <tr>
+          <th align="right"><translate>Steuersatz</translate></th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'taxzone_id'
+                 style      = 'width: 250px'
+                 DATA       = ALL_TAXZONES
+                 id_key     = 'id'
+                 readonly   = (id ? 1 : 0)
+                 label_key  = 'description' -%]
+          </td>
+  [%- IF id %]
+          <input type='hidden' name='taxzone_id' value='[% taxzone_id %]'>
+  [%- END %]
+        </tr>
+[%- IF all_departments %]
+        <tr>
+          <th align="right" nowrap><translate>Department</translate></th>
+          <td colspan="3">
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'department_id',
+                 style      = 'width: 250px',
+                 DATA       = all_departments,
+                 id_key     = 'id',
+                 label_sub  = 'department_labels',
+                 show_empty = 1 -%]
+          </td>
+        </tr>
+[%- END %]
+[%- IF currencies %]
+        <tr>
+          <th align="right"><translate>Currency</translate></th>
+          <td>[% currencies %]</td>
+        </tr>
+[%- END %]
+        <input type="hidden" name="fxgain_accno" value="[% fxgain_accno %]">
+        <input type="hidden" name="fxloss_accno" value="[% fxloss_accno %]">
+[%- IF show_exchangerate %]
+        <tr>
+          <th align="right"><translate>Exchangerate</translate></th>
+          <td>
+           [%- IF forex %]
+            [% LxERP.format_amount(exchangerate, 2) %]
+           [%- ELSE %]
+            <input name="exchangerate" size="10" value="[% HTML.escape(LxERP.format_amount(exchangerate)) %]">
+           [%- END %]
+          </td>
+        </tr>
+[%- END %]
+      </table>
+    </td>
+    <td align="right" valign="top">
+      <table>
+        <tr>
+          <th align="right"><translate>Employee</translate></th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'employee_id',
+                 DATA       = ALL_EMPLOYEES,
+                 id_key     = 'id',
+                 label_sub  = 'sales_employee_labels' -%]
+          </td>
+        </tr>
+
+[%- IF is_type_credit_note %]
+        <tr>
+          <th align="right" nowrap><translate>Credit Note Number</translate></th>
+          <td colspan="3"><input size='11' name="invnumber" value="[% HTML.escape(invnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right"><translate>Credit Note Date</translate></th>
+          <td nowrap>
+            <input name="invdate" id="invdate" size="11" title="[% dateformat %]" value="[% invdate %]" onBlur="check_right_date_format(this)">
+            <input type="button" name="invdate_button" id="trigger1" value="<translate>button</translate>">
+          </td>
+        </tr>
+[%- ELSE %]
+        <tr>
+          <th align="right" nowrap><translate>Invoice Number</translate></th>
+          <td colspan="3"><input size='11' name="invnumber" value="[% HTML.escape(invnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right"><translate>Invoice Date</translate></th>
+          <td nowrap>
+            <input name="invdate" id="invdate" size="11" title="[% dateformat %]" value="[% invdate %]" onBlur="check_right_date_format(this)">
+            <input type="button" name="invdate_button" id="trigger1" value="<translate>button</translate>">
+          </td>
+        </tr>
+        <tr>
+          <th align="right"><translate>Due Date</translate></th>
+          <td width="13">
+            <input name="duedate" id="duedate" size="11" title="[% dateformat %]" value="[% duedate %]" onBlur="check_right_date_format(this)">
+            <input type="button" name="duedate_button" id="trigger2" value="<translate>button</translate>">
+          </td>
+        </tr>
+[%- END %]
+
+        <tr>
+          <th align="right" nowrap><translate>Order Number</translate></th>
+          <td colspan="3"><input size='11' name="ordnumber" value="[% HTML.escape(ordnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap><translate>Order Date</translate></th>
+          <td><input name="orddate" id="orddate" size="11" title="[% dateformat %]" value="[% orddate %]" onBlur="check_right_date_format(this)">
+          <input type="button" name="b_orddate" id="trigger_orddate" value="?"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap><translate>Quotation Date</translate></th>
+          <td><input name="quodate" id="quodate" size="11" title="[% dateformat %]" value="[% quodate %]" onBlur="check_right_date_format(this)">
+           <input type="button" name="b_quodate" id="trigger_quodate" value="?"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap><translate>Project Number</translate></th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'globalproject_id',
+                 DATA       = ALL_PROJECTS,
+                 id_key     = 'id',
+                 label_key  = 'projectnumber',
+                 show_empty = 1,
+                 onChange   = "document.getElementById('update_button').click();" -%]
+          </td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+    </td>
+  </tr>
+  <tr>
+    <td>
+    </td>
+  </tr>
+  <script type="text/javascript" src="js/show_form_details.js"></script>
+  <script type="text/javascript" src="js/show_vc_details.js"></script>
+  <script type="text/javascript" src="js/show_history.js"></script>
+  <script type="text/javascript">
+   <!--
+     Calendar.setup({ inputField : "invdate",      ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger1" });
+     Calendar.setup({ inputField : "duedate",      ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger2" });
+     Calendar.setup({ inputField : "orddate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger_orddate" });
+     Calendar.setup({ inputField : "quodate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger_quodate" });
+     $('document').ready(function(){
+[% IF creditwarning != '' %]
+       alert('<translate>Credit Limit exceeded!!!</translate>');
+[% ELSE %]
+       focus();
+[% END %]
+       setupDateFormat('[% dateformat %]', '<translate>Falsches Datumsformat!</translate>');
+       setupPoints('[% numberformat %]', '<translate>wrongformat</translate>');
+     });
+   //-->
+  </script>
+
+  <input type="hidden" name="webdav" value="[% webdav %]">
diff --git a/templates/webpages/is/_payments_en.html b/templates/webpages/is/_payments_en.html
new file mode 100644 (file)
index 0000000..cacaae7
--- /dev/null
@@ -0,0 +1,87 @@
+[%- USE LxERP %]
+  <tr>
+   <td>
+    <table width="100%">
+     <tr class="listheading">
+[% IF is_type_credit_note %]
+      <th colspan="6" class="listheading">Payments</th>
+[% ELSE %]
+      <th colspan="6" class="listheading">Incoming Payments</th>
+[%- END %]
+     </tr>
+
+
+     <tr>
+      <th>Date</th>
+      <th>Source</th>
+      <th>Memo</th>
+      <th>Amount</th>
+[% IF show_exchangerate %]
+      <th>Exch</th>
+[% END %]
+      <th>Account</th>
+     </tr>
+
+
+[% FOREACH i = paid_indices %]
+  [% SET datepaid      = 'datepaid_'      _ i %]
+  [% SET source        = 'source_'        _ i %]
+  [% SET memo          = 'memo_'          _ i %]
+  [% SET paid          = 'paid_'          _ i %]
+  [% SET selectAR_paid_ref = 'selectAR_paid_' _ i %]
+
+     <tr>
+
+    <td align="center">
+      <input id="datepaid_[% i %]" name="datepaid_[% i %]" size="11" title="[% dateformat %]" value="[% $datepaid %]">
+      <input type="button" name="datepaid_[% i %]" id="trigger_datepaid_[% i %]" value="?">
+     </td>
+     <td align=center><input name="source_[% i %]" size="11" value="[% $source %]"></td>
+     <td align="center"><input name="memo_[% i %]" size="11" value="[% $memo %]"></td>
+     <td align="center"><input name="paid_[% i %]" size="11" value="[% LxERP.format_amount($paid, 2, 1) %]"></td>
+[% IF show_exchangerate %]
+     <td align="center">
+  [% SET forex        = 'forex_'        _ i %]
+  [% SET exchangerate = 'exchangerate_' _ i %]
+  [% IF forex %]
+        <input type="hidden" name="exchangerate_[% i %]" value="[% LxERP.format_amount($exchangerate, 2) %]">
+        [% LxERP.format_amount(exchangerate, 2) %]
+  [% ELSE %]
+        <input name="exchangerate_[% i %]" size="10" value="[% LxERP.format_amount($exchangerate, 2, 1) %]">
+  [% END %]
+        <input type="hidden" name="forex_[% i %]" value="[% $forex %]">;
+     </td>
+[% END %]
+     <td align="center"><select name="AR_paid_[% i %]">[% $selectAR_paid_ref %]</select></td>
+
+    </tr>
+    <script type='text/javascript'>
+     Calendar.setup({ inputField : "datepaid_[% i %]", ifFormat :"[% myconfig_jsc_dateformat %]", align : "TR", button : "trigger_datepaid_[% i %]" });
+     $('input[name="paid_[% i %]"]').blur(function(){ check_right_number_format(this) });
+     $('#datepaid_[% i %]').blur(function(){ check_right_date_format(this) });
+    </script>
+
+[% END # foreach %]
+
+    <tr>
+      <td></td>
+      <td></td>
+      <td align="center">Total</td>
+      <td align="center">[% LxERP.foramt_amount(totalpaid, 2) | html %]</td>
+    </tr>
+    <tr>
+      <td></td>
+      <td></td>
+      <td align="center">Missing amount</td>
+      <td align="center">[% LxERP.format_amount(paid_missing, 2) | html %]</td>
+    </tr>
+
+     <input type="hidden" name="paidaccounts" value="[% paidaccounts %]">
+     <input type="hidden" name="selectAR_paid" value="[% selectAR_paid %]">
+     <input type="hidden" name="oldinvtotal" value="[% oldinvtotal %]">
+
+     <input type="hidden" name="oldtotalpaid" value="[% totalpaid %]">
+    </table>
+
+    </td>
+  </tr>
diff --git a/templates/webpages/is/form_footer_en.html b/templates/webpages/is/form_footer_en.html
new file mode 100644 (file)
index 0000000..bb5b460
--- /dev/null
@@ -0,0 +1,175 @@
+[%- USE HTML %]
+[%- USE LxERP %]
+  <tr>
+   <td>
+    <table width="100%">
+     <tr valign="bottom">
+      <td>
+       <table>
+        <tr>
+         <th align="left">Notes</th>
+         <th align="left">Internal Notes</th>
+         <th align="right">Payment Terms</th>
+        </tr>
+        <tr valign="top">
+         <td>
+          <textarea name="notes" rows="[% rows %]" cols="26" wrap="soft">[% notes %]</textarea>
+         </td>
+         <td>
+          <textarea name="intnotes" rows="[% rows %]" cols="35" wrap="soft">[% intnotes %]</textarea>
+         </td>
+         <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'payment_id',
+                 style         = 'width: 250px',
+                 DATA          = payment_terms,
+                 id_key        = 'id',
+                 label_key     = 'description',
+                 show_empty    = 1
+                 allow_textbox = 0 -%]
+          <script type='text/javascript'>$('#payment_id').change(function(){
+            if (this.value) set_duedate(['payment_id__' + this.value, 'invdate__' + invdate.value],['duedate'])})
+          </script>
+         </td>
+        </tr>
+[%- IF id && follow_ups.size %]
+        <tr>
+          <td colspan="2">
+            [%- LxERP.format_string('There are #1 unfinished follow-ups of which #2 are due.',
+                                     follow_ups.size, follow_ups_unfinished) | html
+            %]
+          <td>
+        </tr>
+[%- END %]
+       </table>
+      </td>
+      <td>
+       <table>
+        <tr>
+         <th  align=left>Ertrag</th>
+         <td>[% LxERP.format_amount(marge_total, 2, 0) %]</td>
+        </tr>
+        <tr>
+         <th  align=left>Ertrag prozentual</th>
+         <td>[% LxERP.format_amount(marge_percent, 2, 0) %] %</td>
+        </tr>
+        <input type=hidden name="marge_total" value="[% marge_total %]">
+        <input type=hidden name="marge_percent" value="[% marge_percent %]">
+       </table>
+      </td>
+      <td align="right">
+  [%- IF taxaccounts %]
+       <input name="taxincluded" class="checkbox" type="checkbox" [% IF taxincluded %]checked[% END %]>
+       <b>Tax Included</b>
+       <br>
+       <br>
+  [%- END %]
+       <table>
+
+[%- UNLESS taxincluded %]
+        <tr>
+         <th align="right">Subtotal</th>
+         <td align="right">[% LxERP.format_amount(invsubtotal, 2) %]</td>
+       </tr>
+[%- END %]
+
+[%# tax %]
+[% FOREACH item = taxaccounts_array %]
+[% SET description_ref = item _ '_description' %]
+[% SET rate_ref        = item _ '_rate' %]
+[% SET total_ref       = item _ '_total' %]
+[% SET netto_ref       = item _ '_netto' %]
+       <tr>
+        <th align="right">Enthaltene [% $description_ref | html %]&nbsp;[% $rate_ref * 100 %]%</th>
+        <td align="right">[% LxERP.format_amount($total_ref, 2) %]</td>
+       </tr>
+  [%- IF taxincluded %]
+       <tr>
+        <th align="right">Nettobetrag</th>
+        <td align="right">[% LxERP.format_amount($netto_ref, 2) %]</td>
+       </tr>
+  [%- END %]
+[%- END %]
+
+        <tr>
+         <th align="right">Total</th>
+         <td align="right">[% LxERP.format_amount(invtotal, 2) %]</td>
+        </tr>
+       </table>
+      </td>
+     </tr>
+    </table>
+   </td>
+  </tr>
+
+[% PROCESS 'webdav/_list_master.html' %]
+
+[% PROCESS 'is/_payments_master.html' %]
+
+  <tr>
+    <td><hr size="3" noshade></td>
+  </tr>
+  <tr>
+    <td>
+[% print_options %]
+    </td>
+  </tr>
+ </table>
+
+
+
+  [% IF id %]
+
+    <input class="submit" type="submit" accesskey="u" name="action" id="update_button" value="Update">
+    <input class="submit" type="submit" name="action" value="Ship to">
+    <input class="submit" type="submit" name="action" value="Print">
+    <input class="submit" type="submit" name="action" value="E-mail">
+[% IF  show_storno %]
+    <input class="submit" type="submit" name="action" value="Storno">
+[% END %]
+    <input class="submit" type="submit" name="action" value="Post Payment">
+    <input class="submit" type="submit" name="action" value="Use As Template">
+
+[% IF id && !is_type_credit_note %]
+    <input class="submit" type="submit" name="action" value="Credit Note">
+[% END %]
+[% IF show_delete %]
+    <input class="submit" type="submit" name="action" value="Delete">
+[% END %]
+
+  [%- UNLESS locked %]
+       <input class="submit" type="submit" name="action" value="Order">
+  [%- END %]
+
+    <input type="button" class="submit" onclick="follow_up_window()" value="Follow-Up">
+
+ [% ELSE # no id %]
+   [% UNLESS locked %]
+      <input class="submit" type="submit" name="action" id="update_button" value="Update">
+      <input class="submit" type="submit" name="action" value="Ship to">
+      <input class="submit" type="submit" name="action" value="Preview">
+      <input class="submit" type="submit" name="action" value="E-mail">
+      <input class="submit" type="submit" name="action" value="Print and Post">
+      <input class="submit" type="submit" name="action" value="Post">
+      <input class="submit" type="submit" name="action" value="Save Draft">
+   [%- END %]
+ [% END # id %]
+
+  [% IF id %]
+      [%#- button for saving history %]
+      <input type="button" class="submit" onclick="set_history_window([% id | html %]);" name="history" id="history" value="history">
+
+      <input type="submit" class="submit" name="action" value="mark as paid">
+  [% END %]
+
+<input type="hidden" name="rowcount" value="[% rowcount %]">
+<input type="hidden" name="callback" value="[% callback %]">
+<input type="hidden" name="draft_id" value="[% draft_id %]">
+<input type="hidden" name="draft_description" value="[% draft_description %]">
+<input type="hidden" name="customer_discount" value="[% customer_discount %]">
+
+</form>
+
+</body>
+
+</html>
index 3a9589e..04ae713 100644 (file)
                  allow_textbox = 1,
                  onChange      = "document.getElementById('update_button').click();" -%]
             <input type="button" value="D" onclick="show_vc_details('[% HTML.escape(vc) %]')">
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[id="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
           </td>
           <input type="hidden" name="customer_klass" value="[% HTML.escape(customer_klass) %]">
           <input type="hidden" name="customer_id" value="[% HTML.escape(customer_id) %]">
   <script type="text/javascript" src="js/show_form_details.js"></script>
   <script type="text/javascript" src="js/show_vc_details.js"></script>
   <script type="text/javascript" src="js/show_history.js"></script>
-  <script type="text/javascript" src="js/jquery.js"></script>
   <script type="text/javascript">
    <!--
      Calendar.setup({ inputField : "invdate",      ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger1" });
diff --git a/templates/webpages/is/form_header_en.html b/templates/webpages/is/form_header_en.html
new file mode 100644 (file)
index 0000000..f808ab7
--- /dev/null
@@ -0,0 +1,318 @@
+[%- USE HTML %]
+[%- USE LxERP %]
+[%- SET follow_up_trans_info = invnumber _ ' (' _ customer_name _ ')' %]
+<body>
+<script type="text/javascript" src="js/common.js"></script>
+<script type="text/javascript" src="js/delivery_customer_selection.js"></script>
+<script type="text/javascript" src="js/vendor_selection.js"></script>
+<script type="text/javascript" src="js/calculate_qty.js"></script>
+<script type="text/javascript" src="js/follow_up.js"></script>
+<script type="text/javascript" src="js/customer_or_vendor_selection.js"></script>
+
+<form method="post" name="invoice" action="[% script %]">
+
+<p>[% saved_message %]</p>
+
+[%- FOREACH key = HIDDENS %]
+<input type="hidden" name="[% HTML.escape(key) %]" value="[% HTML.escape($key)  %]">
+[%- END %]
+<input type="hidden" name="follow_up_trans_id_1" value="[% id %]">
+<input type="hidden" name="follow_up_trans_type_1" value="sales_invoice">
+<input type="hidden" name="follow_up_trans_info_1" value="[% HTML.escape(follow_up_trans_info) %]">
+<input type="hidden" name="follow_up_rowcount" value="1">
+
+<input type="hidden" name="lizenzen" value="[% lizenzen %]">
+
+<p><div class="listtop" width="100%">[% title %]</div></p>
+
+<table width="100%">
+  <tr>
+    <td valign="top">
+      <table>
+        <tr>
+          <th align="right">Customer</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name          = 'customer',
+                 style         = 'width: 250px',
+                 DATA          = ALL_CUSTOMERS,
+                 id_sub        = 'vc_keys',
+                 label_key     = 'name',
+                 select        = vc_select,
+                 limit         = vclimit,
+                 allow_textbox = 1,
+                 onChange      = "document.getElementById('update_button').click();" -%]
+            <input type="button" value="Details (one letter abbreviation)" onclick="show_vc_details('[% HTML.escape(vc) %]')">
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[id="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
+          </td>
+          <input type="hidden" name="customer_klass" value="[% HTML.escape(customer_klass) %]">
+          <input type="hidden" name="customer_id" value="[% HTML.escape(customer_id) %]">
+          <input type="hidden" name="oldcustomer" value="[% HTML.escape(oldcustomer) %]">
+          <input type="hidden" name="selectcustomer" value="[% HTML.escape(selectcustomer) %]">
+        </tr>
+[%- IF ALL_CONTACTS.size %]
+        <tr>
+          <th align="right">Contact Person</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'cp_id',
+                 style      = 'width: 250px',
+                 DATA       = ALL_CONTACTS,
+                 id_key     = 'cp_id',
+                 label_sub  = 'contact_labels',
+                 show_empty = 1 -%]
+          </td>
+        </tr>
+[%- END %]
+[%- IF ALL_SHIPTO.size %]
+        <tr>
+          <th align="right">Shipping Address</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'shipto_id',
+                 style      = 'width: 250px',
+                 DATA       = ALL_SHIPTO,
+                 id_key     = 'shipto_id',
+                 label_sub  = 'shipto_labels',
+                 show_empty = 1,
+                 onChange   = "document.getElementById('update_button').click();" -%]
+          </td>
+        </tr>
+[%- END %]
+        <tr>
+          <td align="right">Credit Limit</td>
+          <td>
+            [% LxERP.format_amount(creditlimit, 0, '0') %]; Remaining
+            <span class="plus[% IF is_credit_remaining_negativ %]0[% ELSE %]1[% END %]">[% LxERP.format_amount(creditremaining,0 ,'0') %]</span>
+          </td>
+        </tr>
+[%- IF max_dunning_level %]
+        <tr>
+          <th align="right">Max. Dunning Level:</th>
+          <td>
+            <b>[% max_dunning_level %]</b>; Dunning Amount: <b>[% LxERP.format_amount(dunning_amount,2) %]</b>
+          </td>
+        </tr>
+[%- END %]
+[%- IF business %]
+        <tr>
+          <th align="right">Customer type</th>
+          <td>[% business %]; Trade Discount [% LxERP.format_amount(tradediscount * 100) %] %</td>
+        </tr>
+[%- END %]
+        <tr>
+          <th align="right" nowrap>Record in</th>
+          <td colspan="3"><select name="AR" style="width:250px;">[% selectAR %]</select></td>
+          <input type="hidden" name="selectAR" value="[% selectAR %]">
+        </tr>
+        <tr>
+          <th align="right">Steuersatz</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'taxzone_id'
+                 stype      = '250px'
+                 DATA       = ALL_TAXZONES
+                 id_key     = 'id'
+                 readonly   = (id ? 1 : 0)
+                 label_key  = 'description' -%]
+          </td>
+  [%- IF id %]
+          <input type='hidden' name='taxzone_id' value='[% taxzone_id %]'>
+  [%- END %]
+        </tr>
+[%- IF all_departments %]
+        <tr>
+          <th align="right" nowrap>Department</th>
+          <td colspan="3">
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'department_id',
+                 style      = 'width: 250px',
+                 DATA       = all_departments,
+                 id_key     = 'id',
+                 label_sub  = 'department_labels',
+                 show_empty = 1 -%]
+          </td>
+        </tr>
+[%- END %]
+[%- IF currencies %]
+        <tr>
+          <th align="right">Currency</th>
+          <td>[% currencies %]</td>
+        </tr>
+[%- END %]
+        <input type="hidden" name="fxgain_accno" value="[% fxgain_accno %]">
+        <input type="hidden" name="fxloss_accno" value="[% fxloss_accno %]">
+[%- IF show_exchangerate %]
+        <tr>
+          <th align="right">Exchangerate</th>
+          <td>
+           [%- IF forex %]
+            [% LxERP.format_amount(exchangerate, 2) %]
+           [%- ELSE %]
+            <input name="exchangerate" size="10" value="[% HTML.escape(LxERP.format_amount(exchangerate)) %]">
+           [%- END %]
+          </td>
+        </tr>
+[%- END %]
+        <tr>
+          <th align="right" nowrap>Shipping Point</th>
+          <td colspan="3"><input size='35' name="shippingpoint" value="[% HTML.escape(shippingpoint) %]"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Ship via</th>
+          <td colspan="3"><input size='35' name="shipvia" value="[% HTML.escape(shipvia) %]"></td>
+        </tr>
+        <tr>
+          <th align="right">Transaction description</th>
+          <td colspan="3"><input size='35' name="transaction_description" value="[% HTML.escape(transaction_description) %]"></td>
+        </tr>
+      </table>
+    </td>
+    <td align="right" valign="top">
+      <table>
+        <tr>
+          <th align="right">Employee</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'employee_id',
+                 DATA       = ALL_EMPLOYEES,
+                 id_key     = 'id',
+                 label_sub  = 'sales_employee_labels' -%]
+          </td>
+        </tr>
+[%- IF ALL_SALESMEN.size %]
+        <tr>
+          <th align="right">Salesman</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'salesman_id',
+                 default    = salesman_id ? salesman_id : employee_id,
+                 DATA       = ALL_SALESMEN,
+                 id_key     = 'id',
+                 label_sub  = 'sales_employee_labels' -%]
+          </td>
+        </tr>
+[%- END %]
+
+[%- IF is_type_credit_note %]
+        <tr>
+          <th align="right" nowrap>Credit Note Number</th>
+          <td colspan="3"><input size='11' name="invnumber" value="[% HTML.escape(invnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right">Credit Note Date</th>
+          <td nowrap>
+            <input name="invdate" id="invdate" size="11" title="[% dateformat %]" value="[% invdate %]" onBlur="check_right_date_format(this)">
+            <input type="button" name="invdate_button" id="trigger1" value="button">
+          </td>
+        </tr>
+[%- ELSE %]
+        <tr>
+          <th align="right" nowrap>Invoice Number</th>
+          <td colspan="3"><input size='11' name="invnumber" value="[% HTML.escape(invnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right">Invoice Date</th>
+          <td nowrap>
+            <input name="invdate" id="invdate" size="11" title="[% dateformat %]" value="[% invdate %]" onBlur="check_right_date_format(this)">
+            <input type="button" name="invdate_button" id="trigger1" value="button">
+          </td>
+        </tr>
+        <tr>
+          <th align="right">Due Date</th>
+          <td width="13">
+            <input name="duedate" id="duedate" size="11" title="[% dateformat %]" value="[% duedate %]" onBlur="check_right_date_format(this)">
+            <input type="button" name="duedate_button" id="trigger2" value="button">
+          </td>
+        </tr>
+        <tr>
+        <th align="right" nowrap>Delivery Order Number</th>
+          <td colspan="3"><input size='11' name="donumber" value="[% HTML.escape(donumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right">Delivery Date</th>
+            <td width="13">
+              <input name="deliverydate" id="deliverydate" size="11" title="[% dateformat %]" value="[% deliverydate %]" onBlur="check_right_date_format(this)">
+              <input type="button" name="deliverydate_button" id="trigger3" value="button">
+            </td>
+        </tr>
+[%- END %]
+
+        <tr>
+          <th align="right" nowrap>Order Number</th>
+          <td colspan="3"><input size='11' name="ordnumber" value="[% HTML.escape(ordnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Order Date</th>
+          <td><input name="orddate" id="orddate" size="11" title="[% dateformat %]" value="[% orddate %]" onBlur="check_right_date_format(this)">
+          <input type="button" name="b_orddate" id="trigger_orddate" value="?"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Quotation Number</th>
+          <td colspan="3"><input size='11' name="quonumber" value="[% HTML.escape(quonumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Quotation Date</th>
+          <td><input name="quodate" id="quodate" size="11" title="[% dateformat %]" value="[% quodate %]" onBlur="check_right_date_format(this)">
+           <input type="button" name="b_quodate" id="trigger_quodate" value="?"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Customer Order Number</th>
+          <td colspan="3"><input size='11' name="cusordnumber" value="[% HTML.escape(cusordnumber) %]"></td>
+        </tr>
+        <tr>
+          <th align="right" nowrap>Project Number</th>
+          <td>
+            [%- INCLUDE 'generic/multibox.html'
+                 name       = 'globalproject_id',
+                 DATA       = ALL_PROJECTS,
+                 id_key     = 'id',
+                 label_key  = 'projectnumber',
+                 show_empty = 1,
+                 onChange   = "document.getElementById('update_button').click();" -%]
+          </td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+    </td>
+  </tr>
+  <tr>
+    <td>
+    </td>
+  </tr>
+  <script type="text/javascript" src="js/show_form_details.js"></script>
+  <script type="text/javascript" src="js/show_vc_details.js"></script>
+  <script type="text/javascript" src="js/show_history.js"></script>
+  <script type="text/javascript">
+   <!--
+     Calendar.setup({ inputField : "invdate",      ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger1" });
+[% IF !is_type_credit_note %]
+     Calendar.setup({ inputField : "duedate",      ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger2" });
+     Calendar.setup({ inputField : "deliverydate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger3" });
+[% END %]
+     Calendar.setup({ inputField : "orddate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger_orddate" });
+     Calendar.setup({ inputField : "quodate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger_quodate" });
+     $('document').ready(function(){
+[% IF resubmit && is_format_html %]
+       window.open('about:blank','Beleg');
+       document.invoice.target = 'Beleg';
+       document.invoice.submit();
+[% ELSIF resubmit %]
+       document.invoice.submit();
+[% ELSIF creditwarning != '' %]
+       alert('Credit Limit exceeded!!!');
+[% ELSE %]
+       focus();
+[% END %]
+       setupDateFormat('[% dateformat %]', 'Falsches Datumsformat!');
+       setupPoints('[% numberformat %]', 'wrongformat');
+     });
+   //-->
+  </script>
+
+  <input type="hidden" name="webdav" value="[% webdav %]">
index 2a44ce3..13ce08d 100644 (file)
                  allow_textbox = 1,
                  onChange      = "document.getElementById('update_button').click();" -%]
             <input type="button" value="<translate>Details (one letter abbreviation)</translate>" onclick="show_vc_details('[% HTML.escape(vc) %]')">
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[id="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
           </td>
           <input type="hidden" name="customer_klass" value="[% HTML.escape(customer_klass) %]">
           <input type="hidden" name="customer_id" value="[% HTML.escape(customer_id) %]">
   <script type="text/javascript" src="js/show_form_details.js"></script>
   <script type="text/javascript" src="js/show_vc_details.js"></script>
   <script type="text/javascript" src="js/show_history.js"></script>
-  <script type="text/javascript" src="js/jquery.js"></script>
   <script type="text/javascript">
    <!--
      Calendar.setup({ inputField : "invdate",      ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger1" });
index fff653b..ca19aaa 100644 (file)
@@ -91,7 +91,7 @@
       <td align="left" width="30%"><b>Dateiname</b></td>
       <td align="left" width="70%"><b>Webdavlink</b></td>
      </tr>
- [%- FOREACH file=WEBDAV %]
+ [%- FOREACH file = WEBDAV %]
       <tr>
         <td align="left">[% HTML.escape(file.name) %]</td>
         <td align="left"><a href="[% file.link %]">[% HTML.escape(file.type) %]</a></td>
index ba4bd1b..a42fd0e 100644 (file)
                            onChange      = "document.getElementById('update_button').click();" -%]
                       <input type="button" value="D" onclick="show_vc_details('[% HTML.escape(vc) %]')">
                     </td>
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[id="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
                   </tr>
 [%- IF ALL_CONTACTS.size %]
                   <tr>
index c175867..40f9e9a 100644 (file)
                            onChange      = "document.getElementById('update_button').click();" -%]
                       <input type="button" value="Details (one letter abbreviation)" onclick="show_vc_details('[% HTML.escape(vc) %]')">
                     </td>
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[id="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
                   </tr>
 [%- IF ALL_CONTACTS.size %]
                   <tr>
index 27ae250..0060854 100644 (file)
                            onChange      = "document.getElementById('update_button').click();" -%]
                       <input type="button" value="<translate>Details (one letter abbreviation)</translate>" onclick="show_vc_details('[% HTML.escape(vc) %]')">
                     </td>
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[id="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
                   </tr>
 [%- IF ALL_CONTACTS.size %]
                   <tr>
index fef6e59..a64c474 100644 (file)
@@ -28,3 +28,8 @@
   </table>
  </td>
 </tr>
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ic.pl', column => 'description', selector => '[name^="description_"]' },
+  { script => 'ic.pl', column => 'partnumber',  selector => '[name^="partnumber_"]'  },
+]
+%]
index e9be280..deebf64 100644 (file)
@@ -1,9 +1,11 @@
 [% USE HTML %]
 <tr>
  <td>
-  <input type="hidden" name="show_details" value="[% HTML.escape(show_details) %]">
-  <input type="checkbox" id="cb_show_details" onclick="show_form_details([% IF show_details %]0[% ELSE %]1[% END %]);"[%- IF show_details %] checked[% END %]>
+  <input type="checkbox" id="cb_show_details" name="show_details" [%- IF show_details %] checked[% END %]>
   <label for="cb_show_details">Show details</label><br>
+  <script type="text/javascript">
+   $('#cb_show_details').click(function(){ $('[id$="row2"]').toggle() });
+  </script>
   <table width="100%">
    <tr class="listheading">[% FOREACH header = HEADER %][% IF header.display %]
     <th align="left" nowrap width="[% header.width %]" class="listheading">[% header.value %]</th>[% END %][% END %]
@@ -17,7 +19,7 @@
      [% FOREACH hidden = row.HIDDENS %][% hidden.value %]
      [% END %]
 
-     <tr class="listrow[% loop.count % 2 %]" [% UNLESS show_details %]style="display:none;"[% END %]><td colspan="[% row.colspan %]">[% FOREACH row2 = row.ROW2 %]
+     <tr class="listrow[% loop.count % 2 %]" id="[% loop.count %].row2" [% UNLESS show_details %]style="display:none;"[% END %]><td colspan="[% row.colspan %]">[% FOREACH row2 = row.ROW2 %]
       [% IF row2.line_break %]<br/>[% END %]
       [% row2.value %][% END %]
      </td></tr>
@@ -26,3 +28,8 @@
   </table>
  </td>
 </tr>
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ic.pl', column => 'description', selector => '[name^="description_"]' },
+  { script => 'ic.pl', column => 'partnumber',  selector => '[name^="partnumber_"]'  },
+]
+%]
index 5f7df7d..18e99b5 100644 (file)
@@ -28,3 +28,8 @@
   </table>
  </td>
 </tr>
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ic.pl', column => 'description', selector => '[name^="description_"]' },
+  { script => 'ic.pl', column => 'partnumber',  selector => '[name^="partnumber_"]'  },
+]
+%]
index 0ebe9e0..9a70bf6 100644 (file)
                  show_empty    = 1,
                  allow_textbox = 1,
                  -%]
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[name="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
      </td>
     </tr>
 [%- IF ALL_DEPARTMENTS.size %]
index 5d3d103..fe150bd 100644 (file)
@@ -1,5 +1,6 @@
 [%- USE HTML %]
 [%- SET vclabel = vc == 'customer' ? 'Customer' : 'Vendor' %]
+[%- SET vcnumberlabel = vc == 'customer' ? 'Customer Number' : 'Vendor Number' %]
 <body>
 
 <form method="post" action="oe.pl">
                  show_empty    = 1,
                  allow_textbox = 1,
                  -%]
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[name="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
      </td>
     </tr>
 [%- IF ALL_DEPARTMENTS.size %]
         </td>
        </tr>
        <tr>
-        <td colspan=4 align=left><b>Customer</td>
+        <td colspan=4 align=left><b>[% HTML.escape(vclabel) %]</td>
        </tr>
        <tr>
+        <td>
+         <input name="l_vcnumber" id="l_vcnumber" class="checkbox" type="checkbox" value="Y">
+         <label for="l_vcnumber">[% HTML.escape(vcnumberlabel) %]</label>
+        </td>
         <td>
          <input name="l_country" id="l_country" class="checkbox" type="checkbox" value="Y">
          <label for="l_country">Country</label>
index cc0a2cb..e7fcc77 100644 (file)
                  show_empty    = 1,
                  allow_textbox = 1,
                  -%]
+[% INCLUDE 'generic/autocomplete.html', AUTOCOMPLETES => [
+  { script => 'ct.pl', column => 'name', selector => 'input[name="' _ vc _ '"]', params => { vc => vc } },
+]
+%]
      </td>
     </tr>
 [%- IF ALL_DEPARTMENTS.size %]
index b019a46..424a6da 100644 (file)
          [%- IF row.BORDER_BOTTOM %][%- SET tdclass = "$tdclass bottom_border" %][%- END %]
          [%- IF col.class %][%- SET tdclass = "$tdclass $col.class" %][%- END %]
          [%- IF tdclass %] class="[% tdclass %]"[%- END %]>
-       [%- IF col.raw_data %][%- col.raw_data %][%- END %]
-       [%- USE iterator(col.CELL_ROWS) %][%- FOREACH cell_row = iterator %]
-        [%- IF cell_row.data != '' %]
-         [%- IF cell_row.link %]<a href="[% cell_row.link %]">[%- END %]
-         [%- cell_row.data %]
-         [%- IF cell_row.link %]</a>[%- END %]
+       [%- IF col.raw_data %]
+        [%- col.raw_data %]
+       [%- ELSE %]
+        [%- USE iterator(col.CELL_ROWS) %][%- FOREACH cell_row = iterator %]
+         [%- IF cell_row.data != '' %]
+          [%- IF cell_row.link %]<a href="[% cell_row.link %]">[%- END %]
+          [%- cell_row.data %]
+          [%- IF cell_row.link %]</a>[%- END %]
+         [%- END %]
+        [%- UNLESS iterator.last %]<br>[%- END %]
         [%- END %]
-       [%- UNLESS iterator.last %]<br>[%- END %]
        [%- END %]
       </td>
       [%- END %]
diff --git a/templates/webpages/sepa/bank_transfer_add_en.html b/templates/webpages/sepa/bank_transfer_add_en.html
new file mode 100644 (file)
index 0000000..296305f
--- /dev/null
@@ -0,0 +1,97 @@
+[% USE HTML %][% USE LxERP %]
+<body>
+
+ <p><div class="listtop">[% title %]</div></p>
+
+ <form action="sepa.pl" method="post">
+  <p>
+   Please select the source bank account for the transfers:
+   <br>
+   [%- INCLUDE generic/multibox.html
+         name      = 'bank_account.id',
+         DATA      = BANK_ACCOUNTS,
+         id_key    = 'id',
+         label_sub = 'bank_account_label',
+   -%]
+  </p>
+
+  <p>
+   <table>
+    <tr>
+     <th class="listheading" align="center"><input type="checkbox" id="select_all"></th>
+     <th class="listheading">Vendor</th>
+     <th class="listheading">Invoice</th>
+     <th class="listheading" align="right">Amount</th>
+     <th class="listheading" align="right">Open amount</th>
+     <th class="listheading">Purpose</th>
+     <th class="listheading" align="right">Bank transfer amount</th>
+    </tr>
+
+    [%- FOREACH invoice = INVOICES %]
+     <input type="hidden" name="bank_transfers[+].ap_id" value="[% HTML.escape(invoice.id) %]">
+
+     <tr class="listrow[% loop.count % 2 %]">
+      <td align="center">
+       [%- IF invoice.vendor_bank_info_ok %]
+        <input type="checkbox" name="bank_transfers[].selected" value="1">
+       [%- END %]
+      </td>
+      <td>
+       [%- IF loop.first || (previous_vendorname != invoice.vendorname) %]
+        <a href="ct.pl?action=edit&db=vendor&id=[% HTML.url(invoice.vendor_id) %]&callback=[% HTML.url('sepa.pl?action=bank_transfer_add') %]">
+         [%- GET HTML.escape(invoice.vendorname);
+             SET previous_vendorname = invoice.vendorname;
+             IF !invoice.vendor_bank_info_ok;
+               GET ' <sup>(1)</sup>';
+               SET show_vendor_bank_info_footnote = '1';
+             END; -%]
+        </a>
+       [%- END -%]
+      </td>
+
+      <td>
+       <a href="[% IF invoice.invoice %]ir[% ELSE %]ap[% END %].pl?action=edit&id=[% HTML.escape(invoice.id) %]">
+        [% HTML.escape(invoice.invnumber) %]
+       </a>
+      </td>
+
+      <td align="right">[% LxERP.format_amount(invoice.invoice_amount, -2) %]</td>
+      <td align="right">[% LxERP.format_amount(invoice.open_amount, -2) %]</td>
+      <td><input name="bank_transfers[].reference" value="[% HTML.escape(invoice.invnumber) %]"></td>
+      <td align="right">
+       <input name="bank_transfers[].amount" value="[% LxERP.format_amount(invoice.invoice_amount, -2) %]" style="text-align: right">
+      </td>
+     </tr>
+    [%- END %]
+   </table>
+  </p>
+
+  [%- IF show_vendor_bank_info_footnote %]
+   <p>
+    <sup>(1)</sup> No bank information has been entered in this vendor's master data entry. You cannot create bank transfers unless you enter bank information.
+   </p>
+  [%- END %]
+
+  <p>
+   <input type="submit" class="submit" name="action_bank_transfer_create" value="Step 2">
+  </p>
+
+  <input type="hidden" name="action" value="dispatcher">
+ </form>
+
+ <script type="text/javascript" src="js/jquery.js"></script>
+ <script type="text/javascript">
+  <!--
+    $(document).ready(function() {
+      $("#select_all").click(function() {
+        var checked = $(this).attr('checked');
+        $('INPUT[name="bank_transfers[].selected"]').each(function() {
+          $(this).attr('checked', checked);
+        });
+      });
+    });
+    -->
+ </script>
+
+</body>
+</html>
diff --git a/templates/webpages/sepa/bank_transfer_create_en.html b/templates/webpages/sepa/bank_transfer_create_en.html
new file mode 100644 (file)
index 0000000..97e52a9
--- /dev/null
@@ -0,0 +1,118 @@
+[% USE HTML %][% USE LxERP %]
+<body>
+
+ [%- IF error_message %]
+ <p><div class="error_message">[% error_message %]</div></p>
+ [%- END %]
+
+ <p><div class="listtop">[% title %]</div></p>
+
+ <form action="sepa.pl" method="post">
+  <p>1. Please select the source bank account for the transfers:
+   <br>
+   [%- INCLUDE generic/multibox.html
+         name      = 'bank_account.id',
+         DATA      = BANK_ACCOUNTS,
+         id_key    = 'id',
+         label_sub = 'bank_account_label',
+   -%]
+  </p>
+
+  <p>
+   2. Please Check the bank information for each vendor:
+   <br>
+   <table>
+    <tr>
+     <th class="listheading">Vendor</th>
+     <th class="listheading">IBAN</th>
+     <th class="listheading">BIC</th>
+     <th class="listheading">Bank</th>
+    </tr>
+
+    [%- FOREACH vbi = VENDOR_BANK_INFO %]
+    <tr class="listrow[% loop.count % 1 %]">
+     <td>
+      <input type="hidden" name="vendor_bank_info[+].id" value="[% HTML.escape(vbi.id) %]">
+      <input type="hidden" name="vendor_bank_info[].name" value="[% HTML.escape(vbi.name) %]">
+      [% HTML.escape(vbi.name) %]
+     </td>
+     <td><input name="vendor_bank_info[].iban" size="20" value="[% HTML.escape(vbi.iban) %]"></td>
+     <td><input name="vendor_bank_info[].bic" size="20" value="[% HTML.escape(vbi.bic) %]"></td>
+     <td><input name="vendor_bank_info[].bank" size="30" value="[% HTML.escape(vbi.bank) %]"></td>
+    </tr>
+    [%- END %]
+   </table>
+  </p>
+
+  <p>
+   3. Enter the requested execution date or leave empty for the quickest possible execution:
+   <br>
+   <table>
+    <tr>
+     <th class="listheading">Vendor</th>
+     <th class="listheading">Invoice</th>
+     <th class="listheading" align="right">Amount</th>
+     <th class="listheading" align="right">Open amount</th>
+     <th class="listheading">Purpose</th>
+     <th class="listheading" align="right">Bank transfer amount</th>
+     <th class="listheading">Execution date</th>
+    </tr>
+
+    [%- FOREACH bank_transfer = BANK_TRANSFERS %]
+     <input type="hidden" name="bank_transfers[+].ap_id" value="[% HTML.escape(bank_transfer.id) %]">
+     <input type="hidden" name="bank_transfers[].vendor_id" value="[% HTML.escape(bank_transfer.vendor_id) %]">
+     <input type="hidden" name="bank_transfers[].selected" value="1">
+
+     <tr class="listrow[% loop.count % 2 %]">
+      <td>
+       [%- IF loop.first || (previous_vendorname != bank_transfer.vendorname) %]
+        <a href="ct.pl?action=edit&db=vendor&id=[% HTML.url(bank_transfer.vendor_id) %]&callback=[% HTML.url('sepa.pl?action=bank_transfer_add') %]">
+         [%- GET HTML.escape(bank_transfer.vendorname);
+             SET previous_vendorname = bank_transfer.vendorname; -%]
+        </a>
+       [%- END -%]
+      </td>
+
+      <td>
+       <a href="[% IF bank_transfer.invoice %]ir[% ELSE %]ap[% END %].pl?action=edit&id=[% HTML.escape(bank_transfer.id) %]">
+        [% HTML.escape(bank_transfer.invnumber) %]
+       </a>
+      </td>
+
+      <td align="right">[% LxERP.format_amount(bank_transfer.invoice_amount, -2) %]</td>
+      <td align="right">[% LxERP.format_amount(bank_transfer.open_amount, -2) %]</td>
+      <td><input name="bank_transfers[].reference" value="[% HTML.escape(bank_transfer.reference) %]"></td>
+      <td align="right"><input name="bank_transfers[].amount" value="[% LxERP.format_amount(bank_transfer.amount, -2) %]" style="text-align: right"></td>
+      <td nowrap>
+       <input name="bank_transfers[].requested_execution_date"
+              id="requested_execution_date_[% loop.count %]"
+              value="[% HTML.escape(bank_transfer.requested_execution_date) %]"
+              size="11">
+       <input type="button" name="requested_execution_date_[% loop.count %]_trigger" id="requested_execution_date_[% loop.count %]_trigger" value="?">
+      </td>
+     </tr>
+    [%- END %]
+   </table>
+  </p>
+
+  <p>
+   <input type="submit" class="submit" name="action_bank_transfer_create" value="Create bank transfer">
+  </p>
+
+  <input type="hidden" name="action" value="dispatcher">
+  <input type="hidden" name="confirmation" value="1">
+ </form>
+
+ <script type="text/javascript">
+  <!--
+    [%- FOREACH row = BANK_TRANSFERS %]
+     Calendar.setup({ inputField : "requested_execution_date_[% loop.count %]",
+                      ifFormat   : "[% myconfig_jsc_dateformat %]",
+                      align      : "BL",
+                      button     : "requested_execution_date_[% loop.count %]_trigger" });
+    [%- END %]
+    -->
+ </script>
+
+</body>
+</html>
diff --git a/templates/webpages/sepa/bank_transfer_created_en.html b/templates/webpages/sepa/bank_transfer_created_en.html
new file mode 100644 (file)
index 0000000..808286f
--- /dev/null
@@ -0,0 +1,27 @@
+[% USE HTML %]
+<body>
+
+ <p><div class="listtop">[% title %]</div></p>
+
+ <p>
+  The SEPA export has been created.
+ </p>
+
+ <p>
+  <ul>
+   <li>
+    <a href="sepa.pl?action=bank_transfer_download_sepa_xml&id=[% HTML.url(id) %]">
+     Download SEPA XML export file
+    </a>
+   </li>
+
+   <li>
+    <a href="sepa.pl?action=bank_transfer_list&l_open=1&l_not_executed=1">
+     List open SEPA exports
+    </a>
+   </li>
+  </ul>
+ </p>
+
+</body>
+</html>
diff --git a/templates/webpages/sepa/bank_transfer_edit_en.html b/templates/webpages/sepa/bank_transfer_edit_en.html
new file mode 100644 (file)
index 0000000..2637584
--- /dev/null
@@ -0,0 +1,140 @@
+[% USE HTML %]
+[% USE LxERP %]
+<body>
+
+ <p><div class="listtop">[% title %]: [% HTML.escape(export.ids.join(', ')) %]</div></p>
+
+ <form action="sepa.pl" method="post">
+  <input type="hidden" name="action" value="dispatcher">
+
+  <p>
+   <table>
+    <tr>
+     [%- IF show_post_payments_button %]
+      <th class="listheading" align="center"><input type="checkbox" id="select_all"></th>
+     [%- END %]
+     <th class="listheading">Invoice</th>
+     <th class="listheading">Vendor</th>
+     <th class="listheading" colspan="2">Source bank account</th>
+     <th class="listheading" colspan="2">Target bank account</th>
+     <th class="listheading" align="right">Amount</th>
+     <th class="listheading">Reference</th>
+     <th class="listheading" align="right">Requested execution date</th>
+     <th class="listheading" align="right">Execution date</th>
+    </tr>
+    <tr>
+     <th class="listheading" colspan="[% IF show_post_payments_button %]3[% ELSE %]2[% END %]">&nbsp;</th>
+     <th class="listheading">IBAN</th>
+     <th class="listheading">BIC</th>
+     <th class="listheading">IBAN</th>
+     <th class="listheading">BIC</th>
+     [%- IF show_post_payments_button %]
+      <th class="listheading" colspan="3">&nbsp;</th>
+      <th class="listheading">
+       <input name="set_all_execution_date" id="set_all_execution_date" size="11">
+       <input type="button" name="set_all_execution_date_trigger" id="set_all_execution_date_trigger" value="?">
+      </th>
+     [%- ELSE %]
+      <th class="listheading" colspan="4">&nbsp;</th>
+     [%- END %]
+    </tr>
+
+    [%- FOREACH item = export.items %]
+     <tr class="listrow[% loop.count % 2 %]">
+      [%- IF show_post_payments_button %]
+       <input type="hidden" name="items[+].id" value="[% HTML.escape(item.id) %]">
+       <input type="hidden" name="items[].sepa_export_id" value="[% HTML.escape(item.sepa_export_id) %]">
+       <td align="center">
+        [%- UNLESS item.executed %]
+        <input type="checkbox" name="items[].selected" value="1">
+        [%- END %]
+       </td>
+      [%- END %]
+      <td>
+       <a href="[% IF item.invoice %]ir[% ELSE %]ap[% END %].pl?action=edit&type=invoice&id=[% HTML.url(item.ap_id) %]">[% HTML.escape(item.invnumber) %]</a>
+      </td>
+      <td>[% HTML.escape(item.vendor_name) %]</td>
+      <td>[% HTML.escape(item.our_iban) %]</td>
+      <td>[% HTML.escape(item.our_bic) %]</td>
+      <td>[% HTML.escape(item.vendor_iban) %]</td>
+      <td>[% HTML.escape(item.vendor_bic) %]</td>
+      <td align="right">[% HTML.escape(LxERP.format_amount(item.amount, 2)) %]</td>
+      <td>[% HTML.escape(item.reference) %]</td>
+      <td align="right">[% HTML.escape(item.requested_execution_date) %]</td>
+      <td align="right" nowrap>
+       [%- IF item.executed %]
+        [% HTML.escape(item.execution_date) %]
+       [%- ELSIF item.export_closed %]
+        not executed
+       [%- ELSE %]
+        <input name="items[].execution_date" id="execution_date_[% loop.count %]" size="11"
+               value="[% IF item.requested_execution_date %][% HTML.escape(item.requested_execution_date) %][% ELSE %][% HTML.escape(current_date) %][% END %]">
+        <input type="button" name="execution_date_[% loop.count %]_trigger" id="execution_date_[% loop.count %]_trigger" value="?">
+       [%- END %]
+      </td>
+     </tr>
+    [%- END %]
+   </table>
+  </p>
+
+  <p><hr></p>
+
+  [%- IF show_post_payments_button %]
+  <p>
+   <input type="submit" class="submit" name="action_bank_transfer_post_payments" value="Post payments">
+  </p>
+
+  <script type="text/javascript" src="js/jquery.js"></script>
+  <script type="text/javascript">
+   <!--
+    function set_all_execution_date_fields() {
+      var new_date = $('#set_all_execution_date').attr('value');
+      $('INPUT[name="items[].execution_date"]').each(function() {
+        $(this).attr('value', new_date);
+      });
+    }
+
+    $(document).ready(function() {
+      $("#select_all").click(function() {
+        var checked = $(this).attr('checked');
+        $('INPUT[name="items[].selected"]').each(function() {
+          $(this).attr('checked', checked);
+        });
+      });
+
+      [%- IF show_post_payments_button %]
+       Calendar.setup({ inputField : "set_all_execution_date",
+                        ifFormat   : "[% myconfig_jsc_dateformat %]",
+                        align      : "BL",
+                        button     : "set_all_execution_date_trigger",
+                        onUpdate   : set_all_execution_date_fields });
+
+       [%- FOREACH item = export.items %]
+        [%- IF !item.executed %]
+         Calendar.setup({ inputField : "execution_date_[% loop.count %]",
+                          ifFormat   : "[% myconfig_jsc_dateformat %]",
+                          align      : "BL",
+                          button     : "execution_date_[% loop.count %]_trigger" });
+        [%- END %]
+       [%- END %]
+      [%- END %]
+    });
+     -->
+  </script>
+
+  [%- ELSE %]
+  <p>
+   <input type="submit" class="submit" name="action_bank_transfer_payment_list_as_pdf" value="Payment list as PDF">
+  </p>
+
+   [%- FOREACH item = export.items %]
+    [%- IF item.executed %]
+     <input type="hidden" name="items[+].id" value="[% HTML.escape(item.id) %]">
+     <input type="hidden" name="items[].export_id" value="[% HTML.escape(item.export_id) %]">
+    [%- END %]
+   [%- END %]
+  [%- END %]
+ </form>
+
+</body>
+</html>
diff --git a/templates/webpages/sepa/bank_transfer_list_bottom_en.html b/templates/webpages/sepa/bank_transfer_list_bottom_en.html
new file mode 100644 (file)
index 0000000..057d4b7
--- /dev/null
@@ -0,0 +1,28 @@
+[% USE HTML %]
+
+[%- IF show_buttons %]
+ <input type="hidden" name="action" value="dispatcher">
+ <input type="hidden" name="mode" value="multi">
+
+ <p>
+  <input type="submit" class="submit" name="action_bank_transfer_download_sepa_xml" value="SEPA XML download">
+  <input type="submit" class="submit" name="action_bank_transfer_edit" value="Post payments">
+  <input type="submit" class="submit" name="action_bank_transfer_mark_as_closed_step1" value="Mark as closed">
+ </p>
+
+ <script type="text/javascript" src="js/jquery.js"></script>
+ <script type="text/javascript">
+  <!--
+    $(document).ready(function() {
+      $("#select_all").click(function() {
+        var checked = $(this).attr('checked');
+        $('INPUT[name="exports[].selected"]').each(function() {
+          $(this).attr('checked', checked);
+        });
+      });
+    });
+    -->
+ </script>
+[%- END %]
+
+</form>
diff --git a/templates/webpages/sepa/bank_transfer_list_top_en.html b/templates/webpages/sepa/bank_transfer_list_top_en.html
new file mode 100644 (file)
index 0000000..f17b456
--- /dev/null
@@ -0,0 +1 @@
+<form action="sepa.pl" method="post">
diff --git a/templates/webpages/sepa/bank_transfer_mark_as_closed_step1_en.html b/templates/webpages/sepa/bank_transfer_mark_as_closed_step1_en.html
new file mode 100644 (file)
index 0000000..524965b
--- /dev/null
@@ -0,0 +1,29 @@
+[% USE HTML %]
+<body>
+
+ <p><div class="listtop">[% title %]</div></p>
+
+ <form action="sepa.pl" method="post">
+  <p>
+   Do you really want to close the following SEPA exports? No payment will be recorded for bank transfers that haven't been marked as executed yet.
+  </p>
+
+  <p>
+   SEPA exports:
+   [%- FOREACH id = OPEN_EXPORT_IDS %]
+    [%- UNLESS loop.first %], [%- END %]
+    <input type="hidden" name="open_export_ids[]" value="[% HTML.escape(id) %]">
+    <a href="sepa.pl?action=bank_transfer_edit&id=[% HTML.url(id) %]">[% HTML.escape(id) %]</a>
+   [%- END %]
+  </p>
+
+  <p>
+   <input type="submit" class="submit" name="action_bank_transfer_mark_as_closed_step2" value="Mark as closed">
+   <input type="button" class="submit" value="Back" onclick="history.back()">
+  </p>
+
+  <input type="hidden" name="action" value="dispatcher">
+ </form>
+
+</body>
+</html>
diff --git a/templates/webpages/sepa/bank_transfer_search_en.html b/templates/webpages/sepa/bank_transfer_search_en.html
new file mode 100644 (file)
index 0000000..9e8ca06
--- /dev/null
@@ -0,0 +1,125 @@
+[% USE HTML %]
+<body>
+
+ <p><div class="listtop">[% title %]</div></p>
+
+ <form action="sepa.pl" method="post">
+  <p>
+   <table>
+    <tr>
+     <td align="right">Vendor</td>
+     <td><input name="f_vendor"></td>
+    </tr>
+
+    <tr>
+     <td align="right">Invoice number</td>
+     <td><input name="f_invnumber"></td>
+    </tr>
+
+    <tr>
+     <td align="right">Export date from</td>
+     <td>
+      <input name="f_export_date_from" id="f_export_date_from" size="11">
+      <input type="button" name="f_export_date_from_trigger" id="f_export_date_from_trigger" value="?">
+      to (time)
+      <input name="f_export_date_to" id="f_export_date_to" size="11">
+      <input type="button" name="f_export_date_to_trigger" id="f_export_date_to_trigger" value="?">
+     </td>
+    </tr>
+
+    <tr>
+     <td align="right">Requested execution date from</td>
+     <td>
+      <input name="f_requested_execution_date_from" id="f_requested_execution_date_from" size="11">
+      <input type="button" name="f_requested_execution_date_from_trigger" id="f_requested_execution_date_from_trigger" value="?">
+      to (time)
+      <input name="f_requested_execution_date_to" id="f_requested_execution_date_to" size="11">
+      <input type="button" name="f_requested_execution_date_to_trigger" id="f_requested_execution_date_to_trigger" value="?">
+     </td>
+    </tr>
+
+    <tr>
+     <td align="right">Execution date from</td>
+     <td>
+      <input name="f_execution_date_from" id="f_execution_date_from" size="11">
+      <input type="button" name="f_execution_date_from_trigger" id="f_execution_date_from_trigger" value="?">
+      to (time)
+      <input name="f_execution_date_to" id="f_execution_date_to" size="11">
+      <input type="button" name="f_execution_date_to_trigger" id="f_execution_date_to_trigger" value="?">
+     </td>
+    </tr>
+
+    <tr>
+     <td align="right" valign="top">Include in Report</td>
+     <td valign="top">
+      <table>
+       <tr>
+        <td>
+         <input type="checkbox" name="l_open" id="l_open" value="1" checked>
+         <label for="l_open">open</label>
+        </td>
+
+        <td>
+         <input type="checkbox" name="l_closed" id="l_closed" value="1">
+         <label for="l_closed">closed</label>
+        </td>
+       </tr>
+
+       <tr>
+        <td>
+         <input type="checkbox" name="l_not_executed" id="l_not_executed" value="1" checked>
+         <label for="l_not_executed">not yet executed</label>
+        </td>
+
+        <td>
+         <input type="checkbox" name="l_executed" id="l_executed" value="1" checked>
+         <label for="l_executed">executed</label>
+        </td>
+       </tr>
+      </table>
+     </td>
+    </tr>
+
+   </table>
+  </p>
+
+  <p>
+   <input type="hidden" name="action" value="dispatcher">
+   <input type="submit" class="submit" name="action_bank_transfer_list" value="Continue">
+  </p>
+ </form>
+
+ <script type="text/javascript">
+  <!--
+     Calendar.setup({ inputField : "f_export_date_from",
+                      ifFormat   : "[% myconfig_jsc_dateformat %]",
+                      align      : "BL",
+                      button     : "f_export_date_from_trigger" });
+     Calendar.setup({ inputField : "f_export_date_to",
+                      ifFormat   : "[% myconfig_jsc_dateformat %]",
+                      align      : "BL",
+                      button     : "f_export_date_to_trigger" });
+
+     Calendar.setup({ inputField : "f_requested_execution_date_from",
+                      ifFormat   : "[% myconfig_jsc_dateformat %]",
+                      align      : "BL",
+                      button     : "f_requested_execution_date_from_trigger" });
+     Calendar.setup({ inputField : "f_requested_execution_date_to",
+                      ifFormat   : "[% myconfig_jsc_dateformat %]",
+                      align      : "BL",
+                      button     : "f_requested_execution_date_to_trigger" });
+
+     Calendar.setup({ inputField : "f_execution_date_from",
+                      ifFormat   : "[% myconfig_jsc_dateformat %]",
+                      align      : "BL",
+                      button     : "f_execution_date_from_trigger" });
+     Calendar.setup({ inputField : "f_execution_date_to",
+                      ifFormat   : "[% myconfig_jsc_dateformat %]",
+                      align      : "BL",
+                      button     : "f_execution_date_to_trigger" });
+
+    -->
+ </script>
+
+</body>
+</html>
index 2bc6d1f..624d292 100644 (file)
@@ -15,8 +15,8 @@
   <tr>
     <td>
       <table>
-       <tr>
-         <td width="50%" align="left" valign="top">
+        <tr>
+          <td width="50%" align="left" valign="top">
             <fieldset>
             <legend>
             <b>Firma</b>
index 95991cf..d87ab5d 100644 (file)
@@ -15,8 +15,8 @@
   <tr>
     <td>
       <table>
-       <tr>
-         <td width="50%" align="left" valign="top">
+        <tr>
+          <td width="50%" align="left" valign="top">
             <fieldset>
             <legend>
             <b>Company</b>
index d67fbdc..0aab4a8 100644 (file)
@@ -15,8 +15,8 @@
   <tr>
     <td>
       <table>
-       <tr>
-         <td width="50%" align="left" valign="top">
+        <tr>
+          <td width="50%" align="left" valign="top">
             <fieldset>
             <legend>
             <b><translate>Company</translate></b>
diff --git a/templates/webpages/webdav/_list_en.html b/templates/webpages/webdav/_list_en.html
new file mode 100644 (file)
index 0000000..3432fc6
--- /dev/null
@@ -0,0 +1,22 @@
+
+[%- IF webdav %]
+  <tr>
+   <td><hr size="3" noshade></td>
+  </tr>
+  <tr>
+   <th class="listtop" align="left">Dokumente im Webdav-Repository</th>
+  </tr>
+   <table width="100%">
+    <tr>
+     <td align="left" width="30%"><b>Dateiname</b></td>
+     <td align="left" width="70%"><b>Webdavlink</b></td>
+    </tr>
+ [%- FOREACH file = WEBDAV %]
+    <tr>
+     <td align="left">[% file.name %]</td>
+     <td align="left"><a href="[% file.link %]">[% file.type %]</a></td>
+    </tr>
+ [%- END %]
+   </table>
+  </tr>
+[% END %]