Bestelllisten

    Wiederkehrende Bestellungen als Listen speichern und nachbestellen

    Überblick

    Das Plugin ermöglicht B2B-Kunden, eigene Bestelllisten im Kundenkonto zu erstellen und zu verwalten. Wiederkehrende Bestellungen können mit einem Klick in den Warenkorb übernommen werden. CSV-Import/Export, Link-Sharing mit konfigurierbarer Gültigkeit und ein Vorlagen-System sind integriert.

    Bestelllisten reduzieren den Bestellaufwand für Kunden mit wiederkehrenden Orders erheblich und erhöhen die Kundenbindung.

    Systemvoraussetzungen

  1. Shopware 6.7 oder höher
  2. PHP 8.1 oder höher
  3. MySQL 8.0 oder höher
  4. Installation

  5. 1.Plugin über den Shopware Plugin-Manager installieren oder manuell in custom/plugins/BcOrderList ablegen
  6. 2.Plugin im Plugin-Manager aktivieren
  7. 3.Cache leeren:
  8. php bin/console cache:clear
  9. 4.Vier Datenbank-Migrationen werden automatisch ausgeführt.
  10. Konfiguration

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

    Allgemein:

  11. **Bestelllisten aktivieren?** (`BcOrderList.config.active`, Typ: `bool`, Standard: `true`): Globaler Schalter.
  12. **Maximale Anzahl Listen pro Kunde** (`BcOrderList.config.maxListsPerCustomer`, Typ: `int`, Standard: `0`): 0 = unbegrenzt.
  13. **Maximale Anzahl Positionen pro Liste** (`BcOrderList.config.maxItemsPerList`, Typ: `int`, Standard: `0`): 0 = unbegrenzt.
  14. **Kundengruppen** (`BcOrderList.config.customerGroups`, Typ: `sw-entity-multi-id-select`, Entity: `customer_group`): Bestelllisten nur für diese Gruppen. Leer = alle.
  15. Teilen:

  16. **Listen-Sharing aktivieren?** (`BcOrderList.config.sharingEnabled`, Typ: `bool`, Standard: `true`): Erlaubt das Teilen per Link.
  17. **Gültigkeit des Share-Links (Tage)** (`BcOrderList.config.shareLinkExpirationDays`, Typ: `int`, Standard: `30`): 0 = kein Ablauf.
  18. **Geteilte Listen: In den Warenkorb legen erlauben?** (`BcOrderList.config.shareAllowAddToCart`, Typ: `bool`, Standard: `true`)
  19. Vorlagen:

  20. **Vorlagen-System aktivieren?** (`BcOrderList.config.templatesEnabled`, Typ: `bool`, Standard: `true`): Erlaubt es, Bestelllisten als Vorlage zu markieren.
  21. CSV-Import/Export:

  22. **CSV-Import aktivieren?** (`BcOrderList.config.csvImportEnabled`, Typ: `bool`, Standard: `true`)
  23. **CSV-Export aktivieren?** (`BcOrderList.config.csvExportEnabled`, Typ: `bool`, Standard: `true`)
  24. Anzeige:

  25. **Verfügbarkeit in der Liste anzeigen?** (`BcOrderList.config.showAvailability`, Typ: `bool`, Standard: `true`)
  26. **Preise in der Liste anzeigen?** (`BcOrderList.config.showPrices`, Typ: `bool`, Standard: `true`)
  27. **"Zur Liste hinzufügen" auf Produktdetailseite anzeigen?** (`BcOrderList.config.showAddToListOnProductPage`, Typ: `bool`, Standard: `true`)
  28. Funktionen

    Bestelllisten-Verwaltung

    Kunden erstellen Bestelllisten (bc_order_list) mit Name, Beschreibung und optionaler Farbkennzeichnung. Jede Liste enthält Positionen (bc_order_list_item) mit Produktreferenz, Menge, Notiz, Priorität, Wunschdatum und Status.

    Ein-Klick-Nachbestellung

    Alle Positionen (oder ausgewählte) einer Bestellliste können in den Warenkorb übernommen werden. Nicht verfügbare Artikel werden übersprungen.

    CSV-Import/Export

    Der OrderListCsvService ermöglicht Import und Export von Bestelllisten als CSV-Dateien.

    Link-Sharing

    Bestelllisten können über einen generierten Link (bc_order_list_share) geteilt werden. Die Gültigkeit des Links ist konfigurierbar. Empfänger können (je nach Konfiguration) Produkte in ihren Warenkorb legen.

    Vorlagen-System

    Bestelllisten können als Vorlage markiert werden. Aus Vorlagen können neue Listen erstellt werden.

    Bestellhistorie

    Über die bc_order_list_order-Tabelle wird protokolliert, welche Bestellungen aus einer Bestellliste entstanden sind.

    Customer-Extension

    Das Plugin erweitert die Customer-Entity über CustomerExtension, um Bestelllisten direkt am Kunden abrufbar zu machen.

    Events & Hooks

    Das Plugin verwendet keine eigenen Event-Klassen. Es reagiert auf folgende Shopware-Events über Subscriber:

  29. **`CheckoutOrderPlacedEvent`** (`OrderPlacedSubscriber`) -- Protokolliert, wenn eine Bestellung aus einer Bestellliste aufgegeben wird.
  30. **`ProductPageLoadedEvent`** (`ProductPageSubscriber`) -- Ergänzt die Produktdetailseite um den "Zur Liste hinzufügen"-Button und die Listen des Kunden.
  31. Textbausteine (Snippets)

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

  32. `bc-order-list.account.title` -- "Bestelllisten"
  33. `bc-order-list.account.subtitle` -- "Verwalten Sie Ihre Bestelllisten für Projekte und Baustellen"
  34. `bc-order-list.account.createList` -- "Neue Liste erstellen"
  35. `bc-order-list.account.editList` / `deleteList` / `duplicateList` / `duplicateFromTemplate` -- Aktionen
  36. `bc-order-list.account.listName` / `listDescription` / `listColor` / `listIsTemplate` -- Formularfelder
  37. `bc-order-list.account.templates` -- "Vorlagen"
  38. `bc-order-list.detail.title` -- "Bestellliste"
  39. `bc-order-list.detail.addItem` / `editItem` / `removeItem` -- Positionsaktionen
  40. `bc-order-list.detail.addToCart` / `addAllToCart` / `selectAll` / `deselectAll` -- Warenkorb-Aktionen
  41. `bc-order-list.detail.product` / `productNumber` / `quantity` / `note` / `priority` / `status` / `desiredDate` -- Spalten
  42. `bc-order-list.detail.unitPrice` / `totalPrice` / `availability` / `available` / `notAvailable` / `lowStock` -- Preise und Verfügbarkeit
  43. `bc-order-list.detail.orderHistory` -- Bestellhistorie
  44. Admin-Snippets (src/Resources/app/administration/src/module/bc-order-list/snippet/de-DE.json, en-GB.json)

    Datenbank-Tabellen

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

    | Tabelle | Entity-Name | Beschreibung |

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

    | bc_order_list | bc_order_list | Bestelllisten mit Name, Beschreibung, Farbkennzeichnung, Template-Flag |

    | bc_order_list_item | bc_order_list_item | Positionen mit Produktreferenz, Menge, Notiz, Priorität |

    | bc_order_list_share | bc_order_list_share | Share-Links mit Token und Ablaufdatum |

    | bc_order_list_order | bc_order_list_order | Zuordnung Bestellliste zu Bestellungen |

    Migrationen:

  45. `Migration1743552000OrderList`
  46. `Migration1743552001OrderListItem`
  47. `Migration1743552002OrderListShare`
  48. `Migration1743552003OrderListOrder`
  49. Admin-Integration

    Das Plugin registriert ein Admin-Modul bc-order-list (Farbe: #0d6efd, Icon: regular-list):

    Seiten:

  50. `bc-order-list-list` -- Liste aller Bestelllisten mit Kundeninformationen
  51. `bc-order-list-detail` -- Detail-Ansicht einer Bestellliste mit Positionen
  52. Die Admin-Module liegen unter:

    src/Resources/app/administration/src/module/bc-order-list/

    Storefront-Integration

    Das Plugin erweitert den Storefront um:

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

  53. `index.html.twig` -- Bestelllisten-Übersicht
  54. `detail.html.twig` -- Listendetail mit Positionen und Aktionen
  55. `shared.html.twig` -- Ansicht für geteilte Listen (öffentlicher Zugriff)
  56. Sidebar-Erweiterung:

  57. `page/account/sidebar.html.twig` -- Menüpunkt "Bestelllisten"
  58. Produkt-Erweiterungen:

  59. `page/product-detail/bc-order-list-add.html.twig` -- "Zur Liste hinzufügen"-Button
  60. `component/buy-widget/buy-widget-form.html.twig` -- Kauf-Formular-Erweiterung
  61. JavaScript-Plugins (src/Resources/app/storefront/src/order-list/):

  62. `bc-order-list-select-all.plugin.js` -- Alle-auswählen-Funktion
  63. `bc-order-list-copy-link.plugin.js` -- Link-Kopier-Funktion für Sharing
  64. Storefront-Controller:

  65. `OrderListController` -- Verarbeitet alle Bestelllisten-Aktionen
  66. Kompatibilität

  67. Kompatibel mit dem Plugin **B2B Plattform** (Listen im Firmenkontext)
  68. Kompatibel mit allen anderen Plugins der Bronner B2B Suite
  69. Kompatibel mit Standard-Shopware-Themes
  70. Getestet mit Shopware 6.7.x
  71. Unterstützt Multi-Language (DE/EN)
  72. FAQ