From 0802cc15e703f9fec7d531a37827003e026c1667 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sven=20Sch=C3=B6ling?= Date: Mon, 2 May 2011 12:30:19 +0200 Subject: [PATCH] =?utf8?q?Bugfix:=20Subcent=20Buchungen=20f=C3=BChrten=20z?= =?utf8?q?u=20unbalanced=20ledger=20in=20DATEV=20Export.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Wenn eine 1 cent Buchung auf ein normal versteuertes Konto gebucht wurde tauchten die Buchungen in der folgenden Reihenfolge in der Datenbank auf: -0.00840 -0.00160 +0.01000 Der Algorithmus, der die Buchungen aufsummiert, ist aus historischen Gründen recht nachgiebig und bricht das aufsummieren ab, sobald die Summe der bisherigen Buchungen kleiner ist als ein Cent. In diesem Fall ist das schon nach der ersten Buchung der Fall, und bei der dritten Buchung wird dann ein unbalanced ledger Fehler geworfen. Der Fix prüft auf solche kleinen Werte und wechselt dafür in einen subcent Modus, in dem auf zehntel Cent geprüft wird. --- SL/DATEV.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SL/DATEV.pm b/SL/DATEV.pm index 60eb97f90..775d4dff7 100644 --- a/SL/DATEV.pm +++ b/SL/DATEV.pm @@ -399,8 +399,9 @@ sub _get_transactions { my $count = $ref->{amount}; my $firstrun = 1; + my $subcent = abs($count) < 0.02; - while (abs($count) > 0.01 || $firstrun) { + while (abs($count) > 0.01 || $firstrun || ($subcent && abs($count) > 0.001)) { my $ref2 = $sth->fetchrow_hashref("NAME_lc"); last unless ($ref2); -- 2.20.1