Rundungsfehler?

12. April 2010 15:12

Hallo an Alle,

mir ist gerade ein sehr merkwürdiger Fehler aufgefallen. Ich habe in einer Einkaufsrechnung einen Artikel mit einem Einkaufspreis: 0,0495€ und eine Menge: 2,43333 Wenn ich das mit dem Rechner zusammenrechne komme ich auf: 0,120449835€ bei einer Rundungspräzision von 4 Stellen würde nach kaufmännischer Rundung 0,1205 rauskommen, mein Navision rechnet mir jedoch 0,1204 aus. Das sieht mir so aus das er nicht rundet sondern nur abschneidet. Was läuft denn da falsch, benutzt Navision nur die folgende Dezimalstelle zur Rundung?

Ist das schonmal jemanden aufgefallen?


VG
Rene

Re: Rundungsfehler?

12. April 2010 16:15

?
die 5. Nachkommastelle ist doch 4, also wird hier -richtig- abgerundet.

Markus

Re: Rundungsfehler?

12. April 2010 16:17

Achtung, was NAV dir in der Zeile anzeigt und im Feld abspeichert, ist nicht unbedingt dasselbe.
Stehst du in der Rechnungszeile (Form), siehst du 0,1204.
Was jedoch siehst du in der Tabelle? Ich glaube, der Zoom liefert nur die Form-Ansicht, aber probier das besser aus.

DecimalPlaces auf Forms rundet Feldwerte nicht, es formatierung sie nur, indem es sie abschneidet - wenn ich mich nicht irre.
Nur unter Zuhilfenahme des ROUND-Befehls im Quelltext(!) werden gerundete Werte in die DB geschrieben.

Re: Rundungsfehler?

12. April 2010 16:26

Hallo und vielen Dank euch beiden.

@Markus: Kann man denn einstellen wieviel Stellen er zu Rundung heranziehen soll? Denn wenn man die komplette berechnete Summe betrachtet ist es halt falsch gerundet.

@Natalie: Ich habe auch schon direkt in die SQL DB geschaut und da sind die Werte mit 000... aufgefüllt, ich hatte das Ursprünglich auch so verstanden das die Werte in der Anzeige entsprechend "formatiert" werden aber in der DB noch richtig drin stehen. Demnach müsste ja der ungerundete Betrag in der DB stehen aber das ist ja nicht der Fall.

Irgendwie bin ich gerade am verzweifeln.

Re: Rundungsfehler?

12. April 2010 16:34

kockiren hat geschrieben:Kann man denn einstellen wieviel Stellen er zu Rundung heranziehen soll?

Was den Wert angeht, der von NAV berechnet und dann tatsächlich in die DB geschrieben wird:
Fibu-Einrichtung
Felder Stückpreisrundungspräzision (z.B. VK-Preis) und Betragsrundungspräzision (z.B. Zeilenbetrag), standardmäßig dort nicht eingeblendet.
Standardwerte:
Stückpreisrundungspräzision = 0,00001(=5 NKS)
Betragsrundungspräzision = 0,01 (= 2 NKS)

Berechnungen finden auch dann statt, wenn du ein Feld füllst und es für dieses Feld einen "MW-Zwilling" gibt. Dieses zweite Feld muss ja dann automatisch mitbefüllt werden und vorher in die richtige Währung konvertiert werden.

Re: Rundungsfehler?

12. April 2010 18:21

Hallo Natalie,

ich habe mir, damit ich mir 4 Dezimalstellen anzeigen lassen kann, eine Pseudowährung EURO erzeugt die hat:

Betragsrundungspräzision: 0,0001 (anzeige von 4 dezimalstellen auf Rechnungen)
Betragsdezimalstellen: 4:6
Rechnungsrundungspräzision: 0,0001
Stückpreisrundungspräzision: 0,000001
Stückpreisdezimalstellen: 2:6

Das heißt ja eigentlich müsste er doch nun 6 Dezimalstellen zur Rundung heran ziehen, aber er rundet immer noch nach 5 Stellen, das versteh ich nicht.

VG
Rene

Re: Rundungsfehler?

12. April 2010 19:33

Mir hat das jetzt auch keine Ruhe gelassen :mrgreen: , sodass ich zuhause etwas im Standard-Quelltext gestöbert habe.

Also, wenn die Menge schon eingegeben ist und du jetzt noch den u.g. Preis pflegst, wird der Zeilenbetrag (um den geht es doch, oder?) so gesetzt:

