In der s_order_basket sind bei netprice Zahlen drin mit mehreren Nachkommastellen. Leider ist der Eintrag bei price falsch. Beispiel: netprice: 0,1074 bei price steht nun 0,1278. Wenn ich aber 0,1074 * 19% MwSt. rechne kommt 0,127806 raus. So kommt es bei mir zu teilweise extremen Rundungsfehlern. Wie bekomme ich es hin das Shopware in price auch alle Nachkommastellen einträgt? Danke im Voraus.
Schon komisch dass das niemand beantworten kann…
[quote=„parkkralleshop“]Schon komisch dass das niemand beantworten kann…[/quote] Mhhh, aber wenn du den Betrag von 0,127806 auf 4 Stellen nach dem Komma rundest, dann kommt doch der Wert aus der DB raus. 0,1278€. Somit ist es doch korrekt und es gibt keine Rundungsfehler Ich verstehe dein Problem nicht wirklich!
Ich möchte ja nicht dass er das auf 4 Stellen rundet. Er soll es gar nicht runden. Wenn ich rechne: 2000 * 0,1278 = 255,60 € 2000 * 0,127806 = 255,61 € So stimmt der Betrag nicht mehr…
Ich habe leider das Gefühl dass bei solchen Fragen niemand eine Antwort hat, finde ich schade. Bin sonst sehr begeistert von dem Shopsystem aber hier heißt es wohl “nimm den Shop wie er ist oder seh zu wie du klar kommst”. Hätte ich nicht gedacht…
Hey, das lässt sich nicht so einfach anpassen, da an vielen verschiedenen Stellen im Shop gerundet wird. Also vor allem in den Dateien sAdmin, sBasket und sArticles - da müsstest du dann ggf. diese Methoden jeweils anpassen. In Shopware 4 wird man die Rundung frei konfigurieren können. Es gibt aber keine einfache Lösung ala ändere Datei A und Zeile B.
Dass ich im Adminbereich bei den Artikeln Preise mit vielen Nachkommastellen eintragen kann habe ich auch hinbekommen. Habe in sArticles und sBasket mich schon dumm und dämlich gesucht, hier versucht was zu ändern und da aber mit meinem Halbwissen bin ich da dann doch an meine Grenzen gestoßen. Eigentlich suche ich ja auch nur den Teil wo Shopware den Preis in s_order_basket einträgt, und zwar den Bruttopreis. Denn der Nettopreis hat dort alle Nachkommastellen, nur der Brutto Preis nicht.
Das passiert in sBasket->sAddArticle und sBasket->sUpdateArticle
Danke aber trotzdem ein Problem für mich. Habe das Gefühl dass Shopware Änderungen die ich an der Datei mache vollkommen kalt lässt. Beispiel: Wenn ich in der sBasket->sAddArticle vor „INSERT INTO s_order_basket …“ folgendes schreibe: $getPrice["price"] = 500;
Dann müsste doch eigentlich 500 in die Datenbank eingetragen werden oder? Wird aber nicht…
Die Preise werden in der sUpdateArticle bei jedem Aufruf neu synchronisiert - d.h. du müsstest dort deine Rundungsanpassungen vornehmen - in der sAddArticle werden im Prinzip nur die grundsätzlichen Meta-Daten gesetzt - der Rest passiert in der anderen Methode!
Habe es jetzt geschafft. Übrigens hat die Methode sGetBasket auch eine große Rolle gespielt. $getArticles[$key]["amount"] = $quantity \* round($price, 2);
geändert in $getArticles[$key]["amount"] = $quantity \* $price;
Dann rechnet er auch mit allen Nachkommastellen aus s_order_basket.price
Hallo, wie lässt sich dieses Problem denn nun komplett beseitigen? Könnten Sie evtl. eine Anleitung dafür zur Verfügung stellen, da ich mit dem selben Problem zu “kämpfen” habe. MfG
Welches Problem besteht denn? Nur dass er nicht richtig rechnet oder können Sie zu wenig Stellen hinter dem Komma eintragen im Adminbereich? Wenn er nur nicht richtig rechnet dann öffnen Sie folgende Datei: engine/core/class/sBasket.php Dort finden Sie den Eintrag $getArticles[$key]["amount"] = $quantity \* round($price, 2);
Diesen ändern Sie in: $getArticles[$key]["amount"] = $quantity \* $price;
Dann sollte es eigentlich klappen.
Danke erst einmal, Also Mein Problem ist, das der Shop bei der Bezahlung die richtigen Werte anzeigt, jedoch nicht an die Firma des Zahlungsplugins übermittelt, da ist ein Rundungsfehler. Als Beispiel: Bei für einen Artikel werden 1,6065 € fällig multipliziert mit 12 wären das dann 19,28€. Dies steht dann auch als Summe unten was ja richtig ist. Aber übertragen wird für jeden Artikel 1,61 € * 12, also 19,32 €. Das ist eine Differenz von 4 Cent die die Zahlungspluginfirma erhät sobald bezahlt wird, daraufhin wird die Bestellung abgebrochen da die Beträge von einander abweichen. Vermute, das das an dieser Zeile hier liegt: $getArticles[$key][„amountWithTax“] = round(1 * ($price / 100 * (100+$tax)),2) Vielen Dank im Voraus! MfG
Kann sein dass das an dieser Zeile liegt. Wenn ja, dann versuche mal die Zeile wie folgt zu ändern: $getArticles[$key]["amountWithTax"] = 1 \* ($price / 100 \* (100+$tax));
Vielleicht geht das ja.