Add recipe for Nedac Sylius Minimum Ordr Value plugin

This commit is contained in:
Youri Westerman
2021-06-11 09:46:52 +02:00
parent 7ead1b7b42
commit 2acfbd2168
7 changed files with 171 additions and 0 deletions
@@ -0,0 +1,2 @@
imports:
- { resource: "@NedacSyliusMinimumOrderValuePlugin/Resources/config/config.yaml" }
@@ -0,0 +1,10 @@
{
"bundles": {
"Nedac\\SyliusMinimumOrderValuePlugin\\NedacSyliusMinimumOrderValuePlugin": ["all"]
},
"copy-from-recipe": {
"config/": "%CONFIG_DIR%/",
"src/": "%SRC_DIR%",
"templates/": "templates/"
}
}
@@ -0,0 +1,20 @@
<?php
declare(strict_types=1);
namespace App\Entity\Channel;
use Doctrine\ORM\Mapping as ORM;
use Nedac\SyliusMinimumOrderValuePlugin\Model\ChannelInterface as NedacSyliusMinimumOrderValuePluginChannelInterface;
use Nedac\SyliusMinimumOrderValuePlugin\Model\MinimumOrderValueTrait as
NedacSyliusMinimumOrderValuePluginMinimumOrderValueTrait;
use Sylius\Component\Core\Model\Channel as BaseChannel;
/**
* @ORM\Entity
* @ORM\Table(name="sylius_channel")
*/
class Channel extends BaseChannel implements NedacSyliusMinimumOrderValuePluginChannelInterface
{
use NedacSyliusMinimumOrderValuePluginMinimumOrderValueTrait;
}
@@ -0,0 +1,93 @@
{{ form_errors(form) }}
<div class="ui two column stackable grid">
<div class="column">
<h4 class="ui top attached large header">{{ 'sylius.ui.general'|trans }}</h4>
<div class="ui attached segment">
{{ form_errors(form) }}
<div class="fields">
<div class="six wide field">
{{ form_row(form.code) }}
</div>
<div class="seven wide field">
{{ form_row(form.name) }}
</div>
<div class="three wide field">
{{ form_row(form.color) }}
</div>
</div>
<div class="ui hidden divider"></div>
{{ form_row(form.enabled) }}
</div>
<div class="ui attached segment">
<div class="field">
{{ form_label(form.hostname) }}
<div class="ui labeled input">
<div class="ui label">http://</div>
{{ form_widget(form.hostname) }}
</div>
{{ form_errors(form.hostname) }}
</div>
{{ form_row(form.contactEmail) }}
{{ form_row(form.description, {'attr': {'rows' : '3'}}) }}
</div>
<div class="ui attached segment">
{{ form_row(form.countries) }}
</div>
<div class="ui hidden divider"></div>
<h4 class="ui top attached large header">{{ 'sylius.ui.money'|trans }}</h4>
<div class="ui attached segment">
<div class="two fields">
{{ form_row(form.baseCurrency) }}
{{ form_row(form.currencies) }}
</div>
</div>
<div class="ui attached segment">
{{ form_row(form.defaultTaxZone) }}
{{ form_row(form.taxCalculationStrategy) }}
</div>
</div>
<div class="column">
<h4 class="ui top attached large header">{{ form_label(form.shopBillingData) }}</h4>
<div class="ui attached segment">
<div class="two fields">
{{ form_row(form.shopBillingData.company) }}
{{ form_row(form.shopBillingData.taxId) }}
</div>
<div class="two fields">
{{ form_row(form.shopBillingData.countryCode) }}
{{ form_row(form.shopBillingData.street) }}
</div>
<div class="two fields">
{{ form_row(form.shopBillingData.city) }}
{{ form_row(form.shopBillingData.postcode) }}
</div>
</div>
<div class="ui hidden divider"></div>
<h4 class="ui top attached large header">{{ 'sylius.ui.look_and_feel'|trans }}</h4>
<div class="ui attached segment">
{{ form_row(form.themeName) }}
</div>
<div class="ui attached segment">
{{ form_row(form.locales) }}
{{ form_row(form.defaultLocale) }}
</div>
<div class="ui attached segment">
{{ form_row(form.menuTaxon) }}
</div>
<div class="ui hidden divider"></div>
<div id="nedac-sylius-minimum-order-value-plugin-admin-before" class="ui attached segment">
{{ form_row(form.skippingShippingStepAllowed) }}
{{ form_row(form.skippingPaymentStepAllowed) }}
{{ form_row(form.accountVerificationRequired) }}
</div>
{% if form.minimumOrderValue is defined %}
<div id="nedac-sylius-minimum-order-value-plugin-admin-segment" class="ui segment">
{{ form_row(form.minimumOrderValue) }}
<div class="ui toggle checkbox">
<input id="nedac-sylius-minimum-order-value-plugin-admin-toggle" type="checkbox" name="public">
<label>{{ 'nedac_sylius_minimum_order_value_plugin.ui.enabled'|trans }}</label>
</div>
</div>
{% endif %}
</div>
</div>
@@ -0,0 +1,20 @@
{% import "@SyliusShop/Common/Macro/money.html.twig" as money %}
{% set minimumOrderValue = cart.channel.minimumOrderValue %}
{% set total = sylius_order_items_subtotal(cart) %}
{% if total >= minimumOrderValue %}
{% set buttonClass = "ui huge primary fluid labeled icon button" %}
{% else %}
{% set buttonClass = "ui huge primary fluid labeled icon button disabled" %}
{% set formattedMinimum = money.convertAndFormat(minimumOrderValue) %}
{% set formattedDifference = money.convertAndFormat(minimumOrderValue - total) %}
<div class="ui icon negative message">
<i class="warning icon"></i>
<div class="content">
<div class="header">{{ 'nedac_sylius_minimum_order_value_plugin.ui.attention'|trans }}</div>
<p id="nedac-sylius-minimum-order-value-plugin-message" {{ sylius_test_html_attribute('minimum-order-value-plugin-message') }}>{{ 'nedac_sylius_minimum_order_value_plugin.ui.minimum_not_yet_reached'|trans({ '%minimumOrderValue% ': formattedMinimum, '%difference%': formattedDifference })|raw('br') }}</p>
</div>
</div>
{% endif %}
<a href="{{ path('sylius_shop_checkout_start') }}" class="{{ buttonClass }}" id="nedac-checkout-button" {{ sylius_test_html_attribute('checkout-button') }}><i class="check icon"></i> {{ 'sylius.ui.checkout'|trans }}</a>
@@ -0,0 +1,20 @@
{% import "@SyliusShop/Common/Macro/money.html.twig" as money %}
{% set minimumOrderValue = cart.channel.minimumOrderValue %}
{% set total = sylius_order_items_subtotal(cart) %}
{% if cart.empty %}
{{ 'sylius.ui.your_cart_is_empty'|trans }}.
{% else %}
<div class="ui list">
{% for item in cart.items %}
<div class="item">{{ item.quantity }} x <strong>{{ item.product }}</strong> {{ money.convertAndFormat(item.unitPrice) }}</div>
{% endfor %}
<div class="item"><strong>{{ 'sylius.ui.subtotal'|trans }}</strong>: {{ money.convertAndFormat(cart.itemsTotal) }}</div>
</div>
<a href="{{ path('sylius_shop_cart_summary') }}" class="ui fluid basic text button">{{ 'sylius.ui.view_and_edit_cart'|trans }}</a>
{% if total >= minimumOrderValue %}
<div class="ui divider"></div>
<a href="{{ path('sylius_shop_checkout_start') }}" class="ui fluid primary button">{{ 'sylius.ui.checkout'|trans }}</a>
{% endif %}
{% endif %}
@@ -0,0 +1,6 @@
<div id="sylius-cart-button" class="ui circular cart button" {{ sylius_test_html_attribute('cart-button') }}>
{{ sylius_template_event('sylius.shop.cart.widget.button', {'cart': cart}) }}
</div>
<div class="ui large flowing cart hidden popup" id="nedac-sylius-minimum-order-value-plugin-popup" {{ sylius_test_html_attribute('widget-popup') }}>
{{ sylius_template_event('sylius.shop.cart.widget.popup', {'cart': cart}) }}
</div>