Wie installiere ich Pickware per Composer?

  • Aktualisiert

Bei der Installation von Pickware hast du grundsätzlich die Möglichkeit, diese entweder über deine Shopware Admin oder per Composer durchzuführen. In diesem Beitrag zeigen wir dir die Installation per Composer. Die Installation von Pickware über die Shopware Admin findest du in einem eigenen Beitrag

Wenn du die Pickware Erweiterungen bisher per Composer installiert hast, müssen diese ebenfalls per Composer deinstalliert werden. Ebenfalls empfehlen wir die Installation von Pickware ERP, WMS & POS per Composer, wenn du zuvor die einzelnen Pickware Erweiterungen per Composer installiert hast.

Pickware ERP, WMS & POS

Mit Pickware ERP, WMS & POS steht dir eine zentrale Erweiterung mit allen Funktionen von Pickware zur Verfügung. Du kannst die Erweiterung über den Shopware Store beziehen.

Solltest du von den einzelnen Pickware Erweiterungen (ERP, ERP Pro, WMS, POS, DHL, GLS oder Deutsche Post) zur Gesamtlösung Pickware ERP, WMS & POS wechseln wollen, findest du in diesem Beitrag die Anleitung zum Vorgehen.

Installation durchführen

Füge in die composer.json-Datei deines Shopware-Projektes folgende Repositories ein:

"repositories": [ 
  { 
    "type": "composer", 
    "url": "https://packages.shopware.com/", 
    "canonical": false 
  }, 
{
"type": "path",
"url": "pickware-plugins/*/vendor/pickware/*"
},
{
"type": "path",
"url": "pickware-plugins/*"
} ]

Unter Umständen ist das Repository des Shopware-Community-Store ("shopware-packages") bereits eingefügt. Es muss unbedingt beachtet werden, dass dieses Repository vor den neuen Path-Repositories eingefügt werden muss und die Eigenschaft "canonical": false gesetzt ist.

Füge in die composer.json-Datei deines Shopware-Projektes für jedes der Plugins, die du installieren willst, einen Eintrag der require-Sektion ein. Ersetze dabei die Version (hier “^2.0.0”) aus dem folgenden Beispiel mit der entsprechenden aktuellen Version der Erweiterung.

Beispiel:

  “store.shopware.com/pickware”: “^2.0.0”
