Hallo OliverS,
Du Beschreibst das Problem perfekt!
Dem letzten Satz muss ich aber widersprechen:
Aber du bekommst auch keine stimmigen Brutto- und Nettopreise hin, wenn du jedes Mal auf 2 Stellen rundest.
Der JTL-
Shop ist unser Zweitshop für FR/BE/LU, unser Hauptshop läuft unter
Shopware 6 (ja, diese frecherweise als "
stable release" gekennzeichnete "ewige Beta" 😣 ). Der hat zwar
massig andere Probleme, aber das mit der Rundung bekommt er hin: Zwar liegen auch dort die Preisdaten mit 4 Nachkommastellen in derShop-DB vor, gerechnet wird aber sowohl Brutto als auch Netto nur 2-stellig. Dadurch sind die Daten von der Produktseite bis zum Checkout und der Bestellung in beiden Modi zu annähernd 100% konsistent. Und das trotz Live-Umschalter Brutto/Netto und OSS-Plugin.
Das war der Hauptgrund, damals von JTL-4 auf Shopware umzusteigen, weil wir da keine Probleme bei unserem gemischten B2B / B2C Geschäft hatten. Mit dem parallel getesteten JTL-5 war das schlicht unmöglich.
Nur, damit das klar ist: Ich will hier auf
gar keinen Fall Werbung für Shopware machen (siehe auch
Trustpilot-Bewertungen)!!
Jedem, der sich darauf einlässt, muss klar sein, dass er oder sie massenhaft fehlende Funktionen per teurem Plugin-Abo nachrüsten muss (Willkommen in der Update-Hölle!), und selbst vorhandene Funktionen teilweise Fehler aufweisen - von der massenhaften Notwendigkeit, neue Produkte im Shop-Backend nachzubearbeiten (SEO-Url, Standard-Kategorie für Breadcrumbs u.a.) mal ganz abgesehen. Das Ding bereitet an Stellen schlaflose Nächte, die bei JTL "out of the Box" funktionieren; davon ist SW Lichtjahre entfernt.
Aber die Brutto-Netto-Geschichte war wegen des gemischten B2C/B2B Umfeldes und EU-weiter Lieferung einfach das KO-Kriterium für JTL, weswegen wir trotz aller anderen Probleme und Bauchschmerzen doch zu SW gewechselt sind. Mit fixen Brutto-Preisen im JTL-Shop funktioniert's zwar so halbwegs, aber wir müssen MwSt-Sätze von 17% (Luxemburg) bis 25% (Dänemark) abdecken - da ist das keine tragbare Option.
Wie Shopware das mit der Rundung intern macht, konnte ich übrigens nicht herausfinden, weil die Abläufe im Core dank Symfony kaum noch nachzuvollziehen sind. Aber durch Praxistests sehe ich das so:
$vkDB = Verkaufspreis/Stück in Shop-Datenbank, 4 Nachkommastellen
$vkNetto = round( $vkDB, 2)
$vkBrutto = round( $vkDB * ( (100 + $MwSt) / 100) , 2)
Der Brutto wird also auch basierend auf dem $vkDB berechnet, nicht auf Basis des zuvor ermittelten $vkNetto - andernfalls gäbe es im Live-Shop größere Rundungsfehler zwischen Brutto- und Netto-Darstellung, bzw. beim Wechsel des Lieferlandes (OSS). Es scheint also keine sukzessive Rundung zu geben, da alle weiteren Berechnungen im Warenkorb und Checkout (einschließlich Rabatten) konsistent sind. Einzig zu teilbaren Mengen kann ich nichts sagen (also z.B. 0,5 Meter), da bei uns nur Integer-Mengen vorkommen. Wird aber vermutlich auch korrekt gerundet.
Einen Haken gibt es natürlich:
Es kommt bei Bestellungen in der
Wawi gelegentlich zu Differenzen zwischen dem Verkaufspreis im Shop und dem im Artikel hinterlegten Verkaufspreis. Aber es ist einfacher, das dann dort zu korrigieren, als sich mit den Kunden über offensichtliche "Rechenfehler" im Shop zu streiten.
Belushi