Skip to content
Ježek Duel Plugin
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin JezekDuelPlugin Nov 12, 2018
doc JezekDuelPlugin Nov 12, 2018
features JezekDuelPlugin Nov 12, 2018
src Add label to shipping Jan 30, 2019
tests JezekDuelPlugin Nov 12, 2018
.editorconfig JezekDuelPlugin Nov 12, 2018
.gitignore JezekDuelPlugin Nov 12, 2018
.gitlab-ci.yml JezekDuelPlugin Nov 12, 2018
.travis.yml JezekDuelPlugin Nov 12, 2018
README.md JezekDuelPlugin Nov 12, 2018
behat.yml.dist JezekDuelPlugin Nov 12, 2018
composer.json JezekDuelPlugin Nov 12, 2018
easy-coding-standard.yml JezekDuelPlugin Nov 12, 2018
logo.png JezekDuelPlugin Nov 12, 2018
node_modules JezekDuelPlugin Nov 12, 2018
phpstan.neon JezekDuelPlugin Nov 12, 2018
phpunit.xml.dist JezekDuelPlugin Nov 12, 2018

README.md

Ježek Duel Plugin

Features

Provides integration with Duel accounting software.

  • Downloads Sylius orders into Duel
  • Updates product data in Sylius
  • You can update any product data, by default the plugin updates stock level only. For details see updateProduct() method of the mango:jezek:update command.
  • In combination with the Payment Fee module, it can handle cash on delivery fees (known as "Dobírka" in Czechia and Slovakia) incl. taxes.

Requirements

  • Based on how integrations in Ježek Duel work, you will need an FTP account as a storage for XML files which are used for transferring data.

Installation

  1. Run $ composer require mangoweb-sylius/sylius-jezek-duel-plugin.
  2. Register \MangoSylius\JezekDuelPlugin\MangoSyliusJezekDuelPlugin in your Kernel.
  3. Add ftp parameters into config.yml
    mango_sylius_jezek_duel:
        server_url: 'server_url'
        username:   'username'
        password:   'password'
  1. Your Entity Order has to implement \MangoSylius\JezekDuelPlugin\Model\OrderWithExportedAtInterface. You can use Trait MangoSylius\JezekDuelPlugin\Model\OrderWithExportedAtTrait.
  2. Your Entity ProductVariant has to implement \MangoSylius\JezekDuelPlugin\Model\ProductVariantWithJezekIdsInterface. You can use Trait MangoSylius\JezekDuelPlugin\Model\ProductVariantWithJezekIdsTrait.
  3. Include template Resources/views/Channel/extendedChannelForm.html.twig in @SyliusAdmin/Channel/_form.html.twig.

For guide to use your own entity see Sylius docs - Customizing Models

Usage

  • Set up the eshop in Duel
    Use "Webový servis" or "eBrána" type. Click "Založit e-shop" in "Agenda" tab (id asked for folder names, keep defaults - "in" and "out").
  • Link products
    Use Ježek product UID codes as code for products in Sylius or if you use another codes in your Sylius eshop, put Duel's product UID in dedicated product parameter "Ježek ID". You can put mode UIDs (one per line) to connect more Duel products to one Sylius product when selling product bundles. The plugin first checks "Ježek ID" field, if empty, it checks product code to match the product by Ježek UID. For configurable products, there is one "Ježek ID" per variant. You can use the same "Ježek ID" for multiple variants as well as products.
  • Data handling by Sylius
    Setup commands in cron as specified below. Recommended frequency is 5 mins for orders (can be less for busy shops) and one hour for products (if you update products less frequently, use daily sync).
  • Invoice inbound sync (orders from eshop)
    Click "Stažení objednávek z e-shopu" in "Agenda" tab.
  • Invoice outbound sync (product data to eshop)
    Click "Aktualizace dat v e-shopu" in "Agenda" tab.

Commands

  • Export orders to FTP.

    mango:jezek:export
  • Update products details from FTP.

    mango:jezek:update

Development

Usage

  • Create symlink from .env.dist to .env or create your own .env file
  • Develop your plugin in /src
  • See bin/ for useful commands

Testing

After your changes you must ensure that the tests are still passing.

  • Easy Coding Standard
    bin/ecs.sh
  • PHPStan
    bin/phpstan.sh

License

This library is under the MIT license.

Credits

Developed by manGoweb.

You can’t perform that action at this time.