mangoweb-sylius/sylius-zasilkovna-plugin

此包已被放弃,不再维护。作者建议使用3brs/sylius-zasilkovna-plugin包代替。

Sylius的Zasilkovna插件


README

38423357?s=200&v=4

Zásilkovna插件
68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6d616e676f7765622d73796c6975732f73796c6975732d7a6173696c6b6f766e612d706c7567696e2e737667 68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d616e676f7765622d73796c6975732f73796c6975732d7a6173696c6b6f766e612d706c7567696e2e737667 68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f6d616e676f7765622d73796c6975732f53796c6975735a6173696c6b6f766e61506c7567696e2f6d61737465722e737667

Zásilkovna / Zásielkovňa / Csomagküldő / Przesyłkownia / Coletăria

特性

  • 通过[cz] [pl] [sk] [hu] [ro] 将货物发送到Zasilkovna分支机构或通过Zasilkovna服务发送到客户地址。
  • 用户可以在结账过程中在“配送”步骤的地图中选择Zásilkovna分支机构。
  • 在最终结账步骤和行政面板中都可以看到Zásilkovna分支机构。
  • 导出包含Zasilkovna运输(无论是到Zasilkovna分支机构还是客户地址)的CSV文件,并轻松导入Zasilkovna系统。

admin_order_detail.png

admin_shipping_method_edit.png

shop_shipment_step.png

shop_checkout_complete.png

安装

  1. 运行$ composer require mangoweb-sylius/sylius-zasilkovna-plugin

  2. 将插件类添加到您的config/bundles.php

    return [
       ...
       MangoSylius\ShipmentExportPlugin\MangoSyliusShipmentExportPlugin::class => ['all' => true],
       MangoSylius\SyliusZasilkovnaPlugin\MangoSyliusZasilkovnaPlugin::class => ['all' => true],
    ];
  3. 将资源添加到config/packeges/_sylius.yaml

    imports:
         ...
         ...
         - { resource: "@MangoSyliusZasilkovnaPlugin/Resources/config/resources.yml" }
  4. 将路由添加到config/_routes.yaml

    mango_sylius_shipment_export_plugin:
        resource: '@MangoSyliusShipmentExportPlugin/Resources/config/routing.yml'
        prefix: /admin
  5. 您的实体Shipment必须实现\MangoSylius\SyliusZasilkovnaPlugin\Model\ZasilkovnaShipmentInterface。您可以使用特质\MangoSylius\SyliusZasilkovnaPlugin\Model\ZasilkovnaShipmentTrait

    <?php 
    
    declare(strict_types=1);
    
    namespace App\Entity\Shipping;
    
    use Doctrine\ORM\Mapping as ORM;
    use MangoSylius\SyliusZasilkovnaPlugin\Model\ZasilkovnaShipmentInterface;
    use MangoSylius\SyliusZasilkovnaPlugin\Model\ZasilkovnaShipmentTrait;
    use Sylius\Component\Core\Model\Shipment as BaseShipment;
    
    /**
     * @ORM\Entity
     * @ORM\Table(name="sylius_shipment")
     */
    class Shipment extends BaseShipment implements ZasilkovnaShipmentInterface
    {
        use ZasilkovnaShipmentTrait;
    }
  6. 您的实体ShippingMethod必须实现\MangoSylius\SyliusZasilkovnaPlugin\Model\ZasilkovnaShipmentInterface。您可以使用特质\MangoSylius\SyliusZasilkovnaPlugin\Model\ZasilkovnaShipmentTrait

    <?php 
    
    declare(strict_types=1);
    
    namespace App\Entity\Shipping;
    
    use Doctrine\ORM\Mapping as ORM;
    use MangoSylius\SyliusZasilkovnaPlugin\Model\ZasilkovnaShippingMethodInterface;
    use MangoSylius\SyliusZasilkovnaPlugin\Model\ZasilkovnaShippingMethodTrait;
    use Sylius\Component\Core\Model\ShippingMethod as BaseShippingMethod;
    
    /**
     * @ORM\Entity
     * @ORM\Table(name="sylius_shipping_method")
     */
    class ShippingMethod extends BaseShippingMethod implements ZasilkovnaShippingMethodInterface
    {
        use ZasilkovnaShippingMethodTrait;
    }
  7. @MangoSyliusZasilkovnaPlugin/Admin/ShippingMethod/:zasilkovnaForm.html.twig包含到@SyliusAdmin/ShippingMethod/_form.html.twig中。

    ...	
    {{ include('@MangoSyliusZasilkovnaPlugin/Admin/ShippingMethod/_zasilkovnaForm.html.twig') }}
  8. @MangoSyliusZasilkovnaPlugin/Shop/Checkout/SelectShipping/_zasilkovnaChoice.html.twig包含到@SyliusShop/Checkout/SelectShipping/_choice.html.twig中。

    ...
    {{ include('@MangoSyliusZasilkovnaPlugin/Shop/Checkout/SelectShipping/_zasilkovnaChoice.html.twig') }}
  9. @SyliusShop/Common/Order/_addresses.html.twig中将{% include '@SyliusShop/Common/_address.html.twig' with {'address': order.shippingAddress} %}替换为{{ include('@MangoSyliusZasilkovnaPlugin/Shop/Common/Order/_addresses.html.twig') }}

  10. @SyliusAdmin/Order/Show/_addresses.html.twig中将{% include '@SyliusAdmin/Common/_address.html.twig' with {'address': order.shippingAddress} %}替换为{{ include('@MangoSyliusZasilkovnaPlugin/Admin/Common/Order/_addresses.html.twig') }}

  11. @MangoSyliusShipmentExportPlugin/_row.html.twig中覆盖模板。

    {% extends '@!MangoSyliusShipmentExportPlugin/_row.html.twig' %}
    
    {% block address %}
       {% if row.zasilkovna %}
            {{ include('@MangoSyliusZasilkovnaPlugin/_exporterRow.html.twig') }}
       {% else %}
           {{ parent() }}
       {% endif %}
    {% endblock %}
  12. 创建并运行Doctrine数据库迁移。

有关如何使用自己的实体的指南,请参阅Sylius文档 - 自定义模型

使用方法

  • 对于发送到Zasilkovna分支机构,在行政面板中创建新的运输方式,设置Zásilkovna API密钥并保留承运人ID为空。
  • 对于发送到客户地址,在行政面板中创建新的运输方式,设置承运人ID并保留Zasilkovna API密钥为空。
  • 如果您需要通过国家过滤地图中的点,请使用“在地图中仅显示特定国家的取货点”。如果留空,则显示所有受支持国家中的所有点。
  • 将生成Zásilkovna CSV导出,用于具有代码'zasilkovna'的运输方式,您可以在参数中更改此设置,它是一个数组(因此可以包含多个代码,例如,如果您需要为不同国家提供不同的价格,则需要更多运输方式;始终使用相同的API密钥是允许的)
    parameters:
        shippingMethodsCodes: ['zasilkovna']
    您应将此数组中包含运输到Zasilkovna分支和通过Zasilkovna服务运送到客户地址的方法。
  • Packeta API文档:[https://docs.packetery.com/03-creating-packets/01-csv-import.html](https://docs.packetery.com/03-creating-packets/01-csv-import.html)

开发

用法

  • /src目录中开发您的插件
  • bin/目录下查看有用的命令

测试

在您的更改后,您必须确保测试仍然通过。

$ composer install
$ bin/console doctrine:schema:create -e test
$ bin/behat
$ bin/phpstan.sh
$ bin/ecs.sh

许可

此库受MIT许可。

致谢

manGoweb开发。