Woocommerce brutto/netto – rollenbasierte Preiskommunikation

Ein Shop mit unterschiedlichen Preisen auf z.B. Privatkunden – Gewerbekunden – x spezialisierte Gewerbekunden… inkl. Brutto/Netto-Kommunikation ist in dieser Logik und Konsequenz leider nicht im Standard zu haben.

  • Privatkunden benötigen die Darstellung des Bruttopreises “inkl. MwSt.”
  • Gewerbekunden sind es z.B. durch den Netto-Preiskatalog gewohnt, “exkl. MwSt.” angezeigt zu bekommen.
  • spezialisierte Gewerbekunden erwarten für bestimmte Segmente “schärfere” Preise!

Woocommerce kann zwar grundsätzlich entweder Brutto oder Netto ausweisen, aber nicht rollenbasiert. Dies kann auch nicht germanized oder german market!

Das Ausweisen ist nur eine Herausforderung. Im Warenkorb bzw. der Rechnungstellung muss bei Nettopreisen der jeweilige Umsatzsteuer-Satz aufgeschlagen und bei Bruttopreisen inkludiert betrachtet werden.

Bei 2 Shops hat mir der u.g. Code hierzu gut geholfen und ich gebe die angewandte Empfehlung gern weiter. Vorausgesetzt Du hast bereits Rollen angelegt. Empfehlungen hierzu sind:

Ultimate Member für die Rollenverwaltung und WC Role based Price für die individuelle, grenzenlose Preisgestaltung (dank kleinem Add-on auch gut im- und exportierbar).

Den Code packst Du in die function.php des aktuellen Theme.

2 Wege:

  1. ftp: [DEINE_DOMAIN]/wp-content/themes/Dein-Childtheme/function.php (Editieren mit z.B. visual composer)
  2. WP Dashboard: Design -> Theme-Editor -> function.php auswählen und Code einfügen (nicht zu empfehlen, da bei fehlerhaftem Code die Seite nicht mehr zu laden ist!! -> function.php über ftp zurücksetzen hilft)

Auch ich empfehle dringend die Erstellung eines Child-Theme um die Arbeit zu vereinfachen und Updates gegenüber empfänglicher zu sein. Es lohnt sich wirklich und ist garnicht so schwer.

Der Code (Erstellung und Implementierung der Funktion ‘override_tax_display_setting):

add_filter('pre_option_woocommerce_tax_display_shop', 'override_tax_display_setting');
add_filter('pre_option_woocommerce_tax_display_cart', 'override_tax_display_setting');
function override_tax_display_setting() {
if ( current_user_can('wholesale_buyer') ) {
return "excl";
} else {
return "incl";
}
}

Achte darauf, dass genügend Klammern drin sind, gibt es notfalls auch im Baumarkt.

Der Code funktionierte bei mir mit WP 5.2.2 und Woocommerce 3.7.0 sowie Germanized Pro 1.11.2 . Update 13.07. WP 5.4.2

Bei Fragen oder Anregungen einfach melden.

