# Shopware 6: Netto–/Bruttopreise basierend auf Business-/Private-Auswahl anzeigen

**URL:** <https://forum.shopware.com/t/shopware-6-netto-bruttopreise-basierend-auf-business-private-auswahl-anzeigen/107500>\
**Category:** Shopware 6 (German)\
**Tags:** programming\
**Created:** [1. Juli 2025 um 14:16 UTC](https://forum.shopware.com/t/shopware-6-netto-bruttopreise-basierend-auf-business-private-auswahl-anzeigen/107500 "2025-07-01T14:16:09Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![o.kocakaplan](https://avatars.discourse-cdn.com/v4/letter/o/8baadc/32.png) [@o.kocakaplan](https://forum.shopware.com/u/o.kocakaplan)\
**Post date:** [1. Juli 2025 um 14:16 UTC](https://forum.shopware.com/t/shopware-6-netto-bruttopreise-basierend-auf-business-private-auswahl-anzeigen/107500/1 "2025-07-01T14:16:09Z")

</div>

**Inhalt**  
Ich habe eine `CustomSalesChannelContextFactory` implementiert, um basierend auf der Auswahl „business“ oder „private“ im Cookie den Preis netto bzw. brutto anzuzeigen:

```auto
public function create(string $token, string $salesChannelId, array $options = []): SalesChannelContext
{
    $request = $this->requestStack->getCurrentRequest();
    if (!$request) {
        return $this->decorated->create($token, $salesChannelId, $options);
    }

    $customerType = $request->cookies->get('customer-type')
        ?? $request->headers->get('customer-type');

    if (!in_array($customerType, ['business', 'private'], true)) {
        return $this->decorated->create($token, $salesChannelId, $options);
    }

    $options['customerGroupId'] = $customerType === 'business'
        ? '0193b9f622ac7073a66584f14f56cc25'
        : 'cfbd5018d38d41d8adca10d94fc8bdd6';

    $newToken = bin2hex(random_bytes(16));
    $this->contextPersister->save(
        $newToken,
        ['customerGroupId' => $options['customerGroupId']],
        $salesChannelId
    );

    return $this->decorated->create($newToken, $salesChannelId, $options);
}

```

**Erwartung:** Im Frontend ändert sich die `customerGroupId` entsprechend der Auswahl und die Preise werden netto bzw. brutto korrekt aktualisiert.  
**Tatsächlich:** Die `customerGroupId` ändert sich weder in den Logs noch im Storefront.  
**Gesuchte Hilfe:**  
Wie kann ich in dieser Factory die `customerGroupId` aus dem Cookie endgültig überschreiben, sodass in allen Storefront-Anfragen die korrekten Preise angezeigt werden?

---

<div class="post-metadata">

**Author:** ![WebentwicklSchaefer](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/webentwicklschaefer/32/27230_2.png) [@WebentwicklSchaefer](https://forum.shopware.com/u/WebentwicklSchaefer)\
**Post date:** [2. Juli 2025 um 04:17 UTC](https://forum.shopware.com/t/shopware-6-netto-bruttopreise-basierend-auf-business-private-auswahl-anzeigen/107500/2 "2025-07-02T04:17:26Z")

</div>

Hallo @o.kocakaplan ,

mir erschließt sich die Idee ehrlich gesagt überhaupt nicht. Was möchtest du damit bezwecken?

Falls du einen speziellen Use-Case hast, gerne mal beschreiben, aber meiner Meinung nach musst du dafür nichts programmieren, da es der Shopware Standard abbildet und diese Einstellung grundsätzlich keine 5 Minuten dauert.

Du kannst Brutto/Netto standardmäßig anhand der Kundengruppen anzeigen lassen:

 ![image](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/3X/1/c/1cb5d5f39be25d3d5e3ae7add1c0497384b5a120.png)

Privat oder Business-Auswahl sind ja im Grunde „zwei Kundengruppen“.

Viele Grüße  
Marco Schäfer

- Webentwicklung Schäfer

---

<div class="post-metadata">

**Author:** ![o.kocakaplan](https://avatars.discourse-cdn.com/v4/letter/o/8baadc/32.png) [@o.kocakaplan](https://forum.shopware.com/u/o.kocakaplan)\
**Post date:** [2. Juli 2025 um 07:51 UTC](https://forum.shopware.com/t/shopware-6-netto-bruttopreise-basierend-auf-business-private-auswahl-anzeigen/107500/3 "2025-07-02T07:51:28Z")

</div>

**Akteur**

- Besucher (anonymer Benutzer)

**Vorbedingungen**

- Dieses Szenario gilt für anonyme Benutzer.
- Beim ersten Zugriff ist die Gruppe **„Privat“** aktiv und die Preise werden als **Bruttopreise** angezeigt.
- Für **„Privat“** und **„Geschäftlich“** sind im Hintergrund zwei verschiedene Kundengruppen definiert.

**Auslöser**

- Öffnet der Besucher die Seite, sieht er automatisch sowohl die Preisangaben als auch die Auswahlmöglichkeit **„Privat / Geschäftlich“**.

**Hauptszenario**

- **Seite laden & Auswahl anzeigen**
  - Der Besucher ruft die Seite auf.
  - Auf dem Bildschirm erscheint automatisch der Toggle bzw. Button **„Privat / Geschäftlich“**.

- Die Preise werden standardmäßig als **Bruttopreise** (Privat) dargestellt.
- **Benutzer wählt „Geschäftlich“**
  - Der Besucher stellt den Toggle auf **„Geschäftlich“**.

- **Kontext erneuern & Preise aktualisieren**
  - Das System erkennt die neue Kundengruppe **„Geschäftlich“** und lädt den Kontext neu.
  - Ohne Neuladen der Seite werden sofort **Nettopreise** angezeigt.

- **Benutzer wechselt zurück zu „Privat“**
  - Der Toggle wird wieder auf **„Privat“** gestellt.
  - Der Kontext wird erneut aktualisiert und die Preise erscheinen sofort wieder als **Bruttopreise**.

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [2. Juli 2025 um 09:51 UTC](https://forum.shopware.com/t/shopware-6-netto-bruttopreise-basierend-auf-business-private-auswahl-anzeigen/107500/4 "2025-07-02T09:51:35Z")

</div>

Dafür gibt es im Store Plugins - also das man B2C und B2B gleichermaßen betreiben kann.

---

<div class="post-metadata">

**Author:** ![area-net-gmbh](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/area-net-gmbh/32/21995_2.png) [@area-net-gmbh](https://forum.shopware.com/u/area-net-gmbh)\
**Post date:** [2. Juli 2025 um 13:40 UTC](https://forum.shopware.com/t/shopware-6-netto-bruttopreise-basierend-auf-business-private-auswahl-anzeigen/107500/5 "2025-07-02T13:40:59Z")

</div>

Dafür kannst du im einfachen Fall ein relativ einfaches Plugin schreiben, mit dem du per URL-Parameter zwischen Netto/Brutto umschalten kannst (z.B. ?switchTo=net / ?switchTo=gross).

Dafür musst du auf das Event `SalesChannelContextCreatedEvent::class` subscriben, darin den URL-Parameter abfragen, ggf in einer Session speichern und dann folgendes aufrufen:

`$salesChannelContext->setTaxState($switchTo);`

Zusätzlich solltest du dann den Cache-Key mit dem Event `HttpCacheKeyEvent::class` um diese Information erweitern

---

<div class="post-metadata">

**Author:** ![system](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/3X/2/9/29c7587ba660f00e4995d1743162782e5d6d8653.svg) [@system](https://forum.shopware.com/u/system)\
**Post date:** [1. August 2025 um 13:41 UTC](https://forum.shopware.com/t/shopware-6-netto-bruttopreise-basierend-auf-business-private-auswahl-anzeigen/107500/6 "2025-08-01T13:41:48Z")

</div>

Dieses Thema wurde automatisch 30 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.
