Das Plugin hat drei voneinander unabhängige Teile: den Lebenszyklus (Steuersatz anlegen), die Migration (Produktdaten ändern) und die Anzeige (Templates, gesteuert durch die Einstellung active). Einen eigenen Warenkorb- oder Steuerprozessor gibt es nicht.
Die Plugin-Klasse Mmd\Kleinunternehmer\MmdKleinunternehmer nutzt diese Werte:
| Wert | Bedeutung |
|---|---|
Steuersatz-Name Kleinunternehmer §19 UStG (0%) |
Der Steuersatz wird über diesen Namen gesucht und angelegt (Satz 0, Position 0). |
core.tax.defaultTaxRate |
Shopware-Einstellung für den Standard-Steuersatz. Das Plugin setzt sie bei der Aktivierung auf den 0%-Steuersatz. |
MmdKleinunternehmer.config.originalDefaultTaxId |
Der bei der Aktivierung gemerkte bisherige Standard-Steuersatz. Die Deaktivierung stellt ihn wieder her. |
MmdKleinunternehmer.config.createdTaxId |
Die ID des vom Plugin neu angelegten Steuersatzes. Nur wenn sie gesetzt ist, löscht die Deinstallation den Steuersatz. |
MmdKleinunternehmer.config.active |
Die Einstellung "Kleinunternehmerregelung aktiv" (bool, Standard false), pro Verkaufskanal überschreibbar. |
Existiert beim Aktivieren bereits ein Steuersatz mit diesem Namen, verwendet das Plugin ihn und merkt ihn sich nicht als selbst angelegt. Er wird dann bei der Deinstallation nicht gelöscht.
| Klasse oder Datei | Aufgabe |
|---|---|
Service\ConfigService |
Liest active mit optionaler Verkaufskanal-ID. |
Service\ProductMigrationService |
Sucht den 0%-Steuersatz und Produkte nach Steuersatz, schreibt Steuersatz und Preise in Schritten von 100 Produkten. Gemeinsam genutzt von CLI und API. |
Command\MigrateProductTaxCommand |
CLI-Befehl mmd:kleinunternehmer:migrate-products. |
Controller\Api\MigrationController |
Die beiden Admin-API-Routen, siehe Admin-API. |
Twig\SmallBusinessExtension |
Twig-Funktion mmd_small_business_active(). |
Resources/views/storefront/... |
Template-Overrides der Storefront, siehe Storefront. |
Resources/views/documents/... |
Template-Overrides für Rechnung, Storno und Gutschrift, siehe Dokumente und E-Mails. |
Resources/snippet/... |
Storefront-Snippets (storefront.de-DE, storefront.en-GB) und der Dokumenten-Hinweis (messages.de-DE, messages.en-GB). |
Resources/app/administration/... |
Modul mit der Migrationskarte (Komponente mmd-kleinunternehmer-migration) und eigenen Admin-Snippets. |
mmd_small_business_active() gibt true zurück, wenn active für den aktuellen Verkaufskanal eingeschaltet ist. Den Verkaufskanal ermittelt sie aus der Variable context (Storefront) oder aus der Variable order (Dokumente). Fehlen beide, gilt der allgemeine Wert.
Die 6.6-Linie (mmd/sw66-kleinunternehmer, shopware/core ~6.6.0) hat denselben Aufbau. Verglichen mit dem Code der 6.7-Linie gibt es diese Unterschiede:
| Bereich | 6.7-Linie | 6.6-Linie |
|---|---|---|
| Hinweistexte | Nur Snippets. | Zusätzlich zwei Textfelder in der Konfiguration (Karte "Hinweistexte"): invoiceHint ("Hinweistext für Rechnungen (optional)") und priceHint ("Hinweistext für Preisanzeige (optional)"). Ein ausgefüllter Wert überschreibt das jeweilige Snippet, ein leerer Wert nutzt das Snippet. |
| Dokumenten-Hinweis | Snippet document.smallBusinessNotice. |
Wert aus invoiceHint, sonst Snippet document.smallBusinessNotice. Gilt für Rechnung, Storno und Gutschrift. |
| Preishinweis Produktseite | Snippet mmd-kleinunternehmer.grossTaxInformation als Link auf die Versand- und Zahlungsinformationen. |
Wert aus priceHint, sonst Snippet mmd-kleinunternehmer.taxInfo ("Preis ohne MwSt. gem. §19 UStG") als einfacher Text ohne Link. |
| Preishinweis Offcanvas-Warenkorb | Snippet mmd-kleinunternehmer.grossTaxInformation. |
Wert aus priceHint, sonst Snippet mmd-kleinunternehmer.taxInfo. |
| Produktliste | Eigener Override der Produktbox mit dem Preishinweis. | Kein Override, die Produktliste zeigt die Shopware-Standardtexte. |
| Twig-Funktionen | mmd_small_business_active() |
Zusätzlich mmd_small_business_price_hint() und mmd_small_business_invoice_hint(). |
| Admin-Migrationskarte | Bestätigungsdialog vor der Migration und Warnung ab mehr als 1.500 Produkten. | Migration startet direkt per Klick, ohne Dialog und ohne Warnung. |
| CLI-Befehl | Fortschrittsbalken während der Migration. | Gleicher Befehl mit denselben Optionen, ohne Fortschrittsbalken. |
| Admin-API-Rechte | product:read (Status), product:update und system_config:read (Migration) |
product.viewer (Status), product.editor (Migration) |
Unverändert gleich sind Plugin-Klasse und technischer Name, Lebenszyklus (Steuersatz, Standard-Steuersatz), Konfigurationsschlüssel active, die Routen der Admin-API, der Name des CLI-Befehls und seine Optionen, die Preislogik, die Überschreibungen der Dokumentvorlagen (abgesehen vom Hinweistext), der Checkout-Override und der Footer-Override.