Merge branch 'master' of vc.linet-services.de:public/lx-office-erp
authorJan Büren <jan@lx-office-hosting.de>
Tue, 10 Jan 2012 16:43:39 +0000 (17:43 +0100)
committerJan Büren <jan@lx-office-hosting.de>
Tue, 10 Jan 2012 16:43:39 +0000 (17:43 +0100)
SL/BP.pm
SL/Form.pm
SL/Locale.pm
bin/mozilla/bp.pl
bin/mozilla/ic.pl
doc/2010_template_changes.txt [deleted file]
t/test.sh
templates/webpages/bp/search.html

index f2d0201..c8b4a3d 100644 (file)
--- a/SL/BP.pm
+++ b/SL/BP.pm
@@ -149,6 +149,7 @@ sub get_spoolfiles {
   } else {
     $arap = "ar";
     my $invoice = "a.invoice";
+    my $quonumber = "a.quonumber";
 
     if ($form->{type} =~ /_(order|quotation)$/) {
       $invnumber = "ordnumber";
@@ -156,16 +157,29 @@ sub get_spoolfiles {
       $invoice   = '0';
     }
 
+    if ($form->{type} eq 'packing_list') {
+      $invnumber = "donumber";
+      $arap      = "delivery_orders";
+      $invoice   = '0';
+      $quonumber = '0';
+    }
+
     $query =
-      qq|SELECT a.id, a.$invnumber AS invnumber, a.ordnumber, a.quonumber, | .
+      qq|SELECT a.id, a.$invnumber AS invnumber, a.ordnumber, $quonumber, | .
       qq|  a.transdate, $invoice AS invoice, '$arap' AS module, vc.name, | .
       qq|  s.spoolfile | .
       qq|FROM $arap a, ${vc} vc, status s | .
       qq|WHERE s.trans_id = a.id | .
       qq|  AND s.spoolfile IS NOT NULL | .
-      qq|  AND s.formname = ? | .
+    ($form->{type} eq 'packing_list'
+    ? qq|  AND s.formname IN (?, ?) |
+    : qq|  AND s.formname = ? |) .
       qq|  AND a.${vc}_id = vc.id|;
     @values = ($form->{type});
+
+    if ($form->{type} eq 'packing_list') {
+      @values = qw(sales_delivery_order purchase_delivery_order);
+    }
   }
 
   if ($form->{"${vc}_id"}) {
@@ -175,14 +189,14 @@ sub get_spoolfiles {
     $query .= " AND vc.name ILIKE ?";
     push(@values, $form->like($form->{ $vc }));
   }
-  foreach my $column (qw(invnumber ordnumber quonumber)) {
+  foreach my $column (qw(invnumber ordnumber quonumber donumber)) {
     if ($form->{$column}) {
       $query .= " AND a.$column ILIKE ?";
       push(@values, $form->like($form->{$column}));
     }
   }
 
-  if ($form->{type} =~ /(invoice|sales_order|sales_quotation|puchase_order|request_quotation)$/) {
+  if ($form->{type} =~ /(invoice|sales_order|sales_quotation|puchase_order|request_quotation|packing_list)$/) {
     if ($form->{transdatefrom}) {
       $query .= " AND a.transdate >= ?";
       push(@values, $form->{transdatefrom});
@@ -197,7 +211,7 @@ sub get_spoolfiles {
   my $sortorder = join ', ', $form->sort_columns(@a);
 
   if (grep({ $_ eq $form->{sort} }
-           qw(transdate invnumber ordnumber quonumber name))) {
+           qw(transdate invnumber ordnumber quonumber donumber name))) {
     $sortorder = $form->{sort};
   }
 
index d537d28..2647a2b 100644 (file)
@@ -56,6 +56,7 @@ use SL::DBUtils;
 use SL::DO;
 use SL::IC;
 use SL::IS;
+use SL::Locale;
 use SL::Mailer;
 use SL::Menu;
 use SL::MoreCommon qw(uri_encode uri_decode);
@@ -1244,24 +1245,27 @@ sub get_formname_translation {
 
   $formname ||= $self->{formname};
 
+  $self->{recipient_locale} ||=  Locale->lang_to_locale($self->{language});
+  my $recipient_locale = Locale->new($self->{recipient_locale});
+
   my %formname_translations = (
-    bin_list                => $main::locale->text('Bin List'),
-    credit_note             => $main::locale->text('Credit Note'),
-    invoice                 => $main::locale->text('Invoice'),
-    pick_list               => $main::locale->text('Pick List'),
-    proforma                => $main::locale->text('Proforma Invoice'),
-    purchase_order          => $main::locale->text('Purchase Order'),
-    request_quotation       => $main::locale->text('RFQ'),
-    sales_order             => $main::locale->text('Confirmation'),
-    sales_quotation         => $main::locale->text('Quotation'),
-    storno_invoice          => $main::locale->text('Storno Invoice'),
-    sales_delivery_order    => $main::locale->text('Delivery Order'),
-    purchase_delivery_order => $main::locale->text('Delivery Order'),
-    dunning                 => $main::locale->text('Dunning'),
+    bin_list                => $recipient_locale->text('Bin List'),
+    credit_note             => $recipient_locale->text('Credit Note'),
+    invoice                 => $recipient_locale->text('Invoice'),
+    pick_list               => $recipient_locale->text('Pick List'),
+    proforma                => $recipient_locale->text('Proforma Invoice'),
+    purchase_order          => $recipient_locale->text('Purchase Order'),
+    request_quotation       => $recipient_locale->text('RFQ'),
+    sales_order             => $recipient_locale->text('Confirmation'),
+    sales_quotation         => $recipient_locale->text('Quotation'),
+    storno_invoice          => $recipient_locale->text('Storno Invoice'),
+    sales_delivery_order    => $recipient_locale->text('Delivery Order'),
+    purchase_delivery_order => $recipient_locale->text('Delivery Order'),
+    dunning                 => $recipient_locale->text('Dunning'),
   );
 
   $main::lxdebug->leave_sub();
-  return $formname_translations{$formname}
+  return $formname_translations{$formname};
 }
 
 sub get_number_prefix_for_type {
@@ -1297,11 +1301,14 @@ sub generate_attachment_filename {
   $main::lxdebug->enter_sub();
   my ($self) = @_;
 
+  $self->{recipient_locale} ||=  Locale->lang_to_locale($self->{language});
+  my $recipient_locale = Locale->new($self->{recipient_locale});
+
   my $attachment_filename = $main::locale->unquote_special_chars('HTML', $self->get_formname_translation());
   my $prefix              = $self->get_number_prefix_for_type();
 
   if ($self->{preview} && (first { $self->{type} eq $_ } qw(invoice credit_note))) {
-    $attachment_filename .= ' (' . $main::locale->text('Preview') . ')' . $self->get_extension_for_format();
+    $attachment_filename .= ' (' . $recipient_locale->text('Preview') . ')' . $self->get_extension_for_format();
 
   } elsif ($attachment_filename && $self->{"${prefix}number"}) {
     $attachment_filename .=  "_" . $self->{"${prefix}number"} . $self->get_extension_for_format();
index dce9e64..bb95e73 100644 (file)
@@ -227,6 +227,18 @@ sub text {
   return $text;
 }
 
+sub lang_to_locale {
+  my ($self, $requested_lang) = @_;
+
+  my $requested_locale;
+  $requested_locale = 'de' if $requested_lang =~ m/^_(de|deu|ger)/i;
+  $requested_locale = 'fr' if $requested_lang =~ m/^_(en|uk|us|gr)/i;
+  $requested_locale = 'en' if $requested_lang =~ m/^_fr/i;
+  $requested_locale ||= 'de';
+
+  return $requested_locale;
+}
+
 sub findsub {
   $main::lxdebug->enter_sub();
 
index 1d9d79f..d8180a6 100644 (file)
@@ -49,6 +49,7 @@ sub assert_bp_access {
     'sales_order'       => 'sales_order_edit',
     'sales_quotation'   => 'sales_quotation_edit',
     'purchase_order'    => 'purchase_order_edit',
+    'packing_list'      => 'sales_delivery_order_edit|purchase_delivery_order_edit',
     'request_quotation' => 'request_quotation_edit',
     'check'             => 'cash',
     'receipt'           => 'cash',
@@ -76,6 +77,7 @@ sub search {
        purchase_order    => { title => $::locale->text('Purchase Orders'), ordnumber => 1, },
        sales_quotation   => { title => $::locale->text('Quotations'),      quonumber => 1, },
        request_quotation => { title => $::locale->text('RFQs'),            quonumber => 1, },
+       packing_list      => { title => $::locale->text('Delivery Orders'), donumber  => 1, ordnumber => 1 },
        check             => { title => $::locale->text('Checks'),          chknumber => 1, },
        receipt           => { title => $::locale->text('Receipts'),        rctnumber => 1, },
   );
@@ -161,12 +163,13 @@ sub list_spool {
     invnumber     => sub { $::locale->text('Invoice Number')   . " : $::form->{invnumber}" },
     ordnumber     => sub { $::locale->text('Order Number')     . " : $::form->{ordnumber}" },
     quonumber     => sub { $::locale->text('Quotation Number') . " : $::form->{quonumber}" },
+    donumber      => sub { $::locale->text('Delivery Order Number') . " : $::form->{donumber}" },
     transdatefrom => sub { $::locale->text('From') . "&nbsp;" . $::locale->date(\%::myconfig, $::form->{transdatefrom}, 1) },
     transdateto   => sub { $::locale->text('To')   . "&nbsp;" . $::locale->date(\%::myconfig, $::form->{transdateto}, 1) },
   );
 
   my @options;
-  for my $key ($::form->{vc}, qw(account invnumber ordnumber quonumber transdatefrom transdateto)) {
+  for my $key ($::form->{vc}, qw(account invnumber ordnumber quonumber donumber transdatefrom transdateto)) {
     next unless $::form->{$key};
     push @href_options, $key;
     push @options, $option_texts{$key} ? $option_texts{$key}->() : '';
index b02e19d..48280d7 100644 (file)
@@ -2053,6 +2053,9 @@ sub ajax_autocomplete {
 sub back_to_record {
   _check_io_auth();
 
+
+  delete @{$::form}{qw(action action_add action_back_to_record back_sub description item notes partnumber sellprice taxaccount2 unit vc)};
+
   $::auth->restore_form_from_session($::form->{previousform}, clobber => 1);
   $::form->{rowcount}--;
   $::form->{action}   = 'display_form';
diff --git a/doc/2010_template_changes.txt b/doc/2010_template_changes.txt
deleted file mode 100644 (file)
index c833994..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-Table of Contents
------------------
-
-Inhalt der Anleitung
-1 Zusammenfassung
-2 Bisheriger Mechanismus und Motivation zur Änderung
-3 Änderungen
-4 Migration
-
-Zusammenfassung
----------------
-
-Dieses Dokument beschreibt die Änderungen, die 2010 am Templatesystem von
-Lx-Office vorgenommen wurden, sowie Möglichkeiten zur Migration aus alten
-Systemen.
-
-Die betroffenen Templates sind alle lokalisierten Templates im Verzeichnis
-templates/. Die Druckvoragen sind nicht betroffen.
-
-
-Bisheriger Mechanismus und Motivation zur Änderung
---------------------------------------------------
-
-SQL Ledger benutzt für Darstellung garkein Templatesytem. HTML wird im Perlcode
-zusammengebaut, und dabei über das Locale Modul lokalisiert. Gleichzeitig
-werden Druckvorlagen in einer lokalisierten Version mitgeliefert und
-vorgehalten, und werden beim anlegen eines Benutzers in sein lokales
-Templateverzeichnis kopiert. Mit einem mitgelieferten Editor konnten diese HTML
-Dateien dann editiert werden.
-
-Das Lx-Office Templatesystem ist zuerst in Anlehnung daran entstanden.
-Templates wurden in einer _master Version vorgehalten und mit den lokalisierten
-Strings aus dem Programm statisch übersetzt, und dann zur Laufzeit mit
-Variablen gefüllt. Das Template System war zuerst HTML::Template, wurde später
-aber durch Template Toolkit ersetzt, was flexiblere Syntax bietet und eine
-Größenordnung schneller ist.
-
-Das System hat diverse Probleme. Templates sind im Programm in einem Coding
-hinterlegt, das maßgeblich durch die einkompilierte Sprache bestimmt wird. Wenn
-die Sprachtexte Latin-1 sind, sind die übersetzten Templates auch Latin-1.
-Wenn die angeforderte Sprache aber UTF-8 ist, müssen die Templates zur Laufzeit
-umcodiert werden. Das kostet Zeit, und erschwert caching.
-
-Das nächste Problem sind Untertemplates. In ein kompiliertes Template ein
-anderes Template einzubinden ist möglich, hat aber diverse Probleme mit Coding
-und Lokalisierung, weil gewisse Kontextinformationen nicht weitergegeben
-werden. Die Modularisierung von Templates ist ein langfristiges Ziel, deshalb
-ist es gewünscht, dass das funktioniert.
-
-
-Änderungen
-----------
-
-Bisher wurden alle html Templates in allen Sprachversionen separat
-vorgehalten. Diese sind jetzt entfernt, es wird nur noch die _master.html
-weitergepflegt, die jetzt ohne diese Endung behandelt wird. So wird aus
-
-  template/webpages/oe/search_master.html und
-  template/webpages/oe/search_de.html
-  template/webpages/oe/search_en.html
-
-jetzt nur noch
-
-  templates/webpages/oe/search.html
-
-die alle Rollen übernimmt.
-
-Gleichzeitig wurde der an HTML angelehnte <translate></translate> Operator
-überall ersetzt durch das Template Modul T8, dass zur Templateverarbeitungszeit
-auf die Lokalisierung von Lx-Office zugreift. Der <translate> Operator war für
-statische Kompilierung gedacht, und ist dynamisch nicht ohne massive
-Geschwindigkeitseinbusse umzusetzen.
-
-Folgende Konstrukte sollten ab jetzt verwendet werden:
-
-  <translate>Originaltext</translate>
-  LxERP.format_text('<translate>Text with var #1</translate>', value)
-
-werden zu:
-
-  [%- USE T8 %]
-  [%- USE LxERP %]
-
-  [% 'Originaltext' | $T8 %]
-  [% LxERP.t8('Text with var #1', value) | html %]
-
-Beide Module sind in Perl geschrieben und sind Instanzen der Module
-
-  SL::Template::Plugin::T8 und
-  SL::Template::Plugin::LxERP
-
-Migration
---------
-
-Installationen, die Änderungen an den Templates vorgenommen haben, müssen
-diese Änderungen manuell in die neuen Templates einpflegen.
-
-Um die <translate> Operatoren umzuwandeln steht ein Hilfsscript bereit:
-
-  scripts/migrate_template_to_t8.pl <file>
-
-Bitte vorher die Dokumentation von dem Script lesen.
-
-Es gibt einige Fälle die nicht abgedeckt sind davon, aber die sollte mit einem
-Diff danach zu finden sein. Vor allem kann es keine LxERP.format_text Aufrufe
-umwandeln, und es hat keinen Schutz gegen nicht escapte Anführungszeichen in
-den zu übersetzenden Strings.
index c83cdb7..521fa0c 100755 (executable)
--- a/t/test.sh
+++ b/t/test.sh
@@ -1 +1 @@
-find t | grep "\.t$" | grep -v '^t/old' | HARNESS_OPTIONS=j:c xargs perl -MTest::Harness -e 'runtests(@ARGV)'
+find t | grep "\.t$" | grep -v '^t/old' | HARNESS_OPTIONS=j:c xargs perl -Imodules/fallback -MTest::Harness -e 'BEGIN { unshift @INC, "modules/override" } runtests(@ARGV)'
index d8f6800..bf94eea 100644 (file)
     <td colspan=3>[% L.input_tag('quonumber', '', size=20) %]</td>
   </tr>
 [%- END %]
+[%- IF label.$type.donumber %]
+  <tr>
+    <th align=right nowrap>[% 'Delivery Order Number' | $T8 %]</th>
+    <td colspan=3>[% L.input_tag('donumber', '', size=20) %]</td>
+  </tr>
+[%- END %]
 [%- IF label.$type.chknumber %]
   <tr>
     <th align=right nowrap>[% 'Reference' | $T8 %]</th>