X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDATEV.pm;h=8d6a63dd961d426fa83556f36b86e31ff7e2f632;hb=7d3aaeeae917c63a6275d6b886b6b74da2b53121;hp=6c6f1c744916d09350e0aed587b114428d07d78b;hpb=7274f9c8e8c61b00ff7a4e2bad6accec85015a73;p=kivitendo-erp.git diff --git a/SL/DATEV.pm b/SL/DATEV.pm index 6c6f1c744..8d6a63dd9 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; } @@ -848,6 +852,16 @@ sub kne_buchungsexport { $umsatzsumme += $umsatz; $kne_file->add_block("+" . $umsatz); + # Dies ist die einzige Stelle die datevautomatik auswertet. Was soll gesagt werden? + # Im Prinzip hat jeder acc_trans Eintrag einen Steuerschlüssel, außer, bei gewissen Fällen + # wie: Kreditorenbuchung mit negativen Vorzeichen, SEPA-Export oder Rechnungen die per + # Skript angelegt werden. + # Also falls ein Steuerschlüssel da ist und NICHT datevautomatik diesen Block hinzufügen. + # Oder aber datevautomatik ist WAHR, aber der Steuerschlüssel in der acc_trans weicht + # von dem in der Chart ab: Also wahrscheinlich Programmfehler (NULL übergeben, statt + # DATEV-Steuerschlüssel) oder der Steuerschlüssel des Kontos weicht WIRKLICH von dem Eintrag in der + # acc_trans ab. Gibt es für diesen Fall eine plausiblen Grund? + # if ( ( $datevautomatik || $taxkey) && (!$datevautomatik || ($datevautomatik && ($charttax ne $taxkey)))) { # $kne_file->add_block("\x6C" . (!$datevautomatik ? $taxkey : "4")); @@ -942,7 +956,7 @@ sub kne_stammdatenexport { push @values, $form->{accnoto}; } - my $where_str = ' WHERE ' . join(' AND ', map { "($_)" } @where) if (scalar @where); + my $where_str = @where ? ' WHERE ' . join(' AND ', map { "($_)" } @where) : ''; my $query = qq|SELECT c.accno, c.description FROM chart c