WooCommerce - Endpreise runden in Bestellungen - Backend (Admin)

  • Hallo Zusammen

    Ich nutze WooCommerce und habe schon einige Anpassungen gemacht. Aktuell werden die Preise und MWST, insbesondere die Gesamtpreise im Onlineshop jeweils auf 0.05 Stellen gerundet. Dies mache ich mit der PHP-Funktion "ceil":


    Was mir auffällt ist, dass wenn ich zb. einen Gutschein eintrage mit 5% Rabatt, zeigt dieser mir auch wieder zb. 9.41 an anstatt 9.40 oder wenn ich ein Wert von 10.- eingebe, dann 10.01 an anstatt 10.-.

    Doch was mir wirklich am Herzen liegt ist die Rundung in der manuellen Bestelleingabe.
    Wenn wir im backend bestehende Bestellungen bearbeiten möchten (zb. neues Produkt hinzufügen, Versand hinzufügen, anzahl ändern ,etc.) werden da die Beträge, MwSt., Gesamttotal neu berechnet. Hier aber alles in wilder Form wie zb. 105.27 oder 210.79. Wie kriege ich es hin, dass diese Beträge ebenfalls gerundet werden? Sieht sonst sehr unschön aus! Wenn auf "Neu Berechnene" geklickt wird, sind die ungerundeten unnd unschönen Beträge auch in der neuen Rechnung drauf.

    Ich habe das mit dieser Funktion in der "functions.php" versucht, aber ohne Erfolg. :(


    Ich selber hab keine Idee mehr, kann mir vielleicht jemand helfen?
    Hier beim Bild, das Rot eingekreiste sollte gerundet werden auf 0.05 stellen. Also entweder auf- oder ab.


    [Blockierte Grafik: https://ibb.co/1RqbfWp]

    Die Preise im gesamten Onlineshop werden inkl. MwSt. angezeigt.

    Ich bin für jede Hilfe dankbar!
    Danke

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Ungeachtet der Tatsache, dass ein solches Vorgehen nicht die Transparenzregeln erfüllt, weil die Summe der Einzelpreise nicht dem Endpreis entspricht, ist es nicht möglich die Zwischensumme und Endsumme bei einer Erfassung im Backend zu Filtern. Ein Filter wie in der Cart Klasse existiert in der Order und Abstarct Order Klasse nicht. Die einzige Möglilchkeit ist die Manipulation des Order Objekts. Hier ein Beispiel für die Gesamtsumme:

    PHP
    add_action( 'woocommerce_order_after_calculate_totals', 'mmx_calc_hack', 20, 2 );
    function mmx_calc_hack( $and_taxes, $order ){
        $total = $order->get_total();
        $total_hacked = ceil ( $total / 0.05 ) * 0.05;
        $order->set_total( $total_hacked );
    }

    ACHTUNG! Das ist nur ein Codebeispiel wie man das Order Objekt bearbeitet. Das ganze ist nicht auf Nebenwirkungen getestet, gerade im Zusammenhang mit den bereits verwendeten Filtern!

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Anmerkung: Im Frontend werden alle Preise inkl. der 7.7% MwSt. angegeben und auch sonst wenn der Kunde bestellt wird im Warenkorb, auf den Rechnungen etc. alles korrekt angezeigt.

    Es geht nur darum, wenn wir Bestellungen ändern oder manuell erstellen müssen, dann wird nichts mehr gerundet.

  • Ungeachtet der Tatsache, dass ein solches Vorgehen nicht die Transparenzregeln erfüllt, weil die Summe der Einzelpreise nicht dem Endpreis entspricht, ist es nicht möglich die Zwischensumme und Endsumme bei einer Erfassung im Backend zu Filtern.

    Oh, okay. Gut, eigentlich würde es reichen, wenn der Gesamtbetrag gerundet wird, da auch hier eine neue Rechnung dem Kunden geschickt wird. :) Danke für das Beispiel, ich werde mich heute Nachmittag ransetzen (sobald die Server-Migration durch ist).

    Ist auch doof, weil wir hier in der Schweiz 7.7% MwSt. haben und keine geraden zahlen wie Deutschland zb. mit 19%. Das würde vieles vereinfachen. :)

    Gruss
    Dominic

  • OT: solche Hacks sollte man grundsätzlich verhindern. Der richtige Weg wäre die Produktpreise bereits korrekt einzugeben, also auf 0.05 aufgerundet.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Die Produktpreise erhalten wir als CSV (über 10'800 Produkte) direkt von einem Lieferanten aus Deutschland. Da sind alle Preise ohne MwSt. Wenn wir nun mit MwSt. anzeigen lassen im Shop, rechnet dieser die 7.7% dazu, und dann kommen solche unschönen Beträge raus. Deshalb mussten wir die Filter anwenden.

    Bei allen 10'800 Produkten die Preise einzeln mit MwSt. anzupassen und einzutragen wäre viel zu aufwendig. :)

    Wir werden natürlich hier Verbesserungen vornehmen um beim nächsten CSV Import die Preise direkt korrekt angegeben eingetragen zu haben.

    Das gewünschte Ergebnis ist nun da. So einfach wäre es gewesen, wenn man nicht zu weit studieren würde. Danke Dir vielmals und liebe Grüsse aus der Schweiz.

  • Beim Import die Preise auf inkl. Mwst. umrechnen und wie gewünscht runden.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.


  • Wir werden natürlich hier Verbesserungen vornehmen um beim nächsten CSV Import die Preise direkt korrekt angegeben eingetragen zu haben.

    sinnvoll...

    Wenn du nur den Rechnungsendbetrag rundest kannst du an vielen weiteren Stellen böse Überraschungen erleben. Zahlungsdienstleister zum Beispiel prüfen in der Regel auch den Warenwert vom Warenkorb und Rechnungsendbetrag.

    Auch die WaWi - zum Beispiel SAP - prüft eben auch vor dem Import.


    CSV (über 10'800 Produkte) direkt von einem Lieferanten aus Deutschland. Da sind alle Preise ohne MwSt.

    Da sind die Preise vermutlich ohne MwSt und in Euro? Wie machst du dies mit der Währungsumrechnung? Der Lieferant stellt seine Daten vermutlich nur im Euro zur Verfügung.

    Mit offenen Augen träumen

  • Die Wärhungsumrechnung machen wir händisch in der CSV, da sind dann alle Preise gerade, sprich zb. CHF 22.25, 30.05, 71.95 ...
    mit der MwSt. 7.7% kommen dann wieder ungerade Zahlen raus die WP komplett komisch rundet und anzeigt.

    Nächstes Problem ist der Gutscheincode. CHF 10.00 Rabatt auf die Bestellung.
    Ich habe dort 9.29 .- angegeben, weil das der Betrag ohne MwSt. ist. Gibt gemäss richtiger Berechnung dann CHF 10.00.-

    Im Warenkorb wird allerdings je nach Gesamtbetrag dann 10.01, 10.02 oder 9.99 angezeigt als Rabatt aber ich komme nie auf die geraden 10.00. Ich bin confused!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!