Skip to main content
Skip table of contents

Mehrwertsteuer (Umsatzsteuer)

Der Shop unterscheidet im Objektmodell nicht nach den Begriffen Mehrwertsteuer / Umsatzsteuer. Diese Bezeichnung muss durch die Textierung im HTML Code bzw. durch steuerbare TextParts klargestellt werden.

Der Shop kann jedoch unterscheiden, ob Preise im Artikelstamm als inklusive oder exklusive Mehrwertsteuer gespeichert sind und ob die Steuer dann zum Warenkorbwert hinzugezählt werden muss oder ob die Mehrwertsteuer bereits im Preis enthalten ist und der Warenkorbwert damit bereits der Endpreis für den Kunden ist. Die Mehrwertsteuer wird zwar in den entsprechenden Feldern trotzdem errechnet, damit sie angezeigt werden kann, wird aber nicht mehr zum Warenkorbwert hinzugezählt.

Parameter NettoPrices

Der Parameter NettoPrices legt fest, ob die Artikeldaten Nettopreise sind, d.h. exklusive Mehrwertsteuer gespeichert sind. Ist der Parameter true, verstehen sich die gespeicherten Preise als exklusive Mehrwertsteuer. Ist der Parameter false, verstehen sich die gespeicherten Preise als inklusive Mehrwertsteuer.

Der Parameter kann über die Konfiguration (web.config bzw. über die config Tabelle der Datenbank) eingestellt werden. Ist der Parameter nicht gesetzt, werden die Preise inklusive Mehrwertsteuer angenommen.

Unterschiedliche Preise für unterschiedliche Kunden

Am Kunden kann gespeichert werden, ob seine Daten in der Datenbank abweichend gespeichert sind. Das ist hilfreich, wenn prinzipiell für alle Firmen-Kunden die Preise exklusive Mehrwertsteuer gespeichert sind, für besondere Aktionen mit Schülern oder Studenten werden aber Inklusive Preise gespeichert.

Für diese Konstruktion muss der Parameter CustomerVATEnabled auf true gesetzt werden und dann das Feld netpricesdisplay im Kunden (IsNetPricesEnabled im Objektmodell des Kunden) entsprechend gesetzt sein.

Der Parameter CustomerVATEnabled macht natürlich nur Sinn, wenn mit kundenspezifischen Preisen gearbeitet wird. Sonst würden die gleichen Listenpreise für einen Kunden als exklusive und für andere Kunden als inklusive Preise behandelt werden.

Anzeige der Preise inklusive oder exklusive Mehrwertsteuer

Solange die Darstellung von Preisen inklusive oder exklusive Mehrwertsteuer vom aktuellen Kunden abhängt, sind die obenstehenden Parameter ausreichend. In den Templates kann dann mit Cart.IsNettoPrices() abgefragt werden, ob Preise inklusive oder exklusive Mehrwertsteuer vorliegen und entsprechende Texte (inkl. 20% USt. oder exkl. 20% USt.) eingeblendet werden.

Soll im Benutzerinterface des Shops jedoch jederzeit eine Umschaltung der Anzeige mit oder ohne Mehrwertsteuer möglich sein, kann mit der State-Eigenschaft PriceDisplay zwischen der Anzeige von Netto und Brutto-Preisen umgeschaltet werden. Die Eigenschaft kann den Wert PriceDisplayMode.Inclusive oder PriceDisplayMode.Exklusive einnehmen und wird initial immer auf den Wert gesetzt, der der Form der Preisspeicherung entspricht - d.h. sind die Preise exklusive Mehrwertsteuer gespeichert, wird auch die Anzeige initial exklusive Mehrwertsteuer erfolgen.

Ist der Parameter CustomerVATEnabled aktiviert, erfolgt die initiale Darstellung nach den Einstellungen im Kunden. Initial meint nach dem Anmelden des Kunden bzw. beim Einstieg in den Shop für einen Gast-Kunden. Ist dann das Feld netpricesdisplay im Kunden (IsNetPricesEnabled im Objektmodell des Kunden) auf true gesetzt, nimmt der Shop eine Preisliste mit exklusiven Preisen an und zeigt initial auch exklusive Preise an. Ist das Feld auf false gesetzt, nimmt der Shop eine Preisliste mit inklusive Preisen an und zeigt initial auch inklusive Preise an.

