commit 0e1c16fdec22180f47a298a9d1d9e3d26ab821ca
Author: Sven Schöling <s.schoeling@googlemail.com>
Date:   Thu Oct 29 12:13:54 2015 +0100

    GDPDU: taxdescription und Übersetzungen

diff --git a/SL/DATEV.pm b/SL/DATEV.pm
index 461bbb049..f5a9d5996 100644
--- a/SL/DATEV.pm
+++ b/SL/DATEV.pm
@@ -388,7 +388,7 @@ sub _get_transactions {
          ct.name, ct.ustid, ct.customernumber AS vcnumber, ct.id AS customer_id, NULL AS vendor_id,
          c.accno, c.description AS accname, c.taxkey_id as charttax, c.datevautomatik, c.id, ac.chart_link AS link,
          ar.invoice,
-         t.rate AS taxrate,
+         t.rate AS taxrate, t.taxdescription,
          'ar' as table,
          tc.accno AS tax_accno, tc.description AS tax_accname,
          ar.notes
@@ -410,7 +410,7 @@ sub _get_transactions {
          ct.name, ct.ustid, ct.vendornumber AS vcnumber, NULL AS customer_id, ct.id AS vendor_id,
          c.accno, c.description AS accname, c.taxkey_id as charttax, c.datevautomatik, c.id, ac.chart_link AS link,
          ap.invoice,
-         t.rate AS taxrate,
+         t.rate AS taxrate, t.taxdescription,
          'ap' as table,
          tc.accno AS tax_accno, tc.description AS tax_accname,
          ap.notes
@@ -432,7 +432,7 @@ sub _get_transactions {
          gl.description AS name, NULL as ustid, '' AS vcname, NULL AS customer_id, NULL AS vendor_id,
          c.accno, c.description AS accname, c.taxkey_id as charttax, c.datevautomatik, c.id, ac.chart_link AS link,
          FALSE AS invoice,
-         t.rate AS taxrate,
+         t.rate AS taxrate, t.taxdescription,
          'gl' as table,
          tc.accno AS tax_accno, tc.description AS tax_accname,
          gl.notes
diff --git a/SL/GDPDU.pm b/SL/GDPDU.pm
index 71721130e..e9878ae34 100644
--- a/SL/GDPDU.pm
+++ b/SL/GDPDU.pm
@@ -49,13 +49,14 @@ my %datev_column_defs = (
   name              => { type => 'Rose::DB::Object::Metadata::Column::Text',    text => t8('Name'), },
   notes             => { type => 'Rose::DB::Object::Metadata::Column::Text',    text => t8('Notes'), },
   tax               => { type => 'Rose::DB::Object::Metadata::Column::Text',    text => t8('Tax'), },
+  taxdescription    => { type => 'Rose::DB::Object::Metadata::Column::Text',    text => t8('tax_taxdescription'), },
   taxkey            => { type => 'Rose::DB::Object::Metadata::Column::Integer', text => t8('Taxkey'), },
   tax_accname       => { type => 'Rose::DB::Object::Metadata::Column::Text',    text => t8('Tax Account Name'), },
   tax_accno         => { type => 'Rose::DB::Object::Metadata::Column::Text',    text => t8('Tax Account'), },
   transdate         => { type => 'Rose::DB::Object::Metadata::Column::Date',    text => t8('Invoice Date'), },
   vcnumber          => { type => 'Rose::DB::Object::Metadata::Column::Text',    text => t8('Customer/Vendor Number'), },
-  customer_id       => { type => 'Rose::DB::Object::Metadata::Column::Integer', text => t8('Customer ID'), },
-  vendor_id         => { type => 'Rose::DB::Object::Metadata::Column::Integer', text => t8('Vendor ID'), },
+  customer_id       => { type => 'Rose::DB::Object::Metadata::Column::Integer', text => t8('Customer (database ID)'), },
+  vendor_id         => { type => 'Rose::DB::Object::Metadata::Column::Integer', text => t8('Vendor (database ID)'), },
 );
 
 my @datev_columns = qw(
@@ -65,7 +66,7 @@ my @datev_columns = qw(
   transdate    invnumber      amount
   debit_accno  debit_accname
   credit_accno credit_accname
-  tax
+  taxdescription tax
   tax_accno    tax_accname    taxkey
   notes
 );
@@ -324,7 +325,7 @@ sub do_datev_xml_table {
 sub datev_columns {
   my ($self, $table) = @_;
 
-  my %cols_by_primary_key = partition_by { $datev_column_defs{$_}{primary_key} } @datev_columns;
+  my %cols_by_primary_key = partition_by { 1 * $datev_column_defs{$_}{primary_key} } @datev_columns;
   $::lxdebug->dump(0,  "cols", \%cols_by_primary_key);
 
   for my $column (@{ $cols_by_primary_key{1} }) {
@@ -338,7 +339,7 @@ sub datev_columns {
     })
   }
 
-  for my $column (@{ $cols_by_primary_key{''} }) {
+  for my $column (@{ $cols_by_primary_key{0} }) {
     my $type = $column_types{ $datev_column_defs{$column}{type} };
 
     die "unknown col type @{[ ref $column]}" unless $type;
@@ -413,6 +414,7 @@ sub do_datev_csv_export {
       credit_accno     => $haben->{accno},
       credit_accname   => $haben->{accname},
       tax              => defined $amount->{net_amount} ? abs($amount->{amount}) - abs($amount->{net_amount}) : 0,
+      taxdescription   => defined($soll->{tax_accno}) ? $soll->{taxdescription} : $haben->{taxdescription},
       notes            => $haben->{notes},
       (map { ($_ => $tax->{$_})                    } qw(taxkey tax_accname tax_accno)),
       (map { ($_ => ($haben->{$_} // $soll->{$_})) } qw(acc_trans_id invnumber name vcnumber transdate)),
diff --git a/locale/de/all b/locale/de/all
index a1b99468e..743b35fb7 100755
--- a/locale/de/all
+++ b/locale/de/all
@@ -891,7 +891,6 @@ $self->{texts} = {
   'Delivery Order'              => 'Lieferschein',
   'Delivery Order Date'         => 'Lieferscheindatum',
   'Delivery Order Date missing!' => 'Lieferscheindatum fehlt!',
-  'Delivery Order Items'        => 'Lieferscheinpositionen',
   'Delivery Order Number'       => 'Lieferscheinnummer',
   'Delivery Order created'      => 'Lieferschein erstellt',
   'Delivery Order deleted!'     => 'Lieferschein gelöscht!',
@@ -1272,7 +1271,6 @@ $self->{texts} = {
   'Export date'                 => 'Exportdatum',
   'Export date from'            => 'Exportdatum von',
   'Export date to'              => 'Exportdatum bis',
-  'Export for tax accountant'   => 'Export für Steuerberater',
   'Extend automatically by n months' => 'Automatische Verlängerung um x Monate',
   'Extended'                    => 'Gesamt',
   'Extended status'             => 'Erweiterter Status',
@@ -1362,7 +1360,6 @@ $self->{texts} = {
   'Gender'                      => 'Geschlecht',
   'General Ledger'              => 'Finanzbuchhaltung',
   'General Ledger Corrections'  => 'Korrekturen im Hauptbuch',
-  'General Ledger Entries'      => 'Dialogbuchungen',
   'General Ledger Transaction'  => 'Dialogbuchung',
   'General ledger and cash'     => 'Finanzbuchhaltung und Zahlungsverkehr',
   'General ledger corrections'  => 'Korrekturen im Hauptbuch',
@@ -1537,7 +1534,6 @@ $self->{texts} = {
   'Invoice Duedate'             => 'Fälligkeitsdatum',
   'Invoice Number'              => 'Rechnungsnummer',
   'Invoice Number missing!'     => 'Rechnungsnummer fehlt!',
-  'Invoice Positions'           => 'Rechnungspositionen',
   'Invoice deleted!'            => 'Rechnung gelöscht!',
   'Invoice filter'              => 'Rechnungsfilter',
   'Invoice for fees'            => 'Rechnung über Gebühren',
@@ -1867,7 +1863,6 @@ $self->{texts} = {
   'No valid number entered for pricegroup "#1".' => 'Für Preisgruppe "#1" wurde keine gültige Nummer eingegeben.',
   'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
   'No warehouse has been created yet or the quantity of the bins is not configured yet.' => 'Es wurde noch kein Lager angelegt, bzw. die dazugehörigen Lagerplätze sind noch nicht konfiguriert.',
-  'No, I really do need checked tables to export.' => 'Nein, ohne Belege die im Bericht aufgeommen werden sollen gibt es auch keinen Export.',
   'No.'                         => 'Position',
   'No/individual shipping address' => 'Keine/individuelle Lieferadresse',
   'None'                        => 'Kein',
@@ -1963,11 +1958,9 @@ $self->{texts} = {
   'Order value periodicity'     => 'Auftragswert basiert auf Periodizität',
   'Order/Item row name'         => 'Name der Auftrag-/Positions-Zeilen',
   'OrderItem'                   => 'Position',
-  'OrderItems'                  => 'Auftrags- und Angebotspositionen',
   'Ordered'                     => 'Von Kunden bestellt',
   'Orders'                      => 'Aufträge',
   'Orders / Delivery Orders deleteable' => 'Aufträge / Lieferscheine löschbar',
-  'Orders and Quotations, Sales and Purchase' => 'Aufträge und Angebote',
   'Orientation'                 => 'Seitenformat',
   'Orphaned'                    => 'Nie benutzt',
   'Orphaned currencies'         => 'Verwaiste Währungen',
@@ -2024,7 +2017,6 @@ $self->{texts} = {
   'Parts Master Data'           => 'Artikelstammdaten',
   'Parts must have an entry type.' => 'Waren m&uuml;ssen eine Buchungsgruppe haben.',
   'Parts with existing part numbers' => 'Artikel mit existierender Artikelnummer',
-  'Parts, Services, and Assemblies' => 'Stammdaten für Waren, Dienstleistungen und Erzeugnisse',
   'Parts, services and assemblies' => 'Waren, Dienstleistungen und Erzeugnisse',
   'Partsgroup (database ID)'    => 'Warengruppe (Datenbank-ID)',
   'Partsgroup (name)'           => 'Warengruppe (Name)',
@@ -2113,9 +2105,6 @@ $self->{texts} = {
   'Port'                        => 'Port',
   'Portrait'                    => 'Hochformat',
   'Position type in quotation/order' => 'Positionstyp in Angebot/Auftrag',
-  'Positions for all Delivery Orders' => 'Positionenen für alle Lieferscheine',
-  'Positions for all Invoices'  => 'Positionen für Verkaufsrechnungen und Einkaufsrechnungen',
-  'Positions for all Orders'    => 'Positionen für alle Aufträge und Angebote',
   'Post'                        => 'Buchen',
   'Post Payment'                => 'Zahlung buchen',
   'Post and E-mail'             => 'Buchen und E-Mail',
@@ -2215,7 +2204,6 @@ $self->{texts} = {
   'Purchase Delivery Orders deleteable' => 'Einkaufslieferscheine löschbar',
   'Purchase Invoice'            => 'Einkaufsrechnung',
   'Purchase Invoices'           => 'Einkaufsrechnungen',
-  'Purchase Invoices and Accounts Payables' => 'Einkaufsrechnungen und Kreditorenbuchungen',
   'Purchase Order'              => 'Lieferantenauftrag',
   'Purchase Orders'             => 'Lieferantenaufträge',
   'Purchase Orders deleteable'  => 'Lieferantenaufträge löschbar',
@@ -2416,7 +2404,6 @@ $self->{texts} = {
   'Sales Delivery Orders deleteable' => 'Verkaufslieferscheine löschbar',
   'Sales Invoice'               => 'Rechnung',
   'Sales Invoices'              => 'Kundenrechnungen',
-  'Sales Invoices and Accounts Receivables' => 'Verkaufsrechnungen und Debitorenbuchungen',
   'Sales Order'                 => 'Kundenauftrag',
   'Sales Orders'                => 'Aufträge',
   'Sales Orders Advance'        => 'Auftragsvorlauf',
