Erstellt vor 5 Jahren
Geschlossen vor 5 Jahren
#1252 closed Fehler (fixed)
Berechnung vom Ertrag nicht korrekt
| Erstellt von: | u-konrad@… | Verantwortlicher: | s.schoeling@… |
|---|---|---|---|
| Priorität: | hoch | Meilenstein: | |
| Komponente: | kivitendo ERP | Version: | 2.6.2 unstable |
| Schweregrad: | Verbesserung | Stichworte: | Verkauf |
| Beobachter: | m.bunkus@…, s.schoeling@… |
Beschreibung
Mir ist etwas aufgefallen ! Die Berechnubg des Ertrages in Auträgen und Rechnungen kommt aus dem Tritt sobald Preisfaktoren und Rabatte zusammen ins Spiel kommen und die Menge mehr als 1 Teil entspricht. Schnell gibt es dann hohe negative Erträge ( die wir natürlich alle nicht haben wollen :)) ). Ich habe den Fehler in der io.pl ausgemacht. Ich habe auch einen fix dafür, so das es wieder korrekte Erträge gibt. Ich paste das mal hier in die Message da ich nicht so richtig mit diff gearbeitet habe bisher. Ihr könnt den Patch ja mal unter die Lupe nehmen, mir ist nämlich die Bedeutung von $marge_price_factor nicht so ganz klar gewesen, ob dieser überhaupt genutzt wird und wo der her kommt. Ebenso ist noch die $marge_adjust_credit_note mit meiner Änderung zu testen, ich habe keine Ahnung wo man das setzten kann. Kurz um, hier meine Änderungen, alle in io.pl im Block "# begin marge calculations".
Mit freundlichen Grüßen
Uwe Konrad
# begin marge calculations
my $marge_color;
# my $real_sellprice = ($form->{"sellprice_$i"} - $discount) / $price_factor; # remove
| 1; #remove |
my $marge_price_factor = $price_factor ; # eingefügt von Uwe Konrad
my $real_sellprice = $linetotal; # eingefügt von Uwe Konrad
$form->{"lastcost_$i"} *= 1;
$form->{"marge_percent_$i"} = 0;
if ($real_sellprice && ($form->{"qty_$i"} * 1)) {
# $form->{"marge_percent_$i"} = ($real_sellprice - $form->{"lastcost_$i"} / $marge_price_factor) * 100 / $real_sellprice; # remove
$form->{"marge_percent_$i"} = ($real_sellprice - ($form->{"lastcost_$i"} / $marge_price_factor) * $form->{"qty_$i"}) * 100 / $real_sellprice; # eingefügt v\
on Uwe Konrad
$myconfig{marge_percent_warn} 15; $marge_color = 'color="#ff0000"' if $form->{"id_$i"} && ($form->{"marge_percent_$i"} < (1 * $myconfig{marge_percent_warn}));
}
my $marge_adjust_credit_note = $form->{type} eq 'credit_note' ? -1 : 1;
# $form->{"marge_absolut_$i"} = ($real_sellprice - $form->{"lastcost_$i"} / $marge_price_factor) * $form->{"qty_$i"} * $marge_adjust_credit_note; #remove
$form->{"marge_absolut_$i"} = ($real_sellprice - ($form->{"lastcost_$i"} / $marge_price_factor) * $form->{"qty_$i"}) * $marge_adjust_credit_note; # eingefügt von\
Uwe Konrad
$form->{"marge_total"} += $form->{"marge_absolut_$i"};
$form->{"lastcost_total"} += $form->{"lastcost_$i"} * $form->{"qty_$i"} / $marge_price_factor;
# $form->{"sellprice_total"} += $real_sellprice * $form->{"qty_$i"}; # remove
$form->{"sellprice_total"} += $real_sellprice; # Uwe Konrad
map { $form->{"${_}_$i"} = $form->format_amount(\%myconfig, $form->{"${_}_$i"}, 2) } qw(marge_absolut marge_percent);
push @ROW2, { value => sprintf qq|<font %s><b>%s</b> %s %s%% </font> <b>%s</b> %s <b>%s</b> %s|,
$marge_color, $locale->text('Ertrag'),$form->{"marge_absolut_$i"}, $form->{"marge_percent_$i"},
$locale->text('LP'), $form->format_amount(\%myconfig, $form->{"listprice_$i"}, 2),
$locale->text('EK'), $form->format_amount(\%myconfig, $form->{"lastcost_$i"}, 2) }
if $form->{"id_$i"} && ($form->{type} =~ /sales_/ $form->{type} =~ /invoice/) && !$is_delivery_order;
# / marge calculations ending
Anhänge (1)
Änderungshistorie (7)
comment:1 Geändert vor 5 Jahren durch m.bunkus@…
- Status von new nach assigned, m.bunkus@linet-services.de geändert
comment:2 Geändert vor 5 Jahren durch u-konrad@…
So, habe den patch mit diff erstellt und angehängt, viel Erfolg. Und bitte noch einmal testen, sollte aber auf jeden Fall bessere Ergebnisse liefern als ohne :))
Mit freundlichen Grüßen
Uwe Konrad
comment:3 Geändert vor 5 Jahren durch s.schoeling@…
- Beobachter s.schoeling@… hinzugefügt
- Verantwortlicher von p.reetz@… nach s.schoeling@… geändert
comment:4 Geändert vor 5 Jahren durch s.schoeling@…
Sooo, ich habe den Patch jetzt mit einigen Modifikationen eingespielt, $marge_price_factor ist für Unterschiede in Preisfaktoren zwischen Stammdaten und der Belegmaske zuständig.
Was mir jetzt noch wirklich helfen würde, wären Fallbeispiele des ursprünglichen Bugs, mit konkreten Zahlen.
comment:5 Geändert vor 5 Jahren durch u-konrad@…
Ich habe die neue Version ausprobiert, alles was bei mir falsch gerechnet wurde beim Ertrag, ist nun KORREKT. Konkrete Werte braucht man aber nicht um den Bug zu testen :)) ????!!! Einfach eine Ware anlegen, der besseren Nachrechenbarkeit wegen zb. mit EK. 100 Euro VK. 1000 Euro. Nun einen Auftrag bzw. eine Rechnung erstellen mit dieser Ware. Detailanzeige anschalten, und mit der Menge, den Prozenten, und dem Preisfaktor spielen. Dann einfach mal zu Fuss nachrechnen. In der alten Verion kamen hier beim Ertrag ganz schnell hohe negative Erträge heraus da die Menge beim berechnen des Ertrages mal berücksichtigt wurde und mal nicht.
Mit freundlichen Grüßen
Uwe Konrad
comment:6 Geändert vor 5 Jahren durch m.bunkus@…
- Lösung auf fixed gesetzt
- Status von assigned nach closed geändert

Danke erst einmal für die Arbeit, allerdings ist es nicht einfach, den Text so wie er ist zu übernehmen. Mir wäre ein Patch deutlich lieber, und das Erstellen ist auch nicht so schwer:
Zuerst brauchen Sie eine unmodifizierte Version der io.pl. Diese legen Sie irgendwo ab, z.B. unter dem Namen "io.pl.orig" um Lx-Office-Unterverzeichnis "bin/mozilla".
Dann brauchen Sie natürlich Ihre modifizierte io.pl -- ich gehe einfach mal davon aus, dass sich diese weiterhin in "bin/mozilla" befindet.
Danach rufen Sie einfach folgenden Befehl im Lx-Office-Unterverzeichnis "bin/mozilla" auf:
diff -u io.pl.orig io.pl > fix-marge.diff
Diese Datei fix-marge.diff ist der Patch. Bitte hängen Sie ihn an diesen Bugreport an.
Danke sehr.