Liegen die Preise immer exklusive Mehrwertsteuer vor (weil sie z.B. vom ERP so angeliefert werden) und nur für einige Kunden soll die Darstellung auf inklusive Mehrwertsteuer durchgeführt werden (für Privatkunden bzw. für den anonymen Gast-Kunden) kann der Parameter CustomerVATEnabled auf false gesetzt werden (dann sind alle Preise im Artikelstamm entweder exklusive oder inklusive Mehrwertsteuer) und das Feld netpricesdisplay im Kunden (IsNetPricesEnabled im Objektmodell des Kunden) wird nur dazu verwendet, die initale Einstellung der State-Eigenschaft PriceDisplay festzulegen. Ist im Feld netpricedisplay true gesetzt, wird die State-Eigenschaft PriceDisplay auf PriceDisplayMode.Exclusive gestellt, ist das Feld netpricedisplay auf false wird die State-Eigenschaft PriceDisplay auf PriceDisplayMode.Exclusive gestellt.

Der Parameter CustomerNetPriceDisplay regelt, ob das Feld netpricesdisplay im Kunden (IsNetPriceEnabled im Objektmodell des Kunden) als Initalwert für PriceDisplay im State-Objekt der Session übernommen wird. Der Defaultwert für den Parameter ist false. Damit wird PriceDisplay dann so gewählt, wie es der Grundlage der aktuellen Preise entspricht - d.h. Inklusive-Preislisten bewirken immer Inklusive Preise in der Anzeige und umgekehrt. Ist der Parameter auf true gesetzt, wird für jeden Kunden umgeschaltet. Die Parameter CustomerNetPriceDisplay und CustomerVATEnabled dürfen nicht gleichzeitig auf true gesetzt werden, da sie das gleiche Feld verwenden, bei einem aber die Anzeige, beim anderen Parameter die Art der Preisspeicherung umgeschalten wird.

Weitere Parameter

Der Parameter HideInclusiveExclusiveSwitch regelt im BaseShop Layout, ob eine Umschaltung zwischen Inklusive/Exklusive Preisen in der Navigtaion angeboten wird. Der Default ist auf true gesetzt und versteckt die Umschaltmöglichkeit.

Der Parameter NettoGiftcodes legt fest, ob die Rabatte in Euro als inklusive oder exklusive Beträge zu verstehen sind. Wird der Wert auf true gesetzt, wird festgelegt dass die Werte in Gutscheinen als Nettobeträge gespeichert sind. Ist derWert auf false gesetzt, wird festgelegt dass die Werte in Gutscheinen als Bruttobeträge gespeichert sind. ist der Parameter nicht gesetzt wird das aktuelle Preismodell in der Session verwendet, also Cart.IsNettoPrices()

Aktuell noch nicht implementiert ist die Umschaltmöglichkeit für Netto/Brutto bei Versandkosten. Dies wird in den nächsten Releases nachgeholt. Als Parameter wird NettoShippingCosts verwendet. Wird der Wert auf true gesetzt, wird festgelegt dass die Versandkosten als Nettobeträge gespeichert sind. Ist derWert auf false gesetzt, wird festgelegt dass die Versandkosten als Bruttobeträge gespeichert sind. ist der Parameter nicht gesetzt wird das aktuelle Preismodell in der Session verwendet, also Cart.IsNettoPrices(). Die Einstellung von Versandkosten beziehen auch Freigrenzen und die Warenkorb-Schwellen für Versandkostenbeträge ein.

Beispiele

Werden alle Preise als exklusive Mehrwertsteuer im ERP verwaltet und so angeliefert, will der Shop aber dem Kunden die Möglichkeit zum Umschalten der Darstellung anbieten:

CODE
<add key="nettogiftcodes" value="true" />
<add key="nettoprices" value="true" />
<add key="customervatenabled" value="false" />
<add key="customernetpricedisplay" value="true" />

Sind alle Preise im Shop inklusive Mehrwertsteuer gespeichert und es soll dem Kunden auch keine Umschaltung angeboten werden:

CODE
<add key="nettogiftcodes" value="false" />
<add key="nettoprices" value="false" />
<add key="customervatenabled" value="false" />
<add key="customernetpricedisplay" value="false" />

Hinweise zur Implementierung

Damit die Umschaltung funktioniert, muss erstens

  • eine Umschaltung realisiert werden, die den Status der Variable State.PriceDisplay setzt (dazu kann ein Call auf /system/parameter verwendet werden und zweitens

  • in den Templates muss die Variable State.PriceDisplay abgefragt werden, ob Preise inklusive oder exklusive Mehrwertsteuer angezeigt werden und entsprechende Texte (inkl. 20% USt. oder exkl. 20% USt.) eingeblendet werden.

Zur automatischen Darstellung der Preise in der gewünschten Weise liegen eigene Felder am Produkt bzw. am Warenkorb vor, mit denen die tatsächlichen Preise innerhalb des Objektmodels umgerechnet werden. Diese Felder besitzen die Endung …Display (z.B. Product.UnitPriceDisplay) und sollten nur für die Darstellung verwendet werden.

Alle anderen Felder im Objektmodell werden von State.PriceDisplay nicht verändert, insbesondere nicht die Felder, die bereits ein …Inclusive… oder …exclusive… im Namen tragen.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.