DATEV-Export: Option "als Personenkonten exportieren"
authorG. Richardson <grichardson@kivitec.de>
Mon, 2 Oct 2017 06:54:16 +0000 (08:54 +0200)
committerJan Büren <jan@kivitendo-premium.de>
Mon, 2 Oct 2017 11:28:26 +0000 (13:28 +0200)
statt der Sammelkontonummer wird beim Export immer die Kunden- bzw.
Lieferantennummer exportiert. Es wird noch nicht auf eine gültige
Kontonummer (z.B. 10000-69999 und 70000-99999) geprüft.

SL/DATEV.pm
bin/mozilla/datev.pl
locale/de/all
locale/en/all
templates/webpages/datev/export_bewegungsdaten.html

index 00e0aa3..426788a 100644 (file)
@@ -225,6 +225,16 @@ sub warnings {
   }
 }
 
+sub use_pk {
+ my $self = shift;
+
+ if (@_) {
+   $self->{use_pk} = $_[0];
+ }
+
+ return $self->{use_pk};
+}
+
 sub accnofrom {
  my $self = shift;
 
@@ -440,11 +450,18 @@ sub generate_datev_data {
 
   my %all_taxchart_ids = selectall_as_map($form, $self->dbh, qq|SELECT DISTINCT chart_id, TRUE AS is_set FROM tax|, 'chart_id', 'is_set');
 
+  my $ar_accno = "c.accno";
+  my $ap_accno = "c.accno";
+  if ( $self->use_pk ) {
+    $ar_accno = "CASE WHEN ac.chart_link = 'AR' THEN ct.customernumber ELSE c.accno END as accno";
+    $ap_accno = "CASE WHEN ac.chart_link = 'AP' THEN ct.vendornumber   ELSE c.accno END as accno";
+  }
+
   my $query    =
     qq|SELECT ac.acc_trans_id, ac.transdate, ac.gldate, ac.trans_id,ar.id, ac.amount, ac.taxkey, ac.memo,
          ar.invnumber, ar.duedate, ar.amount as umsatz, ar.deliverydate, ar.itime::date,
          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_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.taxdescription,
          'ar' as table,
@@ -473,7 +490,7 @@ sub generate_datev_data {
        SELECT ac.acc_trans_id, ac.transdate, ac.gldate, ac.trans_id,ap.id, ac.amount, ac.taxkey, ac.memo,
          ap.invnumber, ap.duedate, ap.amount as umsatz, ap.deliverydate, ap.itime::date,
          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_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.taxdescription,
          'ap' as table,
@@ -956,6 +973,7 @@ sub generate_datev_lines {
 
     if ($trans_lines >= 2) {
 
+      # Personenkontenerweiterung: accno has already been replaced if use_pk was set
       $datev_data{'gegenkonto'} = $transaction->[$haben]->{'accno'};
       $datev_data{'konto'}      = $transaction->[$soll]->{'accno'};
       if ($transaction->[$haben]->{'invnumber'} ne "") {
index e5c048b..d34f0e3 100644 (file)
@@ -112,6 +112,7 @@ sub export3 {
       $::form->{zeitraum}, $::form->{monat}, $::form->{quartal},
       $::form->{transdatefrom}, $::form->{transdateto},
     );
+    $data{use_pk} = $::form->{use_pk};
   } else {
     die 'invalid exporttype';
   }
index 0bb3126..9b5f4d2 100755 (executable)
@@ -1341,6 +1341,7 @@ $self->{texts} = {
   'Export date to'              => 'Exportdatum bis',
   'Export error in transaction #1: Rounding error too large #2' => 'Exportfehler in Transaktion #1: Zu großer Rundungsfehler (#2)',
   'Export error in transaction #1: Unbalanced ledger before next transaction (#2)' => 'Exportfehler in Transaktion #1: Unausgeglichene Buchung',
+  'Export with CV Charts'       => 'Mit Personenkonten exportieren',
   'Extend automatically by n months' => 'Automatische Verlängerung um x Monate',
   'Extended'                    => 'Gesamt',
   'Extended status'             => 'Erweiterter Status',
index efa2072..7f38936 100644 (file)
@@ -1340,6 +1340,7 @@ $self->{texts} = {
   'Export date to'              => '',
   'Export error in transaction #1: Rounding error too large #2' => '',
   'Export error in transaction #1: Unbalanced ledger before next transaction (#2)' => '',
+  'Export with CV Charts'       => '',
   'Extend automatically by n months' => '',
   'Extended'                    => '',
   'Extended status'             => '',
index f8bd353..e10aa79 100644 (file)
   <td><hr size=3 noshade></td>
   </tr>
   [% END %]
+   <tr>
+     <td>
+        <table>
+         <tr>
+           <td align=left>[% 'Export with CV Charts' | $T8 %]</td>
+           <td align=left></td>
+           <td>[% L.checkbox_tag('use_pk', value => 1, checked => 0) %]</td>
+         </tr>
+        </table>
+     </td>
+   </tr>
+   <tr>
+  <td><hr size=3 noshade></td>
+  </tr>
 </table>
 
 <input type=hidden name=beraternr value="[% beraternr %]">