Das Plugin bringt zwei Routen in der Admin-API mit. Die Migrationskarte im Admin nutzt sie. Du kannst sie mit einem Admin-API-Token auch selbst aufrufen.
| Methode | Pfad | Zweck | Benötigte Rechte |
|---|---|---|---|
GET |
/api/_action/mmd-kleinunternehmer/migration-status |
Zahl der Produkte, die noch migriert werden müssen, und der bereits migrierten | product:read |
POST |
/api/_action/mmd-kleinunternehmer/migrate-to-small-business |
Alle Produkte auf den 0%-Steuersatz migrieren | product:update, system_config:read |
Es gibt keine Route für die Rückstellung. Die geht nur über den CLI-Befehl.
Antwort bei vorhandenem Steuersatz:
{
"success": true,
"productsToMigrate": 12,
"productsOnSmallBusiness": 340,
"smallBusinessTaxId": "0190..."
}
Fehlt der Steuersatz Kleinunternehmer §19 UStG (0%), antwortet die Route mit HTTP 200 und {"success": false, "error": "Small business tax rule not found. Please activate the plugin first."}.
Der Aufruf braucht keinen Body. Die Route migriert alle Produkte, die nicht auf dem 0%-Steuersatz liegen, nach derselben Preislogik wie der CLI-Befehl, in Schritten von 100.
| Fall | HTTP-Status | Antwort |
|---|---|---|
| Produkte migriert | 200 | {"success": true, "migratedCount": <Anzahl>, "message": "Successfully migrated <Anzahl> products to 0% tax rate."} |
| Nichts zu migrieren | 200 | {"success": true, "migratedCount": 0, "message": "All products are already using the small business tax rate."} |
| Steuersatz fehlt | 400 | {"success": false, "error": "Small business tax rule not found."} |
Die Route läuft synchron im Request. Bei sehr großen Katalogen kann das an Server-Zeitlimits scheitern, dafür gibt es den CLI-Befehl.