Folgender Bezeichner gilt dabei für die Erweiterung:
Erweiterung require-Bezeichner
Pickware ERP, WMS & POS store.shopware.com/pickware
  • Führe den Befehl composer update pickware/* --with-dependencies aus.
  • Nutze den dort erscheinenden Namen des Plugins um das Plugin zu installieren:
    ./bin/console plugin:install Pickware --activate -c.

Einzelne Pickware Erweiterungen aktualisieren

Solltest du noch unsere einzelnen Pickware Erweiterungen nutzen (ERP, ERP Pro, WMS, POS, DHL, GLS oder Deutsche Post), kannst du diese weiterhin per Composer aktualisieren.

Alle Erweiterungen, die via Composer installiert wurden, müssen auch auf diesem Weg aktualisiert werden. Solltest du von einer Installation/Aktualisierung per Admin zur Installation per Composer wechseln wollen, beachte bitte unbedingt die Hinweise hier

Aktualisierung durchführen

Füge in die composer.json-Datei deines Shopware-Projektes folgende Repositories ein:

"repositories": [ 
  { 
    "type": "composer", 
    "url": "https://packages.shopware.com/", 
    "canonical": false 
  }, 
{
"type": "path",
"url": "pickware-plugins/*/vendor/pickware/*"
},
{
"type": "path",
"url": "pickware-plugins/*"
} ]

Unter Umständen ist das Repository des Shopware-Community-Store ("shopware-packages") bereits eingefügt. Es muss unbedingt beachtet werden, dass dieses Repository vor den neuen Path-Repositories eingefügt werden muss und die Eigenschaft "canonical": false gesetzt ist.

  • Wenn Du Pickware WMS oder Pickware POS abonniert hast, musst du zusätzlich aus deinem Pickware-Account die Zip-Dateien für die entsprechenden Plugins herunterladen und in ein eigenes Verzeichnis pickware-plugins deiner Shopware-Installation entpacken. Dies ist notwendig, da diese Plugins nicht über den Shopware Community Store bereitgestellt werden.

  • Wichtig: Die Plugins Pickware WMS und Pickware POS dürfen nicht in die Verzeichnisse custom/plugins oder custom/static-plugins abgelegt werden, da es sonst zu Problemen beim Update kommt.

Füge in die composer.json-Datei deines Shopware-Projektes für jedes der Plugins, die du installieren willst, einen Eintrag der require-Sektion ein. Ersetze dabei die Version (hier “^2.0.0” und “^1.6.3”) aus dem folgenden Beispiel mit der entsprechenden aktuellen Version der Erweiterung.

Beispiel:

  “store.shopware.com/pickwareerpstarter”: “^2.0.0”, 
  “pickware/pickware-wms”: “^1.6.3”,
Folgende Bezeichner gelten dabei für die Erweiterungen:
Erweiterung require-Bezeichner
Pickware ERP store.shopware.com/pickwareerpstarter
Pickware ERP Pro store.shopware.com/pickwareerppro
Deutsche Post Versand store.shopware.com/pickwaredeutschepost
DHL Versand store.shopware.com/pickwaredhl
GLS Versand store.shopware.com/pickwargls
Pickware WMS pickware/pickware-wms
Pickware POS pickware/pickware-pos
  • Führe den Befehl composer update pickware/* --with-dependencies aus.
  • Nutze den dort erscheinenden Namen des Plugins, um das Plugin zu installieren:
    ./bin/console plugin:install [Pluginname] --activate -c.

Beispiel für Pickware ERP:

./bin/console plugin:install PickwareErpStarter --activate -c

Troubleshooting

Die zur Installation benötigten Pakete werden jeweils mit der Erweiterung in dem Verzeichnis vendor ausgeliefert. Damit Composer diese Pakete findet, muss folgendes Path-Repository in deiner composer.json-Datei hinterlegt sein.

  "repositories": [
    {
      "type": "path",
      "url": "pickware-plugins/*/vendor/pickware/*"
    }
  ]

Fehlt dieses Repository, kommt es beim Ausführen von composer install zu einem Fehler ähnlich diesem:

    pickware/pickware-erp-starter 1.1.0 requires
    pickware/shopware-plugins-dal-bundle ^2.0.0 -> no matching package found.

Teilweise werden Abhängigkeiten von Pickware POS oder Pickware WMS mitgebracht, welche nicht im Shopware-Community-Store verfügbar sind. Dabei kann es zu folgendem oder einem ähnlichen Fehler kommen:

    Problem 1
    - Root composer.json requires pickware/pickware-wms ^2.1.0 -> satisfiable by pickware/pickware-wms[2.1.0].
    - pickware/pickware-wms 2.1.0 requires pickware/document-bundle ^2.4.16 -> satisfiable by pickware/document-bundle[2.4.16] from path repo (pickware-plugins/*/vendor/pickware/*) but pickware/document-bundle[2.0.1, ..., 2.4.15.4] from composer repo (https://packages.shopware.com/) has higher repository priority. The packages from the higher priority repository do not match your constraint and are therefore not installable. That repository is canonical so the lower priority repo's packages are not installable. See https://getcomposer.org/repoprio for details and assistance.

Dies passiert, wenn das Repository für den Shopware-Community-Store ("shopware-packages") nicht vor dem Path-Repository steht und/oder für dieses Repository die Eigenschaft "canonical": false nicht gesetzt ist.

Fehlermeldung Cannot redeclare Franzose\DoctrineBulkInsert\sql() bei der Installation von Erweiterungen

Wenn du bei der Installation einer Erweiterung die Fehlermeldung Cannot redeclare Franzose\DoctrineBulkInsert\sql() erhältst, kann dies daran liegen, dass du gerade versuchst, eine Erweiterung über die Shopware Admin zu installieren, obwohl du zuvor bereits Erweiterungen per Composer installiert hast.

Fatal error: Cannot redeclare Franzose\DoctrineBulkInsert\sql() (previously declared in /var/www/html/vendor/franzose/doctrine-bulk-insert/src/functions.php:9) in /var/www/html/pickware-plugins/PickwarePos/vendor/franzose/doctrine-bulk-insert/src/functions.php on line 20
Symfony\Component\ErrorHandler\Error\FatalError^ {#63
#message: "Compile Error: Cannot redeclare Franzose\DoctrineBulkInsert\sql() (previously declared in /var/www/html/vendor/franzose/doctrine-bulk-insert/src/functions.php:9)"

Grundsätzlich musst du dich bei der Installation deiner Erweiterungen gesamt gesehen für eine Variante entscheiden: Installation per Composer oder Installation per Admin. Um das vorliegende Problem zu lösen, muss die betreffende Erweiterung demnach ebenfalls per Composer installiert werden.

Wir empfehlen dazu folgende Schritte: 

  1. Stelle sicher, dass alle Pickware Plugins in der require-Section der composer.json -Datei hinterlegt sind
  2. Prüfe mit dem Konsolen-Befehlbin/console plugin:refresh, dass alle Plugins installiert sind
  3. Überprüfe in der Datenbank, dass in der Tabelle plugin für die Einträger aller Pickware Plugins der Wert managed_by_composer auf 1 (True) steht.

Plugins werden beim Update aus der composer.json entfernt

Dies passiert, wenn die Plugins im Verzeichnis custom oder einem Unterverzeichnis davon liegen. Die Plugins von Pickware sollten in einem eigenen Verzeichnis liegen, welches nicht unter custom liegt, wie z.B. <installation-root>/shopware-plugins.

Was ist bei einem Wechsel von der Installation per Admin zur Installation per Composer zu beachten?

In diesem Fall müssen in der Datenbank-Tabelle plugin in der Spalte path die Plugin-Pfade korrigiert werden:

  • Für Pickware POS: vendor/pickware/pickware-pos
  • Für Pickware WMS: vendor/pickware/pickware-wms