Steuernamen übersetztbar gemacht.
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Mon, 28 Oct 2013 09:38:01 +0000 (10:38 +0100)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Mon, 28 Oct 2013 10:17:11 +0000 (11:17 +0100)
SL/AM.pm
SL/DB/Tax.pm
SL/IS.pm
SL/OE.pm
bin/mozilla/am.pl
bin/mozilla/oe.pl
templates/webpages/am/edit_tax.html

index adb240d..3fdf175 100644 (file)
--- a/SL/AM.pm
+++ b/SL/AM.pm
@@ -45,6 +45,7 @@ use SL::DBUtils;
 use SL::DB::AuthUser;
 use SL::DB::Default;
 use SL::DB::Employee;
+use SL::GenericTranslations;
 
 use strict;
 
@@ -1652,21 +1653,31 @@ sub save_tax {
                   taxnumber      = (SELECT accno FROM chart WHERE id= ? ),
                   chart_categories = ?
                 WHERE id = ?|;
-    push(@values, $form->{id});
 
   } else {
     #ok
+    ($form->{id}) = selectfirst_array_query($form, $dbh, qq|SELECT nextval('id')|);
     $query = qq|INSERT INTO tax (
                   taxkey,
                   taxdescription,
                   rate,
                   chart_id,
                   taxnumber,
-                  chart_categories
+                  chart_categories,
+                  id
                 )
-                VALUES (?, ?, ?, ?, (SELECT accno FROM chart WHERE id = ?), ? )|;
+                VALUES (?, ?, ?, ?, (SELECT accno FROM chart WHERE id = ?), ?, ?)|;
   }
+  push(@values, $form->{id});
   do_query($form, $dbh, $query, @values);
+  
+  foreach my $language_id (keys %{ $form->{translations} }) {
+    GenericTranslations->save('dbh'              => $dbh,
+                              'translation_type' => 'SL::DB::Tax/taxdescription',
+                              'translation_id'   => $form->{id},
+                              'language_id'      => $language_id,
+                              'translation'      => $form->{translations}->{$language_id});
+  }
 
   $dbh->commit();
 
index 0279dbf..c027061 100644 (file)
@@ -3,6 +3,7 @@ package SL::DB::Tax;
 use strict;
 
 use SL::DB::MetaSetup::Tax;
+use SL::DB::Helper::TranslatedAttributes;
 
 __PACKAGE__->meta->initialize;
 
index 372e533..cfaf730 100644 (file)
--- a/SL/IS.pm
+++ b/SL/IS.pm
@@ -49,6 +49,7 @@ use SL::IC;
 use SL::IO;
 use SL::TransNumber;
 use SL::DB::Default;
+use SL::DB::Tax;
 use Data::Dumper;
 
 use strict;
