Skip to content

Easily allow your customers to climate offset their order via Climate Partner

License

Notifications You must be signed in to change notification settings

Setono/SyliusClimatePartnerPlugin

Repository files navigation

Sylius Climate Partner Plugin

Latest Version Latest Unstable Version Software License Build Status Code Coverage

This plugin will allow customers to add climate offsets to their orders.

frontend.mp4

Installation

composer require setono/sylius-climate-partner-plugin

Import configuration

# config/packages/setono_sylius_climate_partner.yaml
imports:
    # ...
    - { resource: "@SetonoSyliusClimatePartnerPlugin/Resources/config/app/config.yaml" }

Import routing

# config/routes/setono_sylius_climate_partner.yaml
setono_sylius_climate_partner:
    resource: "@SetonoSyliusClimatePartnerPlugin/Resources/config/routes.yaml"

or if your app doesn't use locales:

# config/routes/setono_sylius_climate_partner.yaml
setono_sylius_climate_partner:
    resource: "@SetonoSyliusClimatePartnerPlugin/Resources/config/routes_no_locale.yaml"

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_climate_partner.model.channel_climate_fee.class". exception.

<?php
// config/bundles.php

$bundles = [
    // ...
    Setono\SyliusClimatePartnerPlugin\SetonoSyliusClimatePartnerPlugin::class => ['all' => true],
    Sylius\Bundle\GridBundle\SyliusGridBundle::class => ['all' => true],
    // ...
];

Copy API resources

In order to add ClimatePartner API endpoints to Sylius Order section, the API Resource declaration has to be overridden. If you've not overridden those configuration yet, you can simply copy the whole files into your local config/api_resources folder. If you've overridden them already, then you can just merge your config with the endpoints we added.

Resources declaration that need to be copied are:

If you already have them overridden, just add the following item operations:

Order.xml

<itemOperation name="shop_apply_climate_offset">
    <attribute name="method">PATCH</attribute>
    <attribute name="path">/shop/orders/{tokenValue}/apply-climate-offset</attribute>
    <attribute name="messenger">input</attribute>
    <attribute name="input">Setono\SyliusClimatePartnerPlugin\Api\Command\ApplyClimateOffset</attribute>
    <attribute name="openapi_context">
        <attribute name="summary">Apply climate offset to cart</attribute>
    </attribute>
    <attribute name="denormalization_context">
        <attribute name="groups">shop:climate-offset:apply</attribute>
    </attribute>
</itemOperation>

<itemOperation name="shop_remove_climate_offset">
    <attribute name="method">PATCH</attribute>
    <attribute name="path">/shop/orders/{tokenValue}/remove-climate-offset</attribute>
    <attribute name="messenger">input</attribute>
    <attribute name="input">Setono\SyliusClimatePartnerPlugin\Api\Command\RemoveClimateOffset</attribute>
    <attribute name="openapi_context">
        <attribute name="summary">Remove climate offset to cart</attribute>
    </attribute>
    <attribute name="denormalization_context">
        <attribute name="groups">shop:climate-offset:apply</attribute>
    </attribute>
</itemOperation>

About

Easily allow your customers to climate offset their order via Climate Partner

Resources

License

Stars

Watchers

Forks

Releases

No releases published