Code:
  "Line Amount" :=
    ROUND(Quantity * "Direct Unit Cost",Currency."Amount Rounding Precision") - "Line Discount Amount";


"Line Discount Amount" ist der Rechnungsrabattbetrag; den können wir in deinem Fall ignorieren.
Bleibt:
Code:
ROUND(Quantity * "Direct Unit Cost",Currency."Amount Rounding Precision");

und jetzt im Klartext:
Code:
Zeilenbetrag = Menge * EK-Preis, gerundet wie in Währung für Beträge hinterlegt.

Währung? Ist ein Hilfskonstrukt, wird in Funktion GetPurchHeader gefüllt und besagt:
  • Hat dein EK-Rechnungskopf das Feld Währungscode gefüllt, so wird in die Tabelle Währung geschaut, Feld "Amount Rounding Precision".
  • Ist der Währungscode leer, so wird die Fibueinrichtung herangezogen, vorausgesetzt, die vorher genannten Felder sind gefüllt. Sind sie leer, greifen meine u.g. Standardwerte.
Welcher Fall trifft nun bei dir zu? Was steht im Feld "Amount Rounding Precision" der richtigen Tabelle bei dir?

Ach ja, und wenn das alles immernoch nicht zum Ziel führt, ist bestimmt eine Individualprogrammierung bei euch schuld :mrgreen:

Re: Rundungsfehler?

13. April 2010 11:18

Hallo Natalie,

so langsam komm ich hinter diese Sache. Also die Betragsrundungspräzision hab ich nun auf 5 Stellen hochgeschraubt und er rundet schon genauer, damit werden in "Sales Line" auch 5 Stellen angezeigt was ja okay ist Hauptsache die Posten stimmen, nun muss ich noch Präziser werden und auf 6 Stellen hochgehen, das geht aber nicht. Ich bekomm die Meldung das ich nur 5 Nachkommastellen angeben darf. Nun hab ich auch mal nen bissel durch den Code gestöbert und gesehen das er die Rounding Precision mit der aus der GL Setup vergleicht. Aber das ist doch blöd, da hab ich ja 2 Nachkommastellen drin stehen, wie es ja auch für die Buchhaltung richtig ist. Aber wo kommt denn die Beschränkung auf 5 Dezimalstellen her? Ich find dazu nirgends was. Hab auch mal nen neuen Mandanten angelegt und da ne neue Währung und das geht auch nicht, ich dachte vielleicht ist die Beschränkung deswegen da, da ich schon Buchungen habe und die mit 5 Stellen Rundungspräzision waren. Aber das war es auch nicht.


VG
Rene

Re: Rundungsfehler?

13. April 2010 11:48

Schade, dass du meine Fragen nicht beantwortet hast:

Natalie hat geschrieben:Hat dein EK-Rechnungskopf das Feld Währungscode gefüllt, so wird in die Tabelle Währung geschaut, Feld "Amount Rounding Precision".
Ist der Währungscode leer, so wird die Fibueinrichtung herangezogen, vorausgesetzt, die vorher genannten Felder sind gefüllt. Sind sie leer, greifen meine u.g. Standardwerte.
Welcher Fall trifft nun bei dir zu? Was steht im Feld "Amount Rounding Precision" der richtigen Tabelle bei dir?



kockiren hat geschrieben:Aber wo kommt denn die Beschränkung auf 5 Dezimalstellen her? Ich find dazu nirgends was.

Wenn du das Feld "Amount Rounding Precision" in der Fibu-Einrichtung meinst: ich denke, das liegt an der Feldeigenschaft (Tabelle) "DecimalPlaces" = 0:5.

Re: Rundungsfehler?

13. April 2010 12:33

Hallo Natalie,

sorry wegen der Frage, war wohl zu euphorisch als es plötzlich ging das ich die gar nicht mehr gesehen habe :-) Also ich habe im Rechnungskopf meine Pseudowährung drin stehen, somit wird die "Currency"."Amount Rounding Precision" von EURO = 0,00001 genommen. Das klappt ja nun auch. Wenn ich jetzt aber die Rundungspräzision auf 0,000001 stelle kommt die Meldung. Okay nun hab ich die Feldeigenschaft auf 2:6 gestellt und es kommt keine Meldung das die Nachkommastellen auf 5 beschränkt sind aber es geht immer noch nicht.

Die Dezimalstellen habe ich auf 4:4 gestellt, das heißt es wird mit 5 Stellen gerechnet aber es wird auf 4 Stellen gerundet. So soll es sein, nur das er noch die 6te Stelle in die Rundungspräzision aufnehmen soll.

VG
Rene