use SL::DBUtils;
use SL::DATEV::KNEFile;
-use SL::Taxkeys;
use Data::Dumper;
use DateTime;
return $self->{to};
}
+sub trans_id {
+ my $self = shift;
+
+ if (@_) {
+ $self->{trans_id} = $_[0];
+ }
+
+ return $self->{trans_id};
+}
+
sub accnofrom {
my $self = shift;
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');
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|;
}
}
- my %taxid_taxkeys = ();
my $absumsatz = 0;
if (scalar(@{$trans}) <= 2) {
push @{ $self->{DATEV} }, $trans;
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;
my $datevautomatik = 0;
my $taxkey = 0;
my $charttax = 0;
+ my $ustid ="";
my ($haben, $soll);
my $iconv = $::locale->{iconv_utf8};
my %umlaute = ($iconv->convert('ä') => 'ae',
$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;
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";
}
$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");
}