X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDATEV.pm;h=e79c08012a7fe07ef42fc89966f6325e3b490f6d;hb=b8ee6b6ed46e55095b955ee1800b8a4b8d8ccc3f;hp=406f09d76be5cc9ae04b8227be49104e8530782d;hpb=a23454bb1b039a31b7f77710ff663fa9152d530c;p=kivitendo-erp.git diff --git a/SL/DATEV.pm b/SL/DATEV.pm index 406f09d76..e79c08012 100644 --- a/SL/DATEV.pm +++ b/SL/DATEV.pm @@ -31,7 +31,6 @@ use strict; use SL::DBUtils; use SL::DATEV::KNEFile; -use SL::Taxkeys; use Data::Dumper; use DateTime; @@ -193,6 +192,16 @@ sub to { return $self->{to}; } +sub trans_id { + my $self = shift; + + if (@_) { + $self->{trans_id} = $_[0]; + } + + return $self->{trans_id}; +} + sub accnofrom { my $self = shift; @@ -342,11 +351,14 @@ sub _get_transactions { my $form = $main::form; + my $trans_id_filter = ''; + + $trans_id_filter = 'AND ac.trans_id = ' . $self->trans_id if $self->trans_id; + my ($notsplitindex); $fromto =~ s/transdate/ac\.transdate/g; - my $taxkeys = Taxkeys->new(); my $filter = ''; # Useful for debugging purposes 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'); @@ -354,44 +366,53 @@ sub _get_transactions { my $query = qq|SELECT ac.acc_trans_id, ac.transdate, ac.trans_id,ar.id, ac.amount, ac.taxkey, ar.invnumber, ar.duedate, ar.amount as umsatz, ar.deliverydate, - ct.name, + ct.name, ct.ustid, c.accno, c.taxkey_id as charttax, c.datevautomatik, c.id, ac.chart_link AS link, - ar.invoice + ar.invoice, + t.rate AS taxrate FROM acc_trans ac LEFT JOIN ar ON (ac.trans_id = ar.id) LEFT JOIN customer ct ON (ar.customer_id = ct.id) LEFT JOIN chart c ON (ac.chart_id = c.id) + LEFT JOIN tax t ON (ac.tax_id = t.id) WHERE (ar.id IS NOT NULL) AND $fromto + $trans_id_filter $filter UNION ALL SELECT ac.acc_trans_id, ac.transdate, ac.trans_id,ap.id, ac.amount, ac.taxkey, ap.invnumber, ap.duedate, ap.amount as umsatz, ap.deliverydate, - ct.name, + ct.name,ct.ustid, c.accno, c.taxkey_id as charttax, c.datevautomatik, c.id, ac.chart_link AS link, - ap.invoice + ap.invoice, + t.rate AS taxrate FROM acc_trans ac LEFT JOIN ap ON (ac.trans_id = ap.id) LEFT JOIN vendor ct ON (ap.vendor_id = ct.id) LEFT JOIN chart c ON (ac.chart_id = c.id) + LEFT JOIN tax t ON (ac.tax_id = t.id) WHERE (ap.id IS NOT NULL) AND $fromto + $trans_id_filter $filter UNION ALL SELECT ac.acc_trans_id, ac.transdate, ac.trans_id,gl.id, ac.amount, ac.taxkey, gl.reference AS invnumber, gl.transdate AS duedate, ac.amount as umsatz, NULL as deliverydate, - gl.description AS name, + gl.description AS name, NULL as ustid, c.accno, c.taxkey_id as charttax, c.datevautomatik, c.id, ac.chart_link AS link, - FALSE AS invoice + FALSE AS invoice, + t.rate AS taxrate FROM acc_trans ac LEFT JOIN gl ON (ac.trans_id = gl.id) LEFT JOIN chart c ON (ac.chart_id = c.id) + LEFT JOIN tax t ON (ac.tax_id = t.id) WHERE (gl.id IS NOT NULL) AND $fromto + $trans_id_filter $filter ORDER BY trans_id, acc_trans_id|; @@ -458,7 +479,6 @@ sub _get_transactions { } } - my %taxid_taxkeys = (); my $absumsatz = 0; if (scalar(@{$trans}) <= 2) { push @{ $self->{DATEV} }, $trans; @@ -528,13 +548,11 @@ sub _get_transactions { push @{ $self->{DATEV} }, [ \%new_trans, $trans->[$j] ]; } elsif (($j != $notsplitindex) && !$trans->[$j]->{is_tax}) { - my %tax_info = $taxkeys->get_full_tax_info('transdate' => $trans->[$j]->{transdate}, - 'deliverydate' => $trans->[$j]->{deliverydate}); my %new_trans = (); map { $new_trans{$_} = $trans->[$notsplitindex]->{$_}; } keys %{ $trans->[$notsplitindex] }; - my $tax_rate = $tax_info{taxkeys}->{ $trans->[$j]->{'taxkey'} }->{taxrate}; + my $tax_rate = $trans->[$j]->{'taxrate'}; $new_trans{'net_amount'} = $trans->[$j]->{'amount'} * -1; $new_trans{'tax_rate'} = 1 + $tax_rate; @@ -792,6 +810,7 @@ sub kne_buchungsexport { my $datevautomatik = 0; my $taxkey = 0; my $charttax = 0; + my $ustid =""; my ($haben, $soll); my $iconv = $::locale->{iconv_utf8}; my %umlaute = ($iconv->convert('ä') => 'ae', @@ -826,7 +845,6 @@ sub kne_buchungsexport { $soll = $i; } } - # Umwandlung von Umlauten und Sonderzeichen in erlaubte Zeichen bei Textfeldern foreach my $umlaut (keys(%umlaute)) { $transaction->[$haben]->{'invnumber'} =~ s/${umlaut}/${umlaute{$umlaut}}/g; @@ -854,6 +872,9 @@ sub kne_buchungsexport { if ($transaction->[$haben]->{'name'} ne "") { $buchungstext = "\x1E" . $transaction->[$haben]->{'name'} . "\x1C"; } + if ($transaction->[$haben]->{'ustid'} ne "") { + $ustid = "\xBA" . $transaction->[$haben]->{'ustid'} . "\x1C"; + } if ($transaction->[$haben]->{'duedate'} ne "") { $belegfeld2 = "\xBE" . &datetofour($transaction->[$haben]->{'duedate'}, 1) . "\x1C"; } @@ -885,6 +906,7 @@ sub kne_buchungsexport { $kne_file->add_block($datum); $kne_file->add_block($konto); $kne_file->add_block($buchungstext); + $kne_file->add_block($ustid); $kne_file->add_block($waehrung . "\x79"); }