setono / sylius-peak-wms-plugin
Integrate your store with Peak WMS
Installs: 493
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:sylius-plugin
Requires
- php: >=8.1
- doctrine/orm: ^2.15
- doctrine/persistence: ^2.5 || ^3.2
- knplabs/knp-menu: ^3.4
- liip/imagine-bundle: ^2.0
- ocramius/doctrine-batch-utils: ^2.4
- psr/event-dispatcher: ^1.0
- psr/http-message: ^1.1
- psr/log: ^1.0 || ^2.0 || ^3.0
- setono/composite-compiler-pass: ^1.1
- setono/doctrine-orm-trait: ^1.1
- setono/peak-wms-php-sdk: ^1.0@alpha
- sylius/admin-bundle: ^1.0
- sylius/core: ^1.0
- sylius/core-bundle: ^1.0
- sylius/grid-bundle: ^1.0
- sylius/order: ^1.0
- sylius/payment: ^1.0
- sylius/product: ^1.0
- sylius/resource-bundle: ^1.0
- sylius/shipping: ^1.0
- sylius/ui-bundle: ^1.0
- symfony/config: ^5.4 || ^6.4
- symfony/console: ^5.4 || ^6.4
- symfony/dependency-injection: ^5.4 || ^6.4
- symfony/event-dispatcher: ^5.4 || ^6.4
- symfony/framework-bundle: ^5.4 || ^6.4
- symfony/http-foundation: ^5.4 || ^6.4
- symfony/http-kernel: ^5.4 || ^6.4
- symfony/messenger: ^5.4 || ^6.4
- symfony/routing: ^5.4 || ^6.4
- symfony/workflow: ^5.4 || ^6.4
- webmozart/assert: ^1.11
- winzou/state-machine: ^0.4
Requires (Dev)
- api-platform/core: ^2.7.16
- babdev/pagerfanta-bundle: ^3.8
- behat/behat: ^3.14
- beyondcode/expose: ^2.6
- doctrine/doctrine-bundle: ^2.11
- infection/infection: ^0.27.6
- jms/serializer-bundle: ^4.2
- lexik/jwt-authentication-bundle: ^2.16
- matthiasnoback/symfony-dependency-injection-test: ^4.3 || ^5.0
- nyholm/psr7: ^1.8
- phpspec/prophecy-phpunit: ^2.2
- phpunit/phpunit: ^9.6
- psalm/plugin-phpunit: ^0.18
- psalm/plugin-symfony: ^5.1
- setono/code-quality-pack: ^2.8
- shipmonk/composer-dependency-analyser: ^1.6
- sylius/sylius: ~1.12.13
- symfony/browser-kit: ^5.4 || ^6.4
- symfony/css-selector: ^5.4 || ^6.4
- symfony/debug-bundle: ^5.4 || ^6.4
- symfony/dotenv: ^5.4 || ^6.4
- symfony/http-client: ^5.4 || ^6.4
- symfony/intl: ^5.4 || ^6.4
- symfony/phpunit-bridge: ^7.1
- symfony/property-info: ^5.4 || ^6.4
- symfony/serializer: ^5.4 || ^6.4
- symfony/web-profiler-bundle: ^5.4 || ^6.4
- symfony/webpack-encore-bundle: ^1.17
- willdurand/negotiation: ^3.1
- zenstruck/messenger-test: ^1.10
This package is auto-updated.
Last update: 2024-11-18 12:44:01 UTC
README
Installation
composer require setono/sylius-peak-wms-plugin
Add plugin class to your bundles.php
Make sure you add it before SyliusGridBundle
, otherwise you'll get
You have requested a non-existent parameter "setono_sylius_peak.model.upload_order_request.class".
exception.
<?php $bundles = [ // ... Setono\SyliusPeakPlugin\SetonoSyliusPeakPlugin::class => ['all' => true], Sylius\Bundle\GridBundle\SyliusGridBundle::class => ['all' => true], // ... ];
Import routing
# config/routes/setono_sylius_peak.yaml setono_sylius_peak: resource: "@SetonoSyliusPeakPlugin/Resources/config/routes.yaml"
or if your app doesn't use locales:
# config/routes/setono_sylius_peak.yaml setono_sylius_peak: resource: "@SetonoSyliusPeakPlugin/Resources/config/routes_no_locale.yaml"
Add environment variables
Add the following variables to your .env
file:
###> setono/sylius-peak-wms-plugin ### PEAK_WMS_API_KEY=YOUR_API_KEY ###< setono/sylius-peak-wms-plugin ###
Extend entities
Order
entity
<?php # src/Entity/Order/Order.php declare(strict_types=1); namespace App\Entity\Order; use Setono\SyliusPeakPlugin\Model\OrderInterface as PeakOrderInterface; use Setono\SyliusPeakPlugin\Model\OrderTrait as PeakOrderTrait; use Sylius\Component\Core\Model\Order as BaseOrder; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * * @ORM\Table(name="sylius_order") */ class Order extends BaseOrder implements PeakOrderInterface { use PeakOrderTrait; }
ProductVariant
entity
<?php # src/Entity/Product/ProductVariant.php declare(strict_types=1); namespace App\Entity\Order; use Doctrine\ORM\Mapping as ORM; use Setono\SyliusPeakPlugin\Model\ProductVariantInterface as PeakProductVariantInterface; use Setono\SyliusPeakPlugin\Model\ProductVariantTrait as PeakProductVariantTrait; use Sylius\Component\Core\Model\ProductVariant as BaseProductVariant; /** * @ORM\Entity * * @ORM\Table(name="sylius_product_variant") */ class ProductVariant extends BaseProductVariant implements PeakProductVariantInterface { use PeakProductVariantTrait; }
Update your database
php bin/console doctrine:migrations:diff php bin/console doctrine:migrations:migrate
Add jobs to your cron
# Will process the orders that are ready to be sent to Peak WMS php bin/console setono:sylius-peak-wms:process-upload-order-requests # Will create upload product variant requests for all product variants php bin/console setono:sylius-peak-wms:create-upload-product-variant-requests # Will process the upload product variant requests php bin/console setono:sylius-peak-wms:process-upload-product-variant-requests # Will update the inventory in Sylius based on the inventory in Peak WMS php bin/console setono:sylius-peak-wms:update-inventory # Will remove webhooks older than the given threshold (default is 30 days) php bin/console setono:sylius-peak-wms:prune-webhooks
Register webhooks
To receive stock adjustments and order status updates from Peak WMS, you need to register webhooks in Peak WMS.
Do this by running the following command:
php bin/console setono:sylius-peak-wms:register-webhooks
NOTICE That you also need to enable the sending of webhooks inside the Peak interface.
Development
(cd tests/Application && yarn install) (cd tests/Application && yarn build) (cd tests/Application && bin/console assets:install) (cd tests/Application && bin/console doctrine:database:create) (cd tests/Application && bin/console doctrine:schema:create) (cd tests/Application && bin/console sylius:fixtures:load -n) (cd tests/Application && symfony serve -d) vendor/bin/expose token <your expose token> vendor/bin/expose default-server free # If you are not paying for Expose vendor/bin/expose share https://127.0.0.1:8000