Frontend
Diese Seite beschreibt den Storefront-Konto-Bereich des Vertreters sowie die Checkout-Funktionen. Die Vertreter-Funktionen erscheinen nur für eingeloggte Kunden, die selbst Vertreter sind oder einem Vertreter zugeordnet wurden.
Konto-Übersicht
Nach dem Einloggen sieht der Kunde in der Übersicht:

Ist er einem Vertreter zugeordnet, eine Ansicht seines aktuellen Vertreters.
Ist er selbst Vertreter:
seine Kunden in einer paginierten Liste,
einen neuen Menüpunkt Vertreter-Profil.
Vertreter-Profil

Hier kann der Vertreter
sein Profilbild ändern oder hochladen (Routes
frontend.sales_representative.change_image/…delete_image; das Bild landet im konfigurierten Medienordner),seine Kontaktdaten für seine Kunden pflegen,
seine Kunden einsehen.
Ein Klick auf Detail in der Kundenliste öffnet die Kundenansicht.
Kunden einladen
Über die Schaltfläche Kunde einladen in der Kundenliste lädt der Vertreter eine Person per E-Mail ein.
Ablauf der Einladung
Vertreter gibt eine E-Mail-Adresse ein und sendet das Formular (POST
frontend.sales_representative.invite).Existiert zu der Adresse ein Kundenkonto, wird das
CustomerInviteEventausgelöst und eine Einladungs-Mail mit Bestätigungslink versendet.Klickt der Eingeladene auf den Link (
frontend.sales_representative.accept), wird er über den AffiliateCode des Vertreters mit diesem verknüpft.
Kunden-Detail

Auf der Kundendetailseite (frontend.sales_representative.customer, /SalesRepresentative/Customer/{customerNumber}) sieht der Vertreter die Adressen und die Bestellungen des Kunden, die mit einem seiner AffiliateCodes verknüpft sind.

Die Bestellansicht erreicht der Vertreter über frontend.sales_representative.customer_orders (/SalesRepresentative/Order/{orderNumber}).
Checkout
Im Checkout kann der Vertreter — sofern administrativ freigeschaltet —
die Liefer- und Rechnungsadresse auf die des Kunden umstellen (Custom-Fields
…_can_use_customers_billing/…_can_use_customers_shipping),im Namen des Kunden bestellen (Custom-Field
…_orders_as_customer).
Die Umschaltung „Als Kunde bestellen" setzt den Cart-State leoparden_sales_representative_orders_as_customer über die Route frontend.sales_representative.order_context_change. Die im Checkout gewählten Adressen werden im Order-Extra des Warenkorb-Tokens gehalten.
Kundenadress-Dropdown
Im Adress-Dropdown des Checkouts werden alle Adressen der zugeordneten Kunden in einer separaten Liste dargestellt (Store-API /store-api/sales-representative-additional-addresses), sodass der Vertreter direkt eine Kundenadresse auswählen kann.
AffiliateCode-URL-Parameter
Über den AffiliateCode-Parameter in der URL wird ein Kunde — sofern der Code existiert — mit einem Vertreter verknüpft (verarbeitet vom AffiliateTrackingSubscriber).
Mit aktivem „Kundenzuordnung via AffiliateCode" entsteht die Erst-Zuordnung.
Mit zusätzlich aktivem „Update von Kundenzuordnung via AffiliateCode" darf der Kunde den Vertreter über den Parameter auch wechseln.
Integration: Gläserner Auftrag & Custom Products
Bei installierten Plugins Gläserner Auftrag (BusinessTransactions) und BusinessCustomProducts liefert das Plugin zusätzliche CMS-Elemente, mit denen der Vertreter Vorgänge, Positionen, zuletzt gelieferte Artikel und kundenspezifische Produkte seiner Kunden einsehen kann. Die zugehörigen Subscriber erweitern die jeweiligen Such-Kriterien um die Kunden des Vertreters.
Snippet-Namespace
Alle Storefront-Snippets liegen unter plugin.leoparden.SalesRepresentative.* in src/Resources/snippet/{de_DE,en_GB}/. Themes überschreiben Texte über die Standard-Shopware-Snippet-Mechanismen.