setono / sylius-shipmondo-plugin
Integrate your store with Shipmondo
Installs: 649
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 3
Type:sylius-plugin
Requires
- php: >=8.1
- doctrine/orm: ^2.15
- doctrine/persistence: ^2.5 || ^3.2
- firebase/php-jwt: ^6.10
- knplabs/knp-menu: ^3.4
- ocramius/doctrine-batch-utils: ^2.4
- psr/event-dispatcher: ^1.0
- setono/doctrine-object-manager-trait: ^1.1
- setono/shipmondo-php-sdk: ^1.0@beta
- sylius/core: ^1.0
- sylius/core-bundle: ^1.0
- sylius/grid-bundle: ^1.0
- sylius/order: ^1.0
- sylius/resource-bundle: ^1.0
- sylius/ui-bundle: ^1.0
- symfony/config: ^6.4
- symfony/console: ^6.4
- symfony/dependency-injection: ^6.4
- symfony/event-dispatcher: ^6.4
- symfony/event-dispatcher-contracts: ^3.4
- symfony/framework-bundle: ^6.4
- symfony/http-foundation: ^6.4
- symfony/http-kernel: ^6.4
- symfony/messenger: ^6.4
- symfony/remote-event: ^6.4
- symfony/routing: ^6.4
- symfony/string: ^6.4
- symfony/webhook: ^6.4
- symfony/workflow: ^6.4
- twig/twig: ^2.16 || ^3.8
- webmozart/assert: ^1.11
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.6
- sylius/sylius: ~1.12.13
- symfony/debug-bundle: ^6.4
- symfony/dotenv: ^6.4
- symfony/http-client: ^6.4
- symfony/intl: ^6.4
- symfony/property-info: ^6.4
- symfony/serializer: ^6.4
- symfony/web-profiler-bundle: ^6.4
- symfony/webpack-encore-bundle: ^1.17
- willdurand/negotiation: ^3.1
This package is auto-updated.
Last update: 2024-11-05 10:00:37 UTC
README
Installation
composer require setono/sylius-shipmondo-plugin symfony/webhook
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_shipmondo.model.remote_event.class".
exception.
<?php $bundles = [ // ... Setono\SyliusShipmondoPlugin\SetonoSyliusShipmondoPlugin::class => ['all' => true], Sylius\Bundle\GridBundle\SyliusGridBundle::class => ['all' => true], // ... ];
Import routing
# config/routes/setono_sylius_shipmondo.yaml setono_sylius_shipmondo: resource: "@SetonoSyliusShipmondoPlugin/Resources/config/routes.yaml"
or if your app doesn't use locales:
# config/routes/setono_sylius_shipmondo.yaml setono_sylius_shipmondo: resource: "@SetonoSyliusShipmondoPlugin/Resources/config/routes_no_locale.yaml"
Add environment variables
Add the following variables to your .env
file:
###> setono/sylius-shipmondo-plugin ### SHIPMONDO_USERNAME= SHIPMONDO_KEY= SHIPMONDO_WEBHOOKS_KEY= ###< setono/sylius-shipmondo-plugin ###
Override template
The shipping method form has to be overridden to be able to edit the pickupPointDelivery
and carrierCode
properties on the shipping methods.
If you haven't created the file yet, create templates/bundles/SyliusAdminBundle/ShippingMethod/_form.html.twig
and add {{ form_row(form.pickupPointDelivery) }}
and {{ form_row(form.carrierCode) }}
where you want it.
An example could be to add it next to the enabled
field:
... <div class="three fields"> {{ form_row(form.enabled) }} {{ form_row(form.pickupPointDelivery) }} {{ form_row(form.carrierCode) }} </div> ...
which will look like this in the default admin panel:
Extend entities
Order
entity
<?php # src/Entity/Order/Order.php declare(strict_types=1); namespace App\Entity\Order; use Setono\SyliusShipmondoPlugin\Model\OrderInterface as ShipmondoOrderInterface; use Setono\SyliusShipmondoPlugin\Model\OrderTrait as ShipmondoOrderTrait; 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 ShipmondoOrderInterface { use ShipmondoOrderTrait; }
PaymentMethod
entity
<?php # src/Entity/Payment/PaymentMethod.php declare(strict_types=1); namespace App\Entity\Payment; use Doctrine\ORM\Mapping as ORM; use Setono\SyliusShipmondoPlugin\Model\PaymentMethodInterface as ShipmondoPaymentMethodInterface; use Setono\SyliusShipmondoPlugin\Model\PaymentMethodTrait as ShipmondoPaymentMethodTrait; use Sylius\Component\Core\Model\PaymentMethod as BasePaymentMethod; /** * @ORM\Entity * * @ORM\Table(name="sylius_payment_method") */ class PaymentMethod extends BasePaymentMethod implements ShipmondoPaymentMethodInterface { use ShipmondoPaymentMethodTrait; }
ShippingMethod
entity
<?php # src/Entity/Shipping/ShippingMethod.php declare(strict_types=1); namespace App\Entity\Shipping; use Doctrine\ORM\Mapping as ORM; use Setono\SyliusShipmondoPlugin\Model\ShippingMethodInterface as ShipmondoShippingMethodInterface; use Setono\SyliusShipmondoPlugin\Model\ShippingMethodTrait as ShipmondoShippingMethodTrait; use Sylius\Component\Core\Model\ShippingMethod as BaseShippingMethod; /** * @ORM\Entity * * @ORM\Table(name="sylius_shipping_method") */ class ShippingMethod extends BaseShippingMethod implements ShipmondoShippingMethodInterface { use ShipmondoShippingMethodTrait; }
Shipment
entity
<?php # src/Entity/Shipping/Shipment.php declare(strict_types=1); namespace App\Entity\Shipping; use Doctrine\ORM\Mapping as ORM; use Setono\SyliusShipmondoPlugin\Model\ShipmentInterface as ShipmondoShipmentInterface; use Setono\SyliusShipmondoPlugin\Model\ShipmentTrait as ShipmondoShipmentTrait; use Sylius\Component\Core\Model\Shipment as BaseShipment; /** * @ORM\Entity * * @ORM\Table(name="sylius_shipment") */ class Shipment extends BaseShipment implements ShipmondoShipmentInterface { use ShipmondoShipmentTrait; }
Update your database:
php bin/console doctrine:migrations:diff php bin/console doctrine:migrations:migrate
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