10 Gedanken zu „Woocommerce brutto/netto – rollenbasierte Preiskommunikation“

  1. Hi,
    wir arbeiten mit einem kleinen Woocommerce b2b plugin, das alle wichtigen Funktionen abdeckt.
    auf unserem Shop sind die Preise nur für Registrierte Kunden sichtbar .
    Leider erkennt das Plugin nicht die MwSt,Versandkosten und Lieferzeiten, die durch Germanized >Preisauszeichnung> Produktdetailseite aktiviert wurden nicht. Ein Tip?
    Wie werden diese Felder angesprochen, Hook? Filter? add_action?

    Viele Grüße
    Thess

    Antworten
    • Hallo Thes,
      welches b2b plugin habt ihr im Einsatz?
      Die von Dir angesprochenen Informationen liegen in separaten Datenbanktabellen (Versandkostenarten…) und werden dort u.a. für den Warenkorb abgegriffen. Das kannst Du dir einfach in der SQL-Datenbank mal unter z.B. mysql anschauen, schon spannend.

      Vom Prinzip geht es dabei nicht um hooks, da es ein interner Verweis ist. So arbeitet auch das wc price plugin und zieht einen Preis in Abhängigkeit zur Rolle. Wie du in meiner Anpassung siehst lädt er die Merkmale separat.

      Konkret kann ich Dir jetzt nicht helfen, vielleicht wenn Du das plugin nennst.

      BG
      Ricky

      Antworten
  2. Hallo!

    Ich habe mot WooCommerce und dem Plugin Germanized das Problem mit der Unterscheidung der Preisanzeige von B2B/B2C nach UID-Check.

    Ihr Tipp des Rollenspieles scheint die Lösung zu sein 🙂 Doch bevor ich den Code einbaue hätte ich eine Frage, wie erfolgt die Zuteilung der Rolle bei Registrierung des Kontos? Muss ich das manuell machen?

    Ideal wäre die Variante, abhängig der gültigtigen UID die Rolle “Händler” zuzuteilen, oder verstehe ich was falsch.

    Ich hoffe Sie können meinen Gedankengang folgen 🙂

    Vielen Dank im Voraus für Ihre Antwort!

    Beste Grüße,

    Oliver

    Antworten
    • Hallo Oliver,

      ich kann Dir bestätigen, dass der Code auf die Rolle hin funktioniert, im Beispiel “wholesale_buyer“, die Du natürlich angelegt hast. Ich nutze akutell 3 feste Rollen, einmal den “guest”, den Baustoff-Profi und den registrierten Kunden “Häuslebauer”. Ich kann Dir also besätigen, dass der B2B-Kunde die Netto-Ansicht inkl. Warenkorb netto sieht, der Privatkunde ob eingeloggt oder Gast nur die Brutto-Preise und korrekt fakturiert wird. Nebenbei steuer ich über role-based-price verschiedene Preise aus, allerdings selektiv.

      Würde mich interessieren, bei welchem Projekt Du es einsetzt. Lass mich dazu mal mehr erfahren 😉

      Beste Grüße
      Ricky

      Antworten
  3. Hallo,
    ein interessantes Sniplet.
    Ich arbeite mit Booster Plus, das im Grunde diese Funktion bietet: “Price based on User-Role” und “Tax-Display”
    Das Problem ist, dass wir VEs verkaufen und die Berechnung bei der Angabe des Einzelpreises (Stückpreis) dann nicht mehr korrekt kalkuliert wird.

    Berücksichtigt das Sniplet die Kalkulation des Einzelpreises auf Basis Brutto-Nettoberechnung und den unterschiedlichen Preisen bei Customers und Resellern?

    Grüße
    Tom

    Antworten
    • Hallo Tom,
      für den Profikunden (reseller) wird der Netto-Preis als Basis gezogen, beim Bauherren (customers) der Bruttopreis. Funktioniert reibungslos, auch ohne Rundungsdifferenzen 😉
      Ich empfehle für die Thematik VE-Verkauf durch meine Erfahrung das folgende Plugin:
      https://docs.woocommerce.com/document/measurement-price-calculator/
      Der Einzelpreis wird über die Kalkulation ermittelt, soweit die Daten nicht an eine weitere WAWI übergeben werden müssen, ist es im Bezug auf Mengenstaffel, Fläche, Volumen… ne klasse Option. Zur Einspielung über csv ist es etwas tricky, aber funktioniert (oneway)

      BG
      Ricky

      Antworten
  4. Hallo Hannes,

    der Code funktioniert sehr gut! Hast du vielleicht einen Tipp, wie ich mehrere Benutzerrollen einbeziehen könnte?

    Was leider nicht funktioniert hat:
    (‘dealer1’, ‘dealer2’)

    Lg Petra

    Antworten
    • Hallo Petra,
      Danke für Dein Feedback
      Grundsätzlich lassen sich mehrere Rollen einbinden, was in meinem Projekt ebenso funioniert. Der einfachste Weg ist, dass Du für ‘dealer1’ die function setzt und für ‘dealer2’ die function wiederholst. Da es sich ja nur um eine Abfrage handelt, die bei Ergebnis true die Anweisung overwrite_tax-display_setting ausführt.

      Lg Ricky

      Antworten
  5. Hi,

    um deinen Code nutzen zu können, sind dafür die beiden Plugins Pfilcht?

    Aktuell gibt es das 2. Plugin nicht mehr, deswegen meine Fragen :).

    Vielen Dank und beste Grüße
    Andre

    Antworten
    • Hallo Andre,
      ja sehr schade. Der woocommerce-role-based-price ist scheinbar nicht mehr supported. Damit ist meine Info nurnoch begrenzt verwertbar. Die Thematik der Brutto/Netto-Angabe ist allerdings gerade bei B2B/B2C-Lösungen im deutschen Markt (Preisangabenverordnung Verbrauchsgüterkauf) eine wichtige. Daher kann der PHP-Eintrag auch an andere rolebased plugins adaptiert werden, da ich noch keines mit der Steuerlösung gefunden habe. Falls Du das plugin doch möchtest, melde Dich gern.

      BG
      Ricky

      Antworten

Schreibe einen Kommentar

− 3 = 3

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Um die Nutzung unserer Webseite zu analysieren und unser Angebot zu verbessern, setzen wir Technologien ein, die das Nutzungsverhalten in pseudonymisierter Form erfassen. Durch Ihre Zustimmung unterstützen Sie uns bei der weiteren Gestaltung unseres Webangebots. Sie können diese Einwilligung jederzeit mit Wirkung für die Zukunft widerrufen.

Schließen