Kaufmodelle & Tickets & Abo
Flexible Preismodelle, Abo-Verwaltung und Support-Tickets in einem Plugin
Überblick
Das Plugin vereint drei Module in einem: Flexible Kaufmodelle pro Produkt (Kauf, Monatlich, Jährlich), eine vollständige Abo-Verwaltung mit automatischer Verlängerung über einen täglichen Scheduled Task und ein produktbezogenes Support-Ticket-System im Kundenkonto.
Jedes Modul lässt sich einzeln aktivieren oder deaktivieren. Das Plugin eignet sich besonders für Software-Lizenzen, SaaS-Produkte, Wartungsverträge und Verbrauchsmaterialien im Abo-Modell.
Systemvoraussetzungen
Installation
custom/plugins/BcProductLicensing ablegenphp bin/console cache:clearbc_pricing_model, bc_support_ticket, bc_support_ticket_message und bc_subscription.Konfiguration
Die Plugin-Konfiguration befindet sich unter Erweiterungen > Meine Erweiterungen > BC Kaufmodelle, Tickets & Abo > Konfiguration (config.xml).
Allgemein:
Kaufmodelle:
Ticket-System:
Anzeige:
Funktionen
Kaufmodelle
Jedes Produkt kann über die bc_pricing_model-Entity bis zu drei Preismodelle haben: Kauf, Monatlich, Jährlich. Die Konfiguration erfolgt im Admin über die Produkt-Erweiterung (sw-product-detail Extension mit Tab bc-product-pricing). Auf der Produktdetailseite erscheint der BcPricingModelSelectorPlugin als Radio-Card-Selektor mit dynamischer Preisanpassung.
Abo-Verwaltung
Bei Bestellung mit Monats- oder Jahresmodell wird über den OrderPlacedSubscriber automatisch ein Abonnement (bc_subscription) angelegt. Der SubscriptionService verwaltet die Geschäftslogik. Im Kundenkonto unter "Meine Abos" sieht der Kunde alle Abonnements mit Verlängerungsdatum, Status und Kündigungsmöglichkeit.
Support-Ticket-System
Kunden erstellen Support-Tickets (bc_support_ticket) im Kundenkonto über den TicketController. Der TicketService und TicketNumberGenerator verarbeiten die Erstellung. Nachrichten (bc_support_ticket_message) ermöglichen einen chronologischen Dialog. Tickets haben die Status: Offen, In Bearbeitung, Wartend, Gelöst, Geschlossen.
Automatische Abo-Verlängerung
Der SubscriptionRenewalTask prüft täglich Abonnements und löst bei Fälligkeit eine Verlängerung aus.
Cart Processor
Der PricingModelCartProcessor passt den Warenkorbpreis basierend auf dem gewählten Kaufmodell an.
Produkt-Extension
Das Plugin erweitert die Product-Entity über ProductExtension, um Pricing-Models direkt am Produkt abrufbar zu machen.
Events & Hooks
Das Plugin verwendet keine eigenen Event-Klassen. Es reagiert auf folgende Shopware-Events über Subscriber:
Textbausteine (Snippets)
Storefront-Snippets (src/Resources/snippet/de_DE/bc-product-licensing.de-DE.json):
*Account:*
*Ticket-System:*
*Abonnements:*
*Ticket-Status:*
*Kaufmodell:*
Admin-Snippets (src/Resources/app/administration/src/module/bc-product-licensing/snippet/de-DE.json, en-GB.json)
Scheduled Tasks
Datenbank-Tabellen
Das Plugin erstellt folgende Datenbank-Tabellen über 4 Migrationen:
| Tabelle | Entity-Name | Beschreibung |
|---|---|---|
| bc_pricing_model | bc_pricing_model | Kaufmodelle pro Produkt (Kauf/Monatlich/Jährlich mit Preisen) |
| bc_support_ticket | bc_support_ticket | Support-Tickets mit Kundenreferenz, Produktbezug, Status |
| bc_support_ticket_message | bc_support_ticket_message | Nachrichten zu Tickets |
| bc_subscription | bc_subscription | Abonnements mit Kundenbezug, Produktbezug, Status, Verlängerungsdatum |
Migrationen:
Admin-Integration
Das Plugin registriert ein Admin-Modul bc-product-licensing (Farbe: #ff6b35, Icon: regular-comments) sowie eine Produkt-Erweiterung:
Admin-Modul:
Produkt-Erweiterung (src/Resources/app/administration/src/extension/sw-product-detail/):
Die Admin-Module liegen unter:
src/Resources/app/administration/src/module/bc-product-licensing/
src/Resources/app/administration/src/extension/sw-product-detail/Storefront-Integration
Das Plugin erweitert den Storefront um:
Account-Seiten (src/Resources/views/storefront/page/account/):
Sidebar-Erweiterung:
Produkt-Erweiterungen:
JavaScript-Plugins (src/Resources/app/storefront/src/):