@@ -386,8 +387,11 @@ sub invoice_details {
     push(@{ $form->{TEMPLATE_ARRAYS}->{tax_nofmt} },      $taxamount );
     push(@{ $form->{TEMPLATE_ARRAYS}->{taxrate} },        $form->format_amount($myconfig, $form->{"${item}_rate"} * 100));
     push(@{ $form->{TEMPLATE_ARRAYS}->{taxrate_nofmt} },  $form->{"${item}_rate"} * 100);
-    push(@{ $form->{TEMPLATE_ARRAYS}->{taxdescription} }, $form->{"${item}_description"} . q{ } . 100 * $form->{"${item}_rate"} . q{%});
     push(@{ $form->{TEMPLATE_ARRAYS}->{taxnumber} },      $form->{"${item}_taxnumber"});
+
+    my $tax_obj     = SL::DB::Manager::Tax->find_by(taxnumber => $form->{"${item}_taxnumber"});
+    my $description = $tax_obj->translated_attribute('taxdescription',  $form->{language_id}, 0) if $tax_obj;
+    push(@{ $form->{TEMPLATE_ARRAYS}->{taxdescription} }, $description . q{ } . 100 * $form->{"${item}_rate"} . q{%});
   }
 
   for my $i (1 .. $form->{paidaccounts}) {
index 683bb0e..12cbb8a 100644 (file)
--- a/SL/OE.pm
+++ b/SL/OE.pm
@@ -43,6 +43,7 @@ use SL::CVar;
 use SL::DB::Order;
 use SL::DB::PeriodicInvoicesConfig;
 use SL::DB::Status;
+use SL::DB::Tax;
 use SL::DBUtils;
 use SL::IC;
 
@@ -1284,8 +1285,11 @@ sub order_details {
     push(@{ $form->{TEMPLATE_ARRAYS}->{tax_nofmt} },      $taxamount);
     push(@{ $form->{TEMPLATE_ARRAYS}->{taxrate} },        $form->format_amount($myconfig, $form->{"${item}_rate"} * 100));
     push(@{ $form->{TEMPLATE_ARRAYS}->{taxrate_nofmt} },  $form->{"${item}_rate"} * 100);
-    push(@{ $form->{TEMPLATE_ARRAYS}->{taxdescription} }, $form->{"${item}_description"} . q{ } . 100 * $form->{"${item}_rate"} . q{%});
     push(@{ $form->{TEMPLATE_ARRAYS}->{taxnumber} },      $form->{"${item}_taxnumber"});
+
+    my $tax_obj     = SL::DB::Manager::Tax->find_by(taxnumber => $form->{"${item}_taxnumber"});
+    my $description = $tax_obj->translated_attribute('taxdescription',  $form->{language_id}, 0) if $tax_obj;
+    push(@{ $form->{TEMPLATE_ARRAYS}->{taxdescription} }, $description . q{ } . 100 * $form->{"${item}_rate"} . q{%});
   }
 
   $form->{nodiscount_subtotal} = $form->format_amount($myconfig, $form->{nodiscount_total}, 2);
index 8a48760..e12c1ea 100644 (file)
@@ -43,6 +43,8 @@ use SL::USTVA;
 use SL::Iconv;
 use SL::TODO;
 use SL::DB::Printer;
+use SL::DB::Tax;
+use SL::DB::Language;
 use CGI;
 
 require "bin/mozilla/common.pl";
@@ -1415,6 +1417,7 @@ sub add_tax {
 
   my $parameters_ref = {
 #    ChartTypeIsAccount         => $ChartTypeIsAccount,
+    LANGUAGES => SL::DB::Manager::Language->get_all_sorted,
   };
 
   # Ausgabe des Templates
@@ -1450,6 +1453,8 @@ sub edit_tax {
   $form->header();
 
   my $parameters_ref = {
+    LANGUAGES => SL::DB::Manager::Language->get_all_sorted,
+    TAX       => SL::DB::Manager::Tax->find_by(id => $form->{id}),
   };
 
   # Ausgabe des Templates
@@ -1528,6 +1533,9 @@ sub save_tax {
     $form->error($locale->text('Tax Percent is a number between 0 and 100'));
   }
 
+  my @translation_keys  =  grep { $_ =~ '^translation_\d+' } keys %$form;
+  $form->{translations} = { map { $_ =~ '^translation_(\d+)'; $1 => $form->{$_} } @translation_keys };
+
   AM->save_tax(\%myconfig, \%$form);
   $form->redirect($locale->text('Tax saved!'));
 
index dc47d27..b9b32bf 100644 (file)
@@ -442,7 +442,7 @@ sub form_header {
         shiptodepartment_1 shiptodepartment_2 shiptoemail shiptocp_gender
         message email subject cc bcc taxpart taxservice taxaccounts cursor_fokus),
         @custom_hiddens,
-        map { $_.'_rate', $_.'_description' } split / /, $form->{taxaccounts} ];  # deleted: discount
+        map { $_.'_rate', $_.'_description', $_.'_taxnumber' } split / /, $form->{taxaccounts} ];  # deleted: discount
 
   %TMPL_VAR = (
      %TMPL_VAR,
index f7e7cf9..83a10c4 100644 (file)
@@ -1,6 +1,7 @@
 [%- USE T8 %]
 [%- USE HTML %]
 [%- USE L %]
+[%- USE LxERP %]
  <form method="post" action="am.pl">
   <input type="hidden" name="id" value="[% HTML.escape(id) %]">
   <input type="hidden" name="type" value="tax">
     <td><input name="taxdescription" size="60" value="[% HTML.escape(taxdescription) %]"></td>
    </tr>
 
+   [%- FOREACH language = LANGUAGES %]
+    <tr>
+     <td>[%- HTML.escape(language.description) %] ([%- LxERP.t8('Translation') %])</td>
+     <td>
+      <input name="translation_[% language.id %]" value="[%- HTML.escape(TAX.translated_attribute('taxdescription', language, 1)) %]" size="60">
+     </td>
+    </tr>
+   [%- END %]
+
    <tr>
     <td>[% 'tax_percent' | $T8 %]</td>
     <td>[% IF tax_already_used %]<p>[% HTML.escape(rate) %] %</p>