B2B Plattform

    Firmenkonten, Mitarbeiter, Rollen und Budgets

    Überblick

    Die B2B Plattform ist das zentrale Plugin der Bronner B2B Suite. Sie erweitert Shopware 6 um vollständige Firmenkonten-Verwaltung mit Mitarbeitern, Rollen, Budgets, Kostenstellen, Firmenadressen, Produktbeschränkungen und mehrstufigen Freigabeprozessen.

    Das Plugin bildet komplexe B2B-Organisationsstrukturen direkt im Shop ab. Firmenkunden verwalten ihre eigene Hierarchie selbstständig, ohne dass der Shop-Betreiber bei jeder Personaländerung manuell eingreifen muss.

    Systemvoraussetzungen

  1. Shopware 6.7 oder höher
  2. PHP 8.1 oder höher
  3. MySQL 8.0 oder höher
  4. Empfohlen: mindestens 256 MB PHP Memory Limit
  5. Installation

  6. 1.Plugin über den Shopware Plugin-Manager installieren oder manuell in custom/plugins/BcB2bPlatform ablegen
  7. 2.Plugin im Plugin-Manager aktivieren
  8. 3.Cache leeren:
  9. php bin/console cache:clear
  10. 4.Datenbank-Migrationen werden automatisch bei der Installation ausgeführt (8 Migrationen für Firmen, Rollen, Mitarbeiter, Berechtigungen, Budgets, Freigaben, Kostenstellen, Adressen, Produktbeschränkungen und Mail-Templates)
  11. Konfiguration

    Die Plugin-Konfiguration befindet sich unter Erweiterungen > Meine Erweiterungen > BC B2B Plattform > Konfiguration (config.xml).

    Allgemeine Einstellungen:

  12. **Plugin aktiv** (`BcB2bPlatform.config.active`, Typ: `bool`, Standard: `true`): Aktiviert oder deaktiviert die B2B-Plattform-Funktionen im Storefront und in der Administration.
  13. **Maximale Anzahl Mitarbeiter pro Firma** (`BcB2bPlatform.config.maxEmployeesPerCompany`, Typ: `int`, Standard: `0`): Begrenzt die Anzahl der Mitarbeiter, die einer Firma zugewiesen werden können. 0 = unbegrenzt.
  14. **Selbstregistrierung für Mitarbeiter erlauben** (`BcB2bPlatform.config.allowEmployeeSelfRegistration`, Typ: `bool`, Standard: `false`): Ermöglicht es Mitarbeitern, sich selbst für eine Firma zu registrieren. Der Firmen-Admin muss die Anfrage bestätigen.
  15. Genehmigungen:

  16. **Genehmigung bei Budgetüberschreitung** (`BcB2bPlatform.config.requireApprovalAboveBudget`, Typ: `bool`, Standard: `true`): Bestellungen, die das Budget des Mitarbeiters überschreiten, erfordern eine Freigabe.
  17. **Immer Genehmigung erforderlich** (`BcB2bPlatform.config.requireApprovalAlways`, Typ: `bool`, Standard: `false`): Wenn aktiviert, erfordern alle Bestellungen von Unterkonten eine Freigabe, unabhängig vom Budget.
  18. **E-Mail-Adresse für Genehmigungsbenachrichtigungen** (`BcB2bPlatform.config.approvalNotifyEmail`, Typ: `text`): Zusätzliche E-Mail-Adresse, die bei neuen Freigabeanfragen benachrichtigt wird. Leer = nur Firmen-Admin wird benachrichtigt.
  19. Budget:

  20. **Standard-Budgetzeitraum** (`BcB2bPlatform.config.defaultBudgetPeriod`, Typ: `single-select`, Standard: `monthly`): Optionen: `monthly` (Monatlich), `quarterly` (Quartalsweise), `yearly` (Jährlich), `one_time` (Einmalig).
  21. **Budget-Widget im Checkout anzeigen** (`BcB2bPlatform.config.showBudgetWidget`, Typ: `bool`, Standard: `true`): Zeigt dem Mitarbeiter sein verbleibendes Budget auf der Bestellbestätigungsseite an.
  22. Funktionen:

  23. **Kostenstellen aktivieren** (`BcB2bPlatform.config.showCostCenters`, Typ: `bool`, Standard: `true`): Aktiviert die Kostenstellen-Funktion. Mitarbeiter können bei der Bestellung eine Kostenstelle auswählen.
  24. Funktionen

    Firmenkonten-Verwaltung

    Jedes Firmenkonto (bc_b2b_company) enthält Stammdaten (Firmenname, Firmennummer, USt-IdNr., Ansprechpartner), zugeordnete Mitarbeiter und Abteilungen. Firmenkunden können ihre Daten im Storefront selbst verwalten. Ein Dashboard zeigt Firmenübersicht, Mitarbeiterzahl, Budget-Auslastung und offene Genehmigungen.

    Mitarbeiter-Management

    Mitarbeiter (bc_b2b_employee) werden einem Firmenkonto zugeordnet. Jeder Mitarbeiter hat eine Rolle, die seine Berechtigungen steuert. Mitarbeiter können vom Firmenkonto-Administrator direkt im Storefront angelegt, bearbeitet und deaktiviert werden.

    Rollen und Berechtigungen

    Rollen (bc_b2b_role) definieren, was ein Mitarbeiter darf. Berechtigungen (bc_b2b_permission) werden granular pro Rolle konfiguriert: Produkte ansehen, Warenkorb befüllen, Bestellungen auslösen, Freigaben erteilen, Mitarbeiter verwalten.

    Budgets

    Budgets (bc_b2b_budget) können pro Mitarbeiter gesetzt werden. Der Budgetzeitraum ist konfigurierbar (monatlich, quartalsweise, jährlich, einmalig). Bei Überschreitung wird die Bestellung automatisch in den Freigabeprozess überführt.

    Freigabeprozesse

    Bestellungen, die das Budget übersteigen oder immer eine Genehmigung erfordern, landen als Freigabeanfrage (bc_b2b_order_approval) beim Vorgesetzten. Dieser kann im Storefront-Account genehmigen oder ablehnen.

    Kostenstellen

    Kostenstellen (bc_b2b_cost_center) können pro Firma angelegt werden. Mitarbeiter werden über die Mapping-Tabelle (bc_b2b_employee_cost_center) zugeordnet und können bei der Bestellung eine Kostenstelle auswählen.

    Firmenadressen

    Firmenadressen (bc_b2b_company_address) ermöglichen die Verwaltung mehrerer Liefer- und Rechnungsadressen pro Firma.

    Produktbeschränkungen

    Produktbeschränkungen (bc_b2b_product_restriction) erlauben es, bestimmte Produkte für einzelne Firmen oder Mitarbeiter zu sperren.

    Events & Hooks

    Das Plugin löst folgende Flow-Builder-fähige Events aus (alle implementieren FlowEventAware, MailAware, CustomerAware, ScalarValuesAware):

  25. **`bc_b2b.approval_requested`** (`BcB2bPlatform\Core\Event\ApprovalRequestedEvent`) -- Eine Bestellung wurde zur Freigabe eingereicht
  26. **`bc_b2b.approval_approved`** (`BcB2bPlatform\Core\Event\ApprovalApprovedEvent`) -- Eine Freigabeanfrage wurde genehmigt
  27. **`bc_b2b.approval_rejected`** (`BcB2bPlatform\Core\Event\ApprovalRejectedEvent`) -- Eine Freigabeanfrage wurde abgelehnt
  28. **`bc_b2b.employee_invited`** (`BcB2bPlatform\Core\Event\EmployeeInvitedEvent`) -- Ein Mitarbeiter wurde zu einem Firmenkonto eingeladen
  29. **`bc_b2b.budget_exceeded`** (`BcB2bPlatform\Core\Event\BudgetExceededEvent`) -- Ein Budget wurde überschritten
  30. Zusätzliche Cart-Fehler-Events:

  31. `B2bApprovalRequiredError` -- Warenkorb erfordert Freigabe
  32. `B2bBudgetExceededError` -- Warenkorbwert übersteigt Budget
  33. `B2bProductRestrictedError` -- Produkt ist nicht freigegeben
  34. Flow Builder Events

    Alle fünf Plugin-Events sind im Shopware Flow Builder verfügbar und können für automatische Workflows genutzt werden:

    | Event-Name | Klasse | Beschreibung |

    |---|---|---|

    | bc_b2b.approval_requested | ApprovalRequestedEvent | Trigger bei neuer Freigabeanfrage |

    | bc_b2b.approval_approved | ApprovalApprovedEvent | Trigger bei Genehmigung |

    | bc_b2b.approval_rejected | ApprovalRejectedEvent | Trigger bei Ablehnung |

    | bc_b2b.employee_invited | EmployeeInvitedEvent | Trigger bei Mitarbeiter-Einladung |

    | bc_b2b.budget_exceeded | BudgetExceededEvent | Trigger bei Budgetüberschreitung |

    Alle Events stellen ShopwareSalesChannelEvent-Daten bereit und können mit Mail-Aktionen, Webhooks oder eigenen Flow-Actions kombiniert werden.

    Textbausteine (Snippets)

    Das Plugin registriert Storefront-Snippets unter dem Namespace bc-b2b-platform in DE und EN:

    Storefront-Snippets (src/Resources/snippet/de_DE/bc-b2b-platform.de-DE.json):

  35. `checkout.b2b-approval-required` -- Hinweis bei erforderlicher Freigabe
  36. `checkout.b2b-budget-exceeded` -- Hinweis bei Budgetüberschreitung (mit Platzhaltern `%cartTotal%` und `%remaining%`)
  37. `checkout.b2b-product-restricted` -- Hinweis bei gesperrtem Produkt
  38. `bc-b2b-platform.account.menu.*` -- Menüpunkte: Firmenübersicht, Mitarbeiter, Rollen & Rechte, Budgets, Genehmigungen, Kostenstellen, Artikelbeschränkungen, Firmenadressen
  39. `bc-b2b-platform.account.dashboard.*` -- Dashboard-Labels und -Texte
  40. `bc-b2b-platform.account.noPermission` -- Fehlermeldung bei fehlender Berechtigung
  41. Admin-Snippets (src/Resources/app/administration/src/module/bc-b2b-platform/snippet/de-DE.json, en-GB.json)

    Scheduled Tasks

  42. **`bc_b2b.budget_reset`** (`BcB2bPlatform\ScheduledTask\BudgetResetTask`): Wird täglich ausgeführt (Intervall: 86400 Sekunden / 24 Stunden). Setzt abgelaufene Budgetperioden zurück. Der zugehörige Handler ist `BudgetResetTaskHandler`.
  43. Datenbank-Tabellen

    Das Plugin erstellt folgende Datenbank-Tabellen über 8 Migrationen:

    | Tabelle | Entity-Name | Beschreibung |

    |---|---|---|

    | bc_b2b_company | bc_b2b_company | Firmenkonten mit Stammdaten |

    | bc_b2b_role | bc_b2b_role | Berechtigungsrollen |

    | bc_b2b_employee | bc_b2b_employee | Mitarbeiter-Zuordnungen |

    | bc_b2b_permission | bc_b2b_permission | Granulare Berechtigungen pro Rolle |

    | bc_b2b_budget | bc_b2b_budget | Budget-Definitionen |

    | bc_b2b_order_approval | bc_b2b_order_approval | Freigabeanfragen |

    | bc_b2b_cost_center | bc_b2b_cost_center | Kostenstellen |

    | bc_b2b_company_address | bc_b2b_company_address | Firmenadressen |

    | bc_b2b_employee_cost_center | bc_b2b_employee_cost_center | Zuordnung Mitarbeiter zu Kostenstellen |

    | bc_b2b_product_restriction | bc_b2b_product_restriction | Produktbeschränkungen pro Firma/Mitarbeiter |

    Migrationen:

  44. `Migration1712000000CreateCompanyAndRoleTables`
  45. `Migration1712000001CreateEmployeeAndPermissionTables`
  46. `Migration1712000002CreateBudgetApprovalCostCenterTables`
  47. `Migration1712000003CreateCompanyAddressTable`
  48. `Migration1712000004CreateMailTemplatesAndFlows`
  49. `Migration1712000005CreateCostCenterAssignmentAndProductRestriction`
  50. `Migration1712000006AddCartPayloadToOrderApproval`
  51. `Migration1712000007AddShowTooltipsToCompany`
  52. Admin-Integration

    Das Plugin registriert ein eigenes Admin-Modul bc-b2b-platform unter dem Menüpunkt B2B:

    Seiten:

  53. `bc-b2b-company-list` -- Liste aller Firmenkonten
  54. `bc-b2b-company-detail` -- Detailansicht mit Tabs
  55. Detail-Views (Tabs):

  56. `bc-b2b-company-detail-base` -- Stammdaten der Firma
  57. `bc-b2b-company-detail-employees` -- Mitarbeiter-Verwaltung
  58. `bc-b2b-company-detail-roles` -- Rollen und Berechtigungen
  59. `bc-b2b-company-detail-budgets` -- Budget-Übersicht und -Verwaltung
  60. `bc-b2b-company-detail-approvals` -- Offene und abgeschlossene Freigaben
  61. `bc-b2b-company-detail-cost-centers` -- Kostenstellen-Verwaltung
  62. `bc-b2b-company-detail-addresses` -- Firmenadressen-Verwaltung
  63. Die Admin-Module liegen unter:

    src/Resources/app/administration/src/module/bc-b2b-platform/

    Storefront-Integration

    Das Plugin erweitert den Account-Bereich im Storefront um folgende Seiten und Templates:

    Account-Seiten (src/Resources/views/storefront/page/account/b2b/):

  64. `dashboard.html.twig` -- Firmenübersicht-Dashboard
  65. `employees/index.html.twig` -- Mitarbeiter-Verwaltung
  66. `roles/index.html.twig` -- Rollenverwaltung
  67. `roles/form.html.twig` -- Rollenformular
  68. `budgets/index.html.twig` -- Budget-Übersicht
  69. `approvals/index.html.twig` -- Freigaben-Übersicht
  70. `approvals/submitted.html.twig` -- Eingereichte Freigaben
  71. `cost-centers/index.html.twig` -- Kostenstellen
  72. `restrictions/index.html.twig` -- Produktbeschränkungen
  73. `addresses/index.html.twig` -- Firmenadressen
  74. `addresses/form.html.twig` -- Adressformular
  75. `no-permission.html.twig` -- Fehlerseite bei fehlender Berechtigung
  76. Sidebar-Erweiterung:

  77. `page/account/sidebar.html.twig` -- Erweitert das Account-Menü um B2B-Menüpunkte
  78. Checkout-Erweiterung:

  79. `page/checkout/confirm/index.html.twig` -- Budget-Widget und Kostenstellen-Auswahl
  80. Produkt-Erweiterungen:

  81. `component/product/card/action.html.twig` -- Produktkarten-Aktionen
  82. `component/product/card/price-unit.html.twig` -- Preisanzeige
  83. `component/buy-widget/buy-widget.html.twig` -- Kauf-Widget
  84. JavaScript-Plugin:

  85. `BcB2bCostCenterPlugin` (`src/Resources/app/storefront/src/js/plugin/bc-b2b-cost-center.plugin.js`)
  86. Kompatibilität

  87. Vollständig kompatibel mit allen anderen Plugins der Bronner B2B Suite
  88. Kompatibel mit Standard-Shopware-Themes und gängigen Theme-Erweiterungen
  89. Getestet mit Shopware 6.7.x
  90. Unterstützt Multi-Language (DE/EN)
  91. Unterstützt Multi-Sales-Channel
  92. FAQ