From 1422e28a66f8a5def07ce531db0c07a3ff6e8432 Mon Sep 17 00:00:00 2001 From: "G. Richardson" Date: Wed, 11 Jan 2012 10:36:01 +0100 Subject: [PATCH] =?utf8?q?Bug=201676=20-=20DATEV=20Export=20bei=20gemischt?= =?utf8?q?er=20Rechnung/Gutschrift=20schl=C3=A4gt=20fehl?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Bei ar/ap-Rechnungen wird jetzt nicht mehr nach dem größten Betrag gesucht, sondern nach dem Buchungskonto wo link AR oder AP ist, also das Forderungs- oder Verbindlichkeitskonto. Damit klappen auch gemischte Rechnungen/Gutschriften im Export wieder. --- SL/DATEV.pm | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/SL/DATEV.pm b/SL/DATEV.pm index 7f38c88c1..cd04053ba 100644 --- a/SL/DATEV.pm +++ b/SL/DATEV.pm @@ -426,10 +426,11 @@ sub _get_transactions { $ref->{is_tax} = 1; } - if ( !$ref->{invoice} - && $ref->{is_tax} - && !($prev_ref->{is_tax}) - && (_sign($ref->{amount}) == _sign($prev_ref->{amount}))) { + if ( !$ref->{invoice} # we have a non-invoice booking (=gl) + && $ref->{is_tax} # that has "is_tax" set + && !($prev_ref->{is_tax}) # previous line wasn't is_tax + && (_sign($ref->{amount}) == _sign($prev_ref->{amount}))) # and sign same as previous sign + { $trans->[$i - 1]->{tax_amount} = $ref->{amount}; } } @@ -442,7 +443,10 @@ sub _get_transactions { } for my $j (0 .. (scalar(@{$trans}) - 1)) { - if (abs($trans->[$j]->{'amount'}) > abs($absumsatz)) { + # for gl-bookings no split is allowed and there is no AR/AP account, so we always use the maximum value as a reference + # for ap/ar bookings we can always search for AR/AP in link and use that + if ( ( not $trans->[$j]->{'invoice'} and abs($trans->[$j]->{'amount'}) > abs($absumsatz) ) + or ($trans->[$j]->{'invoice'} and ($trans->[$j]->{'link'} eq 'AR' or $trans->[$j]->{'link'} eq 'AP'))) { $absumsatz = $trans->[$j]->{'amount'}; $notsplitindex = $j; } -- 2.20.1