Выбрать курс
9  /  9

Наценка при доставке день в день

Как правило, за срочность принято платить. Поэтому часто на веб-сайтах при выборе даты доставки в тот же день необходимо делать наценку.

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

Внимание! В статье приведены фрагменты кода, описывающие принцип реализации. Для внедрения рекомендуется обратиться к разработчикам.

Мы также можем в этом помощь, но за отдельное вознаграждение. Обратиться за помощью можно в наш чат в правом нижнем углу нашего сайта (в рабочее время отвечаем достаточно оперативно). Но оставляем за собой право отказать в доработке без объяснения причин.

Для реализации скидки с помощью правил потребуется наш модуль - Произвольное PHP условие правил работы с корзиной. Свои (кастомные) условия в скидках.

Шаги для реализации следующие:

  1. В init.php необходимо прописать функцию:

    function __day_by_day($arOrder = array())
    {
    	$result = false;
    	
    	$request = Bitrix\Main\Application::getInstance()->getContext()->getRequest();
    	if ($request->isPost())
    	{
    		$PostList = $request->getPostList()->toArray();
    		if (!empty($PostList['order']["ORDER_PROP_" . ORDER_PROPERTY_ID_DATE])
    			&& $PostList['order']["ORDER_PROP_" . ORDER_PROPERTY_ID_DATE] == date("d.m.Y")
    		)
    		{
    			$result = true;
    		}
    	}
    	return $result;
    }
    
  2. Создать правило работы с корзиной и указать там эту функцию в дополнительных условиях:

    PHP условие равно  __day_by_day($arOrder)
    
  3. Чтобы происходил перерасчет формы заказа при выборе даты доставки, необходимо добавить javascript обработчик событий:

    // onPopupClose - обработчик, которые вызывается после закрытия модального окна BX.calendar
    BX.addCustomEvent('onPopupClose', function(){
    	BX.Sale.OrderAjaxComponent.sendRequest()
    });