Перейти к содержанию
Форум поддержки пользователей VamShop

Бесплатная доставка по достижению какой-то суммы


sergey.gorbunov.sg

Рекомендуемые сообщения

Доброе время суток!

Подскажите пожалуйста как организовать бесплатную доставку по достижению какой-то суммы?

Пример: Если сумма заказы 500р., то стоимость доставки 100р., а если сумма - 2000р., то доставка бесплатная.

Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте!

Это ведь можно настроить в стандартном модуле доставки TableBased в Админке - Настройки - Способы доставки, т.е. будет показывать разную стоимость доставки в зависимости от суммы заказа.

Ссылка на сообщение
Поделиться на другие сайты

Что то не получается(( не подскажете как правильно прописать в таблице, что бы товар до 3000 руб доставка была 300, а после 3000 руб бесплатно

Заранее спасибо   

Ссылка на сообщение
Поделиться на другие сайты
15 минуту назад, pal-palich сказал:

2999:300;3000:0.00

Не хочет делить!

Правильно я ваще делаю: выбираю  TableBase,  в модуле ставлю сумму и забиваю значение. Но когда делаю пробный заказ больше 3000 стоит 300 рублей 

Доставка.PNG

17 минуту назад, VaM сказал:

А что у Вас в настройках модуля TableBased указано?!

Покажиет скрин.

 

Доставка.PNG

Ссылка на сообщение
Поделиться на другие сайты

Можно попробовать вообще не показывать доставку, если сумма заказа больше 3000, то вообще не показывать блок доставки.

Попробуйте в /app/Vendor/smarty/vam_plugins/function.checkout.php поменяйте:

  <div id="shipping_method">
    <div>
      <h3>{lang}Shipping Method{/lang}</h3>
    </div>  
  <div class="clearfix">
	<ul class="shipping-methods">
    {foreach from=$ship_methods item=ship_method}
		<li class="item col-sm-6 col-md-4{if $ship_method.id == $order.shipping_method_id} selected{/if}">
      <label class="shipping-method">
      <span class="title">
        <input type="radio" name="shipping_method_id" value="{$ship_method.id}" id="ship_{$ship_method.id}" 
        {if $ship_method.id == $order.shipping_method_id}
          checked="checked"
         {/if}
        />
		<span class="name">{lang}{$ship_method.name}{/lang}</span>
		</span>
		<span class="image text-center">
				{if $ship_method.icon}<img src="{base_path}/img/icons/shipping/{$ship_method.icon}" alt="{$ship_method.name}" title="{$ship_method.name}" /> {/if}
		</span>
		{if $ship_method.cost_plain > 0}<span class="description">{$ship_method.cost}</span>{/if}
		{if $ship_method.description}<span class="description">{$ship_method.description}</span>{/if}
		</label>	
		</li>
    {/foreach}
	</ul>
	</div>
  </div>

на:

{if {shopping_cart_total} > 3000}  
  <div id="shipping_method">
    <div>
      <h3>{lang}Shipping Method{/lang}</h3>
    </div>  
  <div class="clearfix">
	<ul class="shipping-methods">
    {foreach from=$ship_methods item=ship_method}
		<li class="item col-sm-6 col-md-4{if $ship_method.id == $order.shipping_method_id} selected{/if}">
      <label class="shipping-method">
      <span class="title">
        <input type="radio" name="shipping_method_id" value="{$ship_method.id}" id="ship_{$ship_method.id}" 
        {if $ship_method.id == $order.shipping_method_id}
          checked="checked"
         {/if}
        />
		<span class="name">{lang}{$ship_method.name}{/lang}</span>
		</span>
		<span class="image text-center">
				{if $ship_method.icon}<img src="{base_path}/img/icons/shipping/{$ship_method.icon}" alt="{$ship_method.name}" title="{$ship_method.name}" /> {/if}
		</span>
		{if $ship_method.cost_plain > 0}<span class="description">{$ship_method.cost}</span>{/if}
		{if $ship_method.description}<span class="description">{$ship_method.description}</span>{/if}
		</label>	
		</li>
    {/foreach}
	</ul>
	</div>
  </div>
{/if}

 

Ссылка на сообщение
Поделиться на другие сайты
1 час назад, VaM сказал:

Можно попробовать вообще не показывать доставку, если сумма заказа больше 3000, то вообще не показывать блок доставки.

Попробуйте в /app/Vendor/smarty/vam_plugins/function.checkout.php поменяйте:


  <div id="shipping_method">
    <div>
      <h3>{lang}Shipping Method{/lang}</h3>
    </div>  
  <div class="clearfix">
	<ul class="shipping-methods">
    {foreach from=$ship_methods item=ship_method}
		<li class="item col-sm-6 col-md-4{if $ship_method.id == $order.shipping_method_id} selected{/if}">
      <label class="shipping-method">
      <span class="title">
        <input type="radio" name="shipping_method_id" value="{$ship_method.id}" id="ship_{$ship_method.id}" 
        {if $ship_method.id == $order.shipping_method_id}
          checked="checked"
         {/if}
        />
		<span class="name">{lang}{$ship_method.name}{/lang}</span>
		</span>
		<span class="image text-center">
				{if $ship_method.icon}<img src="{base_path}/img/icons/shipping/{$ship_method.icon}" alt="{$ship_method.name}" title="{$ship_method.name}" /> {/if}
		</span>
		{if $ship_method.cost_plain > 0}<span class="description">{$ship_method.cost}</span>{/if}
		{if $ship_method.description}<span class="description">{$ship_method.description}</span>{/if}
		</label>	
		</li>
    {/foreach}
	</ul>
	</div>
  </div>

на:


{if {shopping_cart_total} > 3000}  
  <div id="shipping_method">
    <div>
      <h3>{lang}Shipping Method{/lang}</h3>
    </div>  
  <div class="clearfix">
	<ul class="shipping-methods">
    {foreach from=$ship_methods item=ship_method}
		<li class="item col-sm-6 col-md-4{if $ship_method.id == $order.shipping_method_id} selected{/if}">
      <label class="shipping-method">
      <span class="title">
        <input type="radio" name="shipping_method_id" value="{$ship_method.id}" id="ship_{$ship_method.id}" 
        {if $ship_method.id == $order.shipping_method_id}
          checked="checked"
         {/if}
        />
		<span class="name">{lang}{$ship_method.name}{/lang}</span>
		</span>
		<span class="image text-center">
				{if $ship_method.icon}<img src="{base_path}/img/icons/shipping/{$ship_method.icon}" alt="{$ship_method.name}" title="{$ship_method.name}" /> {/if}
		</span>
		{if $ship_method.cost_plain > 0}<span class="description">{$ship_method.cost}</span>{/if}
		{if $ship_method.description}<span class="description">{$ship_method.description}</span>{/if}
		</label>	
		</li>
    {/foreach}
	</ul>
	</div>
  </div>
{/if}

 

Не так не надо, даже при заказе на сумму 970 рублей тоже нету доставки!

Может как то в модуле можно поменять настройки?

Ссылка на сообщение
Поделиться на другие сайты

Поменяйте условие:

{if {shopping_cart_total} > 3000}  

{if {shopping_cart_total} > 3000}  

Например на:

{if {shopping_cart_total} > 900}  

Если беслатная доставка, зачем вообще показывать способы доставки?!

Не логично ведь, надо просто написать - Бесплатная доставка для заказов свыше такой-то суммы.

Если меньше сумма - тогда показывать модули.

Ссылка на сообщение
Поделиться на другие сайты

Все поменял в коде и получилось как надо )) только заметил вот такой минус при оформление заказа стоит эти 300 рублей 

