Die Funktionen zum Bearbeiten von HTML-, LaTeX-Vorlagen und Stylesheets neu geschrieben.
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 19 Apr 2007 09:08:26 +0000 (09:08 +0000)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 19 Apr 2007 09:08:26 +0000 (09:08 +0000)
SL/AM.pm
SL/Form.pm
bin/mozilla/am.pl
css/lx-office-erp.css
locale/de/all
locale/de/am
locale/de/menu
locale/de/menunew
menu.ini

index fec1b03..323556b 100644 (file)
--- a/SL/AM.pm
+++ b/SL/AM.pm
@@ -1220,36 +1220,85 @@ sub delete_payment {
   $main::lxdebug->leave_sub();
 }
 
-sub load_template {
+
+sub prepare_template_filename {
   $main::lxdebug->enter_sub();
 
-  my ($self, $form) = @_;
+  my ($self, $myconfig, $form) = @_;
+
+  my ($filename, $display_filename);
+
+  if ($form->{type} eq "stylesheet") {
+    $filename = "css/$myconfig->{stylesheet}";
+    $display_filename = $myconfig->{stylesheet};
+
+  } else {
+    $filename = $form->{formname};
+
+    if ($form->{language}) {
+      my ($id, $template_code) = split(/--/, $form->{language});
+      $filename .= "_${template_code}";
+    }
 
-  open(TEMPLATE, "$form->{file}") or $form->error("$form->{file} : $!");
+    if ($form->{printer}) {
+      my ($id, $template_code) = split(/--/, $form->{printer});
+      $filename .= "_${template_code}";
+    }
 
-  while (<TEMPLATE>) {
-    $form->{body} .= $_;
+    $filename .= "." . ($form->{format} eq "html" ? "html" : "tex");
+    $filename =~ s|.*/||;
+    $display_filename = $filename;
+    $filename = "$myconfig->{templates}/$filename";
   }
 
-  close(TEMPLATE);
+  $main::lxdebug->leave_sub();
+
+  return ($filename, $display_filename);
+}
+
+
+sub load_template {
+  $main::lxdebug->enter_sub();
+
+  my ($self, $filename) = @_;
+
+  my ($content, $lines) = ("", 0);
+
+  local *TEMPLATE;
+
+  if (open(TEMPLATE, $filename)) {
+    while (<TEMPLATE>) {
+      $content .= $_;
+      $lines++;
+    }
+    close(TEMPLATE);
+  }
 
   $main::lxdebug->leave_sub();
+
+  return ($content, $lines);
 }
 
 sub save_template {
   $main::lxdebug->enter_sub();
 
-  my ($self, $form) = @_;
+  my ($self, $filename, $content) = @_;
 
-  open(TEMPLATE, ">$form->{file}") or $form->error("$form->{file} : $!");
+  local *TEMPLATE;
 
-  # strip
-  $form->{body} =~ s/\r\n/\n/g;
-  print TEMPLATE $form->{body};
+  my $error = "";
 
-  close(TEMPLATE);
+  if (open(TEMPLATE, ">$filename")) {
+    $content =~ s/\r\n/\n/g;
+    print(TEMPLATE $content);
+    close(TEMPLATE);
+  } else {
+    $error = $!;
+  }
 
   $main::lxdebug->leave_sub();
+
+  return $error;
 }
 
 sub save_preferences {
index 85370dd..1912f75 100644 (file)
@@ -1469,7 +1469,7 @@ sub _get_printers {
 
   $key = "all_printers" unless ($key);
 
-  my $query = qq|SELECT id, printer_description, printer_command FROM printers|;
+  my $query = qq|SELECT id, printer_description, printer_command, template_code FROM printers|;
 
   $self->{$key} = selectall_hashref_query($self, $dbh, $query);
 
@@ -1538,6 +1538,20 @@ sub _get_business_types {
   $main::lxdebug->leave_sub();
 }
 
+sub _get_languages {
+  $main::lxdebug->enter_sub();
+
+  my ($self, $dbh, $key) = @_;
+
+  $key = "all_languages" unless ($key);
+
+  my $query = qq|SELECT * FROM language ORDER BY id|;
+
+  $self->{$key} = selectall_hashref_query($self, $dbh, $query);
+
+  $main::lxdebug->leave_sub();
+}
+
 sub get_lists {
   $main::lxdebug->enter_sub();
 
@@ -1568,6 +1582,10 @@ sub get_lists {
     $self->_get_printers($dbh, $params{"printers"});
   }
 
+  if ($params{"languages"}) {
+    $self->_get_languages($dbh, $params{"languages"});
+  }
+
   if ($params{"charts"}) {
     $self->_get_charts($dbh, $params{"charts"});
   }
index 0ce8c2e..e34957f 100644 (file)
@@ -47,10 +47,32 @@ require "$form->{path}/common.pl";
 # end of main
 
 sub add    { &{"add_$form->{type}"} }
-sub edit   { &{"edit_$form->{type}"} }
-sub save   { &{"save_$form->{type}"} }
 sub delete { &{"delete_$form->{type}"} }
 
+sub display {
+  if ($form->{display_nextsub}) {
+    &{ $form->{display_nextsub} }();
+  } else {
+    &{ $form->{nextsub} }();
+  }
+}
+
+sub save {
+  if ($form->{save_nextsub}) {
+    &{ $form->{save_nextsub} }();
+  } else {
+    &{ $form->{nextsub} }();
+  }
+}
+
+sub edit {
+  if ($form->{edit_nextsub}) {
+    &{ $form->{edit_nextsub} }();
+  } else {
+    &{ "edit_$form->{type}" }();
+  }
+}
+
 sub add_account {
   $lxdebug->enter_sub();
 
@@ -2412,97 +2434,218 @@ sub swap_payment_terms {
   $lxdebug->leave_sub();
 }
 
-sub display_stylesheet {
+sub display_template {
   $lxdebug->enter_sub();
 
-  $form->{file} = "css/$myconfig{stylesheet}";
-  &display_form;
+  $form->{edit} = 0;
+  display_template_form();
 
   $lxdebug->leave_sub();
 }
 
-sub display_form {
+sub edit_template {
   $lxdebug->enter_sub();
 
-  $form->{file} =~ s/^(.:)*?\/|\.\.\///g;
-  $form->{file} =~ s/^\/*//g;
-  $form->{file} =~ s/$userspath//;
+  $form->{edit} = 1;
+  display_template_form();
 
-  $form->error("$!: $form->{file}") unless -f $form->{file};
+  $lxdebug->leave_sub();
+}
 
-  AM->load_template(\%$form);
+sub save_template {
+  $lxdebug->enter_sub();
 
-  $form->{title} = $form->{file};
+  $form->isblank("formname", $locale->text("You're not editing a file.")) unless ($form->{type} eq "stylesheet");
 
-  # if it is anything but html
-  if ($form->{file} !~ /\.html$/) {
-    $form->{body} = "<pre>\n$form->{body}\n</pre>";
+  my ($filename) = AM->prepare_template_filename(\%myconfig, $form);
+  if (my $error = AM->save_template($filename, $form->{content})) {
+    $form->error(sprintf($locale->text("Saving the file '%s' failed. OS error message: %s"), $filename, $error));
   }
 
-  $form->header;
+  $form->{edit} = 0;
+  display_template_form();
 
-  print qq|
-<body>
+  $lxdebug->leave_sub();
+}
+
+sub display_template_form {
+  $lxdebug->enter_sub();
 
-$form->{body}
+  $form->{formname} =~ s|.*/||;
+  my $format = $form->{format} eq "html" ? "html" : "tex";
 
-<form method=post action=$form->{script}>
+  my $title = $form->{type} eq "stylesheet" ? $locale->text("Edit the stylesheet") : $locale->text("Edit templates");
+  $form->{title} = $title;
 
-<input name=file type=hidden value=$form->{file}>
-<input name=type type=hidden value=template>
+  my $edit_options;
 
-<input type=hidden name=path value=$form->{path}>
-<input type=hidden name=login value=$form->{login}>
-<input type=hidden name=password value=$form->{password}>
+  my @hidden = qw(login path password type format);
 
-<input name=action type=submit class=submit value="|
-    . $locale->text('Edit') . qq|">
+  if (($form->{type} ne "stylesheet") && !$form->{edit}) {
+    $edit_options = "<p>";
 
-  </form>
+    my %formname_setup =
+      (
+       "balance_sheet" => { "translation" => $locale->text('Balance Sheet'), "html" => 1 },
+       "bin_list" => $locale->text('Bin List'),
+       "bwa" => { "translation" => $locale->text('BWA'), "html" => 1 },
+       "check" => { "translation" => $locale->text('Check'), "html" => 1 },
+       "credit_note" => $locale->text('Credit Note'),
+       "income_statement" => { "translation" => $locale->text('Income Statement'), "html" => 1 },
+       "invoice" => $locale->text('Invoice'),
+       "packing_list" => $locale->text('Packing List'),
+       "pick_list" => $locale->text('Pick List'),
+       "proforma" => $locale->text('Proforma Invoice'),
+       "purchase_order" => $locale->text('Purchase Order'),
+       "receipt" => { "translation" => $locale->text('Receipt'), "tex" => 1 },
+       "request_quotation" => $locale->text('RFQ'),
+       "sales_order" => $locale->text('Confirmation'),
+       "sales_quotation" => $locale->text('Quotation'),
+       "statement" => $locale->text('Statement'),
+       "storno_invoice" => $locale->text('Storno Invoice'),
+       "storno_packing_list" => $locale->text('Storno Packing List'),
+       "ustva-2004" => { "translation" => $locale->text("USTVA 2004"), "tex" => 1 },
+       "ustva-2005" => { "translation" => $locale->text("USTVA 2005"), "tex" => 1 },
+       "ustva-2006" => { "translation" => $locale->text("USTVA 2006"), "tex" => 1 },
+       "ustva-2007" => { "translation" => $locale->text("USTVA 2007"), "tex" => 1 },
+       "ustva" => $locale->text("USTVA"),
+       "zahlungserinnerung" => $locale->text('Payment Reminder'),
+      );
 
-</body>
-</html>
+    my (@values, %labels, $file, $setup);
+
+    while (($file, $setup) = each(%formname_setup)) {
+      next unless (!ref($setup) || $setup->{$format});
+
+      push(@values, $file);
+      $labels{$file} = ref($setup) ? $setup->{translation} : $setup;
+    }
+    @values = sort({ $labels{$a} cmp $labels{$b} } @values);
+
+    $edit_options .=
+      $locale->text("Template") . " " .
+      NTI($cgi->popup_menu("-name" => "formname", "-default" => $form->{formname},
+                           "-values" => \@values, "-labels" => \%labels));
+
+    $form->get_lists("printers" => "ALL_PRINTERS",
+                     "languages" => "ALL_LANGUAGES");
+
+    @values = ("");
+    %labels = ();
+
+    foreach my $item (@{ $form->{ALL_LANGUAGES} }) {
+      next unless ($item->{template_code});
+      my $key = "$item->{id}--$item->{template_code}";
+      push(@values, $key);
+      $labels{$key} = $item->{description};
+    }
+
+    if (1 != scalar(@values)) {
+      $edit_options .=
+        " " . $locale->text("Language") . " " .
+        NTI($cgi->popup_menu("-name" => "language", "-default" => $form->{language},
+                             "-values" => \@values, "-labels" => \%labels));
+    }
+
+    @values = ("");
+    %labels = ();
+
+    foreach my $item (@{ $form->{ALL_PRINTERS} }) {
+      next unless ($item->{template_code});
+      my $key = "$item->{id}--$item->{template_code}";
+      push(@values, $key);
+      $labels{$key} = $item->{printer_description};
+    }
+
+    if (1 != scalar(@values)) {
+      $edit_options .=
+        " " . $locale->text("Printer") . " " .
+        NTI($cgi->popup_menu("-name" => "printer", "-default" => $form->{printer},
+                             "-values" => \@values, "-labels" => \%labels));
+    }
+
+    $edit_options .= qq|
+
+  <input type="hidden" name="display_nextsub" value="display_template">
+
+  <input name="action" type="submit" class="submit" value="|
+    . $locale->text('Display') . qq|">
+
+ </p>
+
+ <hr>
 |;
 
-  $lxdebug->leave_sub();
-}
+  } else {
+    push(@hidden, qw(formname language printer));
+  }
 
-sub edit_template {
-  $lxdebug->enter_sub();
+  if ($form->{formname} || ($form->{type} eq "stylesheet")) {
+    my ($filename, $display_filename) = AM->prepare_template_filename(\%myconfig, $form);
+    my ($content, $lines) = AM->load_template($filename);
 
-  AM->load_template(\%$form);
+    $body = qq|
+|;
+
+    if ($form->{edit}) {
+      $form->{fokus} = "Form.content";
+      $body = qq|\n<p><div class="listtop">| . $locale->text('Edit file') . " '" . H($display_filename) . qq|'</div></p>\n<p>|
+        . NTI($cgi->textarea("-name" => "content",
+                             "-id" => "content",
+                             "-default" => $content,
+                             "-columns" => 100,
+                             "-rows" => 25))
+        . qq|</p>
+
+ <p>
+  <input type="hidden" name="save_nextsub" value="save_template">
+
+  <input type="submit" name="action" value="| . $locale->text('Save') . qq|">
+ </p>
+|;
+
+    } else {
+      $content = "\n\n" unless ($content);
+
+      $body = qq|
+  <p><div class="listtop">| . $locale->text('Display file') . " '" . H($display_filename) . qq|'</div></p>
 
-  $form->{title} = $locale->text('Edit Template');
+  <input type="hidden" name="edit_nextsub" value="edit_template">
 
-  # convert &nbsp to &amp;nbsp;
-  $form->{body} =~ s/&nbsp;/&amp;nbsp;/gi;
+  <p><input name="action" type="submit" class="submit" value="| . $locale->text('Edit') . qq|"></p>
+
+  <p>
+    <pre class="filecontent">| . H($content) . qq|</pre>
+  </p>
+|;
+
+      if ($lines > 25) {
+        $body .= qq|
+  <input name="action" type="submit" class="submit" value="|
+    . $locale->text('Edit') . qq|">
+|;
+      }
+    }
+  }
 
   $form->header;
 
   print qq|
 <body>
 
-<form method=post action=$form->{script}>
-
-<input name=file type=hidden value=$form->{file}>
-<input name=type type=hidden value=template>
-
-<input type=hidden name=path value=$form->{path}>
-<input type=hidden name=login value=$form->{login}>
-<input type=hidden name=password value=$form->{password}>
+<div class="listheading">$title</div>
 
-<input name=callback type=hidden value="$form->{script}?action=display_form&file=$form->{file}&path=$form->{path}&login=$form->{login}&password=$form->{password}">
+<form method="post" name="Form" action="am.pl">
 
-<textarea name=body rows=25 cols=70>
-$form->{body}
-</textarea>
+|;
+  $form->hide_form(@hidden);
 
-<br>
-<input type=submit class=submit name=action value="|
-    . $locale->text('Save') . qq|">
+  print qq|
+$edit_options
 
-  </form>
+$body
 
+</form>
 
 </body>
 </html>
@@ -2511,15 +2654,6 @@ $form->{body}
   $lxdebug->leave_sub();
 }
 
-sub save_template {
-  $lxdebug->enter_sub();
-
-  AM->save_template(\%$form);
-  $form->redirect($locale->text('Template saved!'));
-
-  $lxdebug->leave_sub();
-}
-
 sub config {
   $lxdebug->enter_sub();
 
index 17d0265..ad06530 100644 (file)
@@ -200,3 +200,8 @@ h2.error {
   }
 }
 
+.filecontent {
+  border: 1px solid blue;
+  padding-left: 2px;
+  padding-right: 2px;
+}
index d6d032c..92e6e19 100644 (file)
@@ -370,6 +370,8 @@ aktualisieren wollen?',
   'Dimension units'             => 'Ma&szlig;einheiten',
   'Directory'                   => 'Verzeichnis',
   'Discount'                    => 'Rabatt',
+  'Display'                     => 'Anzeigen',
+  'Display file'                => 'Datei anzeigen',
   'Done'                        => 'Fertig',
   'Draft saved.'                => 'Entwurf gespeichert.',
   'Drawing'                     => 'Zeichnung',
@@ -437,14 +439,16 @@ gestartet',
   'Edit Service'                => 'Dienstleistung bearbeiten',
   'Edit Storno Credit Note'     => 'Storno Gutschrift bearbeiten',
   'Edit Storno Invoice'         => 'Stornorechnung bearbeiten',
-  'Edit Template'               => 'Vorlage bearbeiten',
   'Edit User'                   => 'Benutzerdaten bearbeiten',
   'Edit Vendor'                 => 'Lieferant editieren',
   'Edit Vendor Invoice'         => 'Einkaufsrechnung bearbeiten',
+  'Edit file'                   => 'Datei bearbeiten',
+  'Edit templates'              => 'Vorlage bearbeiten',
   'Edit the purchase_order'     => 'Bearbeiten des Lieferantenauftrags',
   'Edit the request_quotation'  => 'Bearbeiten der Preisanfrage',
   'Edit the sales_order'        => 'Bearbeiten des Auftrags',
   'Edit the sales_quotation'    => 'Bearbeiten des Angebots',
+  'Edit the stylesheet'         => 'Stilvorlage bearbeiten',
   'Edit units'                  => 'Einheiten bearbeiten',
   'Eingangsrechnungnummer'      => 'Eingansrechungsnummer',
   'Employee'                    => 'Bearbeiter',
@@ -768,6 +772,7 @@ gestartet',
   'Password changed!'           => 'Passwort geändert!',
   'Payables'                    => 'Verbindlichkeiten',
   'Payment'                     => 'Zahlungsausgang',
+  'Payment Reminder'            => 'Zahlungserinnerung',
   'Payment Terms'               => 'Zahlungskonditionen',
   'Payment Terms missing in row ' => 'Zahlungsfrist fehlt in Zeile ',
   'Payment Terms saved!'        => 'Zahlungskonditionen gespeichert!',
@@ -908,6 +913,7 @@ gestartet',
   'Save and RFQ'                => 'Speichern und Lieferantenanfrage',
   'Save as new'                 => 'als neu speichern',
   'Save draft'                  => 'Entwurf speichern',
+  'Saving the file \'%s\' failed. OS error message: %s' => 'Das Speichern der Datei \'%s\' schlug fehl. Fehlermeldung des Betriebssystems: %s',
   'Screen'                      => 'Bildschirm',
   'Search Dunning'              => 'Mahnung suchen',
   'Select'                      => 'auswählen',
@@ -1003,7 +1009,6 @@ gestartet',
   'Template'                    => 'Druckvorlage',
   'Template Code'               => 'Vorlagenkürzel',
   'Template Code missing!'      => 'Vorlagenkürzel fehlt!',
-  'Template saved!'             => 'Schablone gespeichert!',
   'Templates'                   => 'Vorlagen',
   'Terms missing in row '       => '+Tage fehlen in Zeile ',
   'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'Das Feld \'tag\' darf nur aus alphanumerischen Zeichen und den Zeichen - _ ( ) bestehen.',
@@ -1069,14 +1074,16 @@ gestartet',
   'Trial Balance'               => 'Saldenbilanz',
   'Type'                        => 'Typ',
   'Type of Business'            => 'Kunden-/Lieferantentyp',
+  'USTVA'                       => '',
+  'USTVA 2004'                  => '',
+  'USTVA 2005'                  => '',
+  'USTVA 2006'                  => '',
+  'USTVA 2007'                  => '',
   'USTVA-Hint: Method'          => 'Wenn Sie Ist-Versteuert sind, wählen Sie die Einnahmen-/Überschuß-Rechnung aus. Sind Sie Soll-Versteuert und bilanzverpflichtet, dann wählen Sie Bilanz aus.',
   'USTVA-Hint: Tax Authoritys'  => 'Bitte das Bundesland UND die Stadt bzw. den Einzugsbereich Ihres zuständigen Finanzamts auswählen.',
   'USt-IdNr.'                   => 'USt-IdNr.',
   'UStVA'                       => 'UStVA',
   'UStVA (PDF-Dokument)'        => 'UStVa als PDF-Dokument',
-  'UStVA 2004'                  => '',
-  'UStVA 2005'                  => '',
-  'UStVA 2006'                  => '',
   'UStVA-Nr. 35'                => 'Kz. 35',
   'UStVA-Nr. 36'                => 'Kz. 36',
   'UStVA-Nr. 39'                => 'Kz. 37',
@@ -1194,6 +1201,7 @@ gestartet',
   'You have to chose which unit to save for each of them.' => 'Sie m&uuml;ssen f&uuml;r jeden Artikel die neue Einheit ausw&auml;hlen.',
   'You have to create new Buchungsgruppen for all the combinations of inventory, income and expense accounts that have been used already.' => 'Sie m&uuml;ssen neue Buchungsgruppen f&uuml;r alle Kombinationen aus Inventar-, Erl&ouml;s- und Aufwandskonto, die bereits benutzt wurden.',
   'You must enter a host and port for local and remote connections!' => '"Rechner" und "Port" müssen für lokale und externe Verbindungen eingetragen werden!',
+  'You\'re not editing a file.' => 'Sie bearbeiten momentan keine Datei.',
   'Zeitpunkt'                   => 'Zeitpunkt',
   'Zeitraum'                    => 'Zeitraum',
   'Zip, City'                   => 'PLZ, Ort',
index fa81dff..7062042 100644 (file)
@@ -64,8 +64,10 @@ $self->{texts} = {
   'Aufwand EU o. UStId'         => 'Aufwand EU o. UStId',
   'Aufwand Inland'              => 'Aufwand Inland',
   'BWA'                         => 'BWA',
+  'Balance Sheet'               => 'Bilanz',
   'Bestandskonto'               => 'Bestandskonto',
   'Bilanz'                      => 'Bilanz',
+  'Bin List'                    => 'Lagerliste',
   'Books are open'              => 'Die Bücher sind geöffnet.',
   'Buchungsgruppe'              => 'Buchungsgruppe',
   'Buchungsgruppe bearbeiten'   => 'Buchungsgruppe bearbeiten',
@@ -81,11 +83,14 @@ $self->{texts} = {
   'Cannot save account!'        => 'Konto kann nicht gespeichert werden!',
   'Cannot save preferences!'    => 'Benutzereinstellungen können nicht gespeichert werden!',
   'Chart of Accounts'           => 'Kontenübersicht',
+  'Check'                       => 'Check',
   'Close Books up to'           => 'Die Bücher abschließen bis zum',
   'Company'                     => 'Firma',
+  'Confirmation'                => 'Auftragsbestätigung',
   'Continue'                    => 'Weiter',
   'Cost Center'                 => 'Kostenstelle',
   'Costs'                       => 'Kosten',
+  'Credit Note'                 => 'Gutschrift',
   'Customer Number'             => 'Kundennummer',
   'Customernumberinit'          => 'Kunden-/Lieferantennummernkreis',
   'DELETED'                     => 'Gelöscht',
@@ -104,6 +109,8 @@ $self->{texts} = {
   'Description'                 => 'Beschreibung',
   'Description missing!'        => 'Beschreibung fehlt.',
   'Discount'                    => 'Rabatt',
+  'Display'                     => 'Anzeigen',
+  'Display file'                => 'Datei anzeigen',
   'Dropdown Limit'              => 'Auswahllistenbegrenzung',
   'E-mail'                      => 'eMail',
   'ELSE'                        => 'Zusatz',
@@ -118,7 +125,9 @@ $self->{texts} = {
   'Edit Payment Terms'          => 'Zahlungskonditionen bearbeiten',
   'Edit Preferences for'        => 'Benutzereinstellungen für',
   'Edit Printer'                => 'Drucker bearbeiten',
-  'Edit Template'               => 'Vorlage bearbeiten',
+  'Edit file'                   => 'Datei bearbeiten',
+  'Edit templates'              => 'Vorlage bearbeiten',
+  'Edit the stylesheet'         => 'Stilvorlage bearbeiten',
   'Enforce transaction reversal for all dates' => 'Gegenbuchungen für jeden Zeitraum aktualisieren',
   'Enter longdescription'       => 'Langtext eingeben',
   'Enter up to 3 letters separated by a colon (i.e CAD:USD:EUR) for your native and foreign currencies' => 'Geben Sie Ihre und weitere Währungen mit bis zu drei Buchstaben pro Währung und Währungen durch Doppelpunkte getrennt ein (z.B. EUR:USD:CAD)',
@@ -142,8 +151,10 @@ $self->{texts} = {
   'History'                     => 'Historie',
   'History Search'              => 'Historien Suche',
   'Include in drop-down menus'  => 'In Aufklappmenü aufnehmen',
+  'Income Statement'            => 'GuV',
   'Inventory'                   => 'Inventar',
   'Inventory Account'           => 'Warenbestand',
+  'Invoice'                     => 'Rechnung',
   'Is this a summary account to record' => 'Buchungskonto in',
   'Language'                    => 'Sprache',
   'Language deleted!'           => 'Sprache gelöscht!',
@@ -190,16 +201,19 @@ $self->{texts} = {
   'POSTED'                      => 'Gebucht',
   'POSTED AS NEW'               => 'Als neu gebucht',
   'PRINTED'                     => 'Gedruckt',
+  'Packing List'                => 'Lieferschein',
   'Part Number'                 => 'Artikelnummer',
   'Part description'            => 'Artikelbeschreibung',
   'Parts Inventory'             => 'Warenliste',
   'Password'                    => 'Passwort',
   'Payables'                    => 'Verbindlichkeiten',
   'Payment'                     => 'Zahlungsausgang',
+  'Payment Reminder'            => 'Zahlungserinnerung',
   'Payment Terms'               => 'Zahlungskonditionen',
   'Payment Terms saved!'        => 'Zahlungskonditionen gespeichert!',
   'Payment terms deleted!'      => 'Zahlungskonditionen gelöscht!',
   'Phone'                       => 'Telefon',
+  'Pick List'                   => 'Sammelliste',
   'Please enter values'         => 'Bitte Werte eingeben',
   'Postscript'                  => 'Postscript',
   'Preferences saved!'          => 'Einstellungen gespeichert!',
@@ -211,9 +225,13 @@ $self->{texts} = {
   'Printer deleted!'            => 'Drucker gelöscht!',
   'Printer saved!'              => 'Drucker gespeichert!',
   'Profit Center'               => 'Erfolgsbereich',
+  'Proforma Invoice'            => 'Proformarechnung',
   'Project Number'              => 'Projektnummer',
   'Project description'         => 'Projektbeschreibung',
+  'Purchase Order'              => 'Lieferantenauftrag',
   'Queue'                       => 'Warteschlange',
+  'Quotation'                   => 'Angebot',
+  'RFQ'                         => 'Anfrage',
   'Rate'                        => 'Rate',
   'Receipt'                     => 'Zahlungseingang',
   'Receivables'                 => 'Forderungen',
@@ -223,6 +241,7 @@ $self->{texts} = {
   'SAVED FOR DUNNING'           => 'Gespeichert',
   'SCREENED'                    => 'Angezeigt',
   'Save'                        => 'Speichern',
+  'Saving the file \'%s\' failed. OS error message: %s' => 'Das Speichern der Datei \'%s\' schlug fehl. Fehlermeldung des Betriebssystems: %s',
   'Screen'                      => 'Bildschirm',
   'Select a Customer'           => 'Endkunde auswählen',
   'Select a part'               => 'Artikel ausw&auml;hlen',
@@ -234,13 +253,16 @@ $self->{texts} = {
   'Signature'                   => 'Unterschrift',
   'Skonto'                      => 'Skonto',
   'Skonto Terms'                => 'Zahlungsziel Skonto',
+  'Statement'                   => 'Sammelrechnung',
   'Steuersatz'                  => 'Steuersatz',
+  'Storno Invoice'              => 'Stornorechnung',
+  'Storno Packing List'         => 'Stornolieferschein',
   'Stylesheet'                  => 'Stilvorlage',
   'Tax'                         => 'Steuer',
   'Tax Accounts'                => 'Steuerkonto',
+  'Template'                    => 'Druckvorlage',
   'Template Code'               => 'Vorlagenkürzel',
   'Template Code missing!'      => 'Vorlagenkürzel fehlt!',
-  'Template saved!'             => 'Schablone gespeichert!',
   '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 base unit does not exist or it is about to be deleted in row %d.' => 'Die Basiseinheit in Zeile %d existiert nicht oder soll gel&ouml;scht werden.',
   'The base unit does not exist.' => 'Die Basiseinheit existiert nicht.',
@@ -260,6 +282,11 @@ $self->{texts} = {
   'Transaction reversal enforced up to' => 'Fehleintragungen können bis zu dem angegebenen Zeitraum nur mit einer Kontraeintragung ausgebessert werden!',
   'Translation (%s)'            => '&Uuml;bersetzung (%s)',
   'Type of Business'            => 'Kunden-/Lieferantentyp',
+  'USTVA'                       => 'USTVA',
+  'USTVA 2004'                  => 'USTVA 2004',
+  'USTVA 2005'                  => 'USTVA 2005',
+  'USTVA 2006'                  => 'USTVA 2006',
+  'USTVA 2007'                  => 'USTVA 2007',
   'UStVA-Nr. 35'                => 'Kz. 35',
   'UStVA-Nr. 36'                => 'Kz. 36',
   'UStVA-Nr. 39'                => 'Kz. 37',
@@ -316,6 +343,7 @@ $self->{texts} = {
   'Year End'                    => 'Jahresende',
   'Yes'                         => 'Ja',
   'You can use the following strings in the long description and all translations. They will be replaced by their actual values by Lx-Office before they\'re output.' => 'Sie k&ouml;nnen im Langtext und allen Übersetzungen die folgenden Variablen benutzen, die vor der Ausgabe von Lx-Office automatisch ersetzt werden:',
+  'You\'re not editing a file.' => 'Sie bearbeiten momentan keine Datei.',
   'bin_list'                    => 'Lagerliste',
   'dimension units'             => 'Ma&szlig;einheiten',
   'down'                        => 'runter',
@@ -368,8 +396,9 @@ $self->{subs} = {
   'delete_printer'              => 'delete_printer',
   'delivery_customer_selection' => 'delivery_customer_selection',
   'department_header'           => 'department_header',
-  'display_form'                => 'display_form',
-  'display_stylesheet'          => 'display_stylesheet',
+  'display'                     => 'display',
+  'display_template'            => 'display_template',
+  'display_template_form'       => 'display_template_form',
   'doclose'                     => 'doclose',
   'edit'                        => 'edit',
   'edit_account'                => 'edit_account',
@@ -432,6 +461,7 @@ $self->{subs} = {
   'konto_erfassen'              => 'add_account',
   'weiter'                      => 'continue',
   'löschen'                     => 'delete',
+  'anzeigen'                    => 'display',
   'bearbeiten'                  => 'edit',
   'kontodaten_bearbeiten'       => 'edit_account',
   'speichern'                   => 'save',
index abcc7af..0b34d7f 100644 (file)
@@ -41,7 +41,6 @@ $self->{texts} = {
   'Buchungsgruppen'             => 'Buchungsgruppen',
   'Cash'                        => 'Zahlungsverkehr',
   'Chart of Accounts'           => 'Kontenübersicht',
-  'Check'                       => 'Check',
   'Checks'                      => 'Schecks',
   'Contacts'                    => 'Kontakte',
   'Customer'                    => 'Kunde',
@@ -57,7 +56,6 @@ $self->{texts} = {
   'History Search Engine'       => 'Historien Suchmaschiene',
   'Import CSV'                  => 'Import CSV',
   'Income Statement'            => 'GuV',
-  'Invoice'                     => 'Rechnung',
   'Invoices'                    => 'Rechnungen',
   'Journal'                     => 'Buchungsjournal',
   'LaTeX Templates'             => 'LaTeX-Vorlagen',
@@ -75,7 +73,6 @@ $self->{texts} = {
   'List Printer'                => 'Drucker anzeigen',
   'Logout'                      => 'Abmeldung',
   'Master Data'                 => 'Stammdaten',
-  'Packing List'                => 'Lieferschein',
   'Packing Lists'               => 'Lieferschein',
   'Parts'                       => 'Waren',
   'Payment'                     => 'Zahlungsausgang',
@@ -87,31 +84,23 @@ $self->{texts} = {
   'Programm'                    => 'Programm',
   'Projects'                    => 'Projekte',
   'Projecttransactions'         => 'Projektbuchungen',
-  'Purchase Order'              => 'Lieferantenauftrag',
   'Purchase Orders'             => 'Lieferantenaufträge',
-  'Quotation'                   => 'Angebot',
   'Quotations'                  => 'Angebote',
-  'RFQ'                         => 'Anfrage',
   'RFQs'                        => 'Anfragen',
   'Receipt'                     => 'Zahlungseingang',
   'Receipts'                    => 'Zahlungseingänge',
   'Reconciliation'              => 'Kontenabgleich',
   'Reports'                     => 'Berichte',
   'Sales Invoices'              => 'Kundenrechnung',
-  'Sales Order'                 => 'Kundenauftrag',
   'Sales Orders'                => 'Aufträge',
   'Service units'               => 'Dienstleistungseinheiten',
   'Services'                    => 'Dienstleistungen',
   'Shipto'                      => 'Lieferanschriften',
-  'Statement'                   => 'Sammelrechnung',
   'Stylesheet'                  => 'Stilvorlage',
   'System'                      => 'System',
+  'Templates'                   => 'Vorlagen',
   'Trial Balance'               => 'Saldenbilanz',
   'Type of Business'            => 'Kunden-/Lieferantentyp',
-  'UStVA'                       => 'UStVA',
-  'UStVA 2004'                  => 'UStVA 2004',
-  'UStVA 2005'                  => 'UStVA 2005',
-  'UStVA 2006'                  => 'UStVA 2006',
   'UStVa'                       => 'UStVa',
   'UStVa Einstellungen'         => 'UStVa Einstellungen',
   'Units'                       => 'Einheiten',
index d09357f..7f37be2 100644 (file)
@@ -40,7 +40,6 @@ $self->{texts} = {
   'Buchungsgruppen'             => 'Buchungsgruppen',
   'Cash'                        => 'Zahlungsverkehr',
   'Chart of Accounts'           => 'Kontenübersicht',
-  'Check'                       => 'Check',
   'Checks'                      => 'Schecks',
   'Contacts'                    => 'Kontakte',
   'Customer'                    => 'Kunde',
@@ -56,7 +55,6 @@ $self->{texts} = {
   'History Search Engine'       => 'Historien Suchmaschiene',
   'Import CSV'                  => 'Import CSV',
   'Income Statement'            => 'GuV',
-  'Invoice'                     => 'Rechnung',
   'Invoices'                    => 'Rechnungen',
   'Journal'                     => 'Buchungsjournal',
   'LaTeX Templates'             => 'LaTeX-Vorlagen',
@@ -74,7 +72,6 @@ $self->{texts} = {
   'List Printer'                => 'Drucker anzeigen',
   'Logout'                      => 'Abmeldung',
   'Master Data'                 => 'Stammdaten',
-  'Packing List'                => 'Lieferschein',
   'Packing Lists'               => 'Lieferschein',
   'Parts'                       => 'Waren',
   'Payment'                     => 'Zahlungsausgang',
@@ -86,31 +83,23 @@ $self->{texts} = {
   'Programm'                    => 'Programm',
   'Projects'                    => 'Projekte',
   'Projecttransactions'         => 'Projektbuchungen',
-  'Purchase Order'              => 'Lieferantenauftrag',
   'Purchase Orders'             => 'Lieferantenaufträge',
-  'Quotation'                   => 'Angebot',
   'Quotations'                  => 'Angebote',
-  'RFQ'                         => 'Anfrage',
   'RFQs'                        => 'Anfragen',
   'Receipt'                     => 'Zahlungseingang',
   'Receipts'                    => 'Zahlungseingänge',
   'Reconciliation'              => 'Kontenabgleich',
   'Reports'                     => 'Berichte',
   'Sales Invoices'              => 'Kundenrechnung',
-  'Sales Order'                 => 'Kundenauftrag',
   'Sales Orders'                => 'Aufträge',
   'Service units'               => 'Dienstleistungseinheiten',
   'Services'                    => 'Dienstleistungen',
   'Shipto'                      => 'Lieferanschriften',
-  'Statement'                   => 'Sammelrechnung',
   'Stylesheet'                  => 'Stilvorlage',
   'System'                      => 'System',
+  'Templates'                   => 'Vorlagen',
   'Trial Balance'               => 'Saldenbilanz',
   'Type of Business'            => 'Kunden-/Lieferantentyp',
-  'UStVA'                       => 'UStVA',
-  'UStVA 2004'                  => 'UStVA 2004',
-  'UStVA 2005'                  => 'UStVA 2005',
-  'UStVA 2006'                  => 'UStVA 2006',
   'UStVa'                       => 'UStVa',
   'UStVa Einstellungen'         => 'UStVa Einstellungen',
   'Units'                       => 'Einheiten',
index 81958bd..3bd1350 100644 (file)
--- a/menu.ini
+++ b/menu.ini
@@ -567,136 +567,28 @@ module=lxo-import/shiptoB.php
 module=lxo-import/partsB.php
 
 
-[System--HTML Templates]
+[System--Templates]
 module=menu.pl
 action=acc_menu
 target=acc_menu
 submenu=1
 
-[System--HTML Templates--Income Statement]
+[System--Templates--HTML Templates]
 module=am.pl
-action=display_form
-file=templates=income_statement.html
+action=display_template_form
+type=templates
+format=html
 
-[System--HTML Templates--BWA]
+[System--Templates--LaTeX Templates]
 module=am.pl
-action=display_form
-file=templates=bwa.html
+action=display_template_form
+type=templates
+format=tex
 
-[System--HTML Templates--Balance Sheet]
+[System--Templates--Stylesheet]
 module=am.pl
-action=display_form
-file=templates=balance_sheet.html
-
-[System--HTML Templates--Invoice]
-module=am.pl
-action=display_form
-file=templates=invoice.html
-
-[System--HTML Templates--Packing List]
-module=am.pl
-action=display_form
-file=templates=packing_list.html
-
-[System--HTML Templates--Sales Order]
-module=am.pl
-action=display_form
-file=templates=sales_order.html
-
-[System--HTML Templates--Purchase Order]
-module=am.pl
-action=display_form
-file=templates=purchase_order.html
-
-[System--HTML Templates--Statement]
-module=am.pl
-action=display_form
-file=templates=statement.html
-
-[System--HTML Templates--Quotation]
-module=am.pl
-action=display_form
-file=templates=sales_quotation.html
-
-[System--HTML Templates--RFQ]
-module=am.pl
-action=display_form
-file=templates=request_quotation.html
-
-[System--HTML Templates--UStVA]
-module=am.pl
-action=display_form
-file=templates=ustva.html
-
-[System--LaTeX Templates]
-module=menu.pl
-action=acc_menu
-target=acc_menu
-submenu=1
-
-[System--LaTeX Templates--Invoice]
-module=am.pl
-action=display_form
-file=templates=invoice.tex
-
-[System--LaTeX Templates--Packing List]
-module=am.pl
-action=display_form
-file=templates=packing_list.tex
-
-[System--LaTeX Templates--Sales Order]
-module=am.pl
-action=display_form
-file=templates=sales_order.tex
-
-[System--LaTeX Templates--Purchase Order]
-module=am.pl
-action=display_form
-file=templates=purchase_order.tex
-
-[System--LaTeX Templates--Statement]
-module=am.pl
-action=display_form
-file=templates=statement.tex
-
-[System--LaTeX Templates--Check]
-module=am.pl
-action=display_form
-file=templates=check.tex
-
-[System--LaTeX Templates--Receipt]
-module=am.pl
-action=display_form
-file=templates=receipt.tex
-
-[System--LaTeX Templates--Quotation]
-module=am.pl
-action=display_form
-file=templates=sales_quotation.tex
-
-[System--LaTeX Templates--RFQ]
-module=am.pl
-action=display_form
-file=templates=request_quotation.tex
-
-[System--LaTeX Templates--UStVA 2006]
-module=am.pl
-action=display_form
-file=templates=ustva-2006.tex
-
-[System--LaTeX Templates--UStVA 2005]
-module=am.pl
-action=display_form
-file=templates=ustva-2005.tex
-
-[System--LaTeX Templates--UStVA 2004]
-module=am.pl
-action=display_form
-file=templates=ustva-2004.tex
-
-[System--Stylesheet]
-module=am.pl
-action=display_stylesheet
+action=display_template_form
+type=stylesheet
 
 [System--Audit Control]
 module=am.pl