Как то можно исправить, или может есть модуль, просто во всех магазинах есть такая услуга при заказе свыше 5000 доставка бесплатная? 

проблема.PNG

Ссылка на сообщение
Поделиться на другие сайты

В Админке - Настройки - Способы доставки поставьте "птичку" по умолчанию на каком-нибудь бесплатном модуле, у которого доставка 0 по умолчанию стоит.

Ссылка на сообщение
Поделиться на другие сайты

Условие: {if {shopping_cart_total} > 3000} даёт нам, что при сумме заказа больше 3000, все модули доставки исчезают со страницы оформления.

Можно ли как-то это условие использовать следующим образом: допустим, что сумма заказа меньше 3000, то в списке "Способ доставки" будет отображаться модули "FlatRate" и "RussianPost". А если сумма больше - то в списке отображаются модули "FreeShipping" и "RussianPost"

Ссылка на сообщение
Поделиться на другие сайты

Это нужно сами модуля править.

Например в /app/Plugin/Shipping/Controller/FlatRateController.php менять:

		return $method['ShippingMethodValue'][0]['value'];

на что-то вроде:

		global $order;
		if ($order['Order']['total'] > 3000) {		
		return $method['ShippingMethodValue'][0]['value'];
		} else { 
		return 0;		
		}

т.е. разве что можно разную стоимость доставки показывать в зависимости от суммы заказа.

 

Либо какой-то свой код придумывать в /app/Vendor/smarty/vam_plugins/function.checkout.php, это страница оформления заказа.

Ссылка на сообщение
Поделиться на другие сайты

Почти получилось как надо!

Тут только один момент остался, не хочет плюсовать стоимость доставки.

 

На этом скрине видно, что сумма заказы больше прописанной в условии, в модуле "FlatRate" в списке "Способы доставки" цена отсутствует, к сумме ни чего не плюсуется - это замечательно, нам как раз это и нужно.

56617cbb89283_.thumb.JPG.4b577f2654d8c0b

 

А тут сумма заказа меньше, в модуле прописывается стоимость доставки, но в корзине это не отображено:(

56617daa55e31_2.thumb.JPG.937ceda129c784

 

При всём при этом в Админке => Способы доставки, по умолчанию стоит модуль "FreeShipping", а если по умолчанию поставить "FlatRate" то стоимость доставки будет плюсоваться в любом случае, даже если клиент выберет "FreeShipping" - Самовывоз.

Данное условие, если я правильно понял, даёт нам, то что если общая суммы заказа больше 3000, то стоимость заказа не отображается (или же не учитывается в общей сумме корзины) Для понимания, чтобы знать от чего отталкиваться:)

global $order;
		if ($order['Order']['total'] > 3000) {		
		return $method['ShippingMethodValue'][0]['value'];
		} else { 
		return 0;		
		}
Ссылка на сообщение
Поделиться на другие сайты

Так доставка плюсуется на странице подтверждения заказа, т.е. переходите к подтверждению и только там показывает общую стоимость заказа с доставкой.

Ссылка на сообщение
Поделиться на другие сайты

Точно!

Тогда оставляем по умолчанию доставку  "FreeShipping" и это самое оптимальное решение.

Спасибо большое за помощь!

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...