36
Юрий Волошин, Алексей Кирсанов 1С-Битрикс Новая eCommerce платформа D7: скидки, управление заказами, автоматизация

Новая eCommerce платформа D7: скидки, управление заказами, автоматизация

  • Upload
    1-

  • View
    386

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Юрий Волошин, Алексей Кирсанов1С-Битрикс

Новая eCommerce платформа D7: скидки, управление заказами, автоматизация

Page 2: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Скидкиправило четырех «П»

ПереездПроизводительностьПресетыПредсказания

Page 3: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

• Магазинные скидкиo единая сортировкаo единые правила применения

• Мигратор скидок из каталога в магазинo при миграции каталожные скидки

отключатсяo если не мигрировать – все работает по

старому• Каталожные скидки больше не

развиваются

Переезд

Page 4: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

• Предварительный просчет условий• Оптимизация купонов

Производительность

Page 5: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

• Пошаговые мастера• Оптимизация

Пресеты

Page 6: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

• Условие срабатывания предсказания• Показ в каталоге

Предсказания

Page 7: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Административная частьСценарии, кастомизация

Page 8: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Нам не хватало гибкости• Работа с формами требовала

вмешательства на уровне ядра• Не было возможности встроить

требуемый блок в форму• Требовались свои табы в формах • Работаем с телефонными продажами,

товары должны быть сверху формы• Формы огромные, сложность

навигации• Данные по клиенту должны быть

всегда перед глазами• Не было возможности разделить заказ

и сделать дополнительные отгрузки и оплаты.

Page 9: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Стояла задача – дать возможность сделать кастомизациюбез потери обновлений!

Page 10: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Пользовательские закладки

Page 11: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Пользовательские закладки - 1// init.php

Main\EventManager::getInstance()->addEventHandler("main", "OnAdminSaleOrderEdit", array("MyTab", "onInit"));// "OnAdminSaleOrderCreate", "OnAdminSaleOrderView"

class MyTab{

public static function onInit(){

return array("TABSET" => "MyTab","getTabs" => array("MyTab", "getTabs"), "showTab" => array("MyTab", "showTab"),"action" => array("MyTab", "action"), "check" => array("MyTab", "check"),

);}

public static function action($arArgs){

// Действие после сохранения заказа. Возвращаем true / false// Сообщение $GLOBALS["APPLICATION"]->ThrowException("Ошибка!!!", "ERROR");return true;

}

Page 12: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Пользовательские закладки - 2public static function check($arArgs){

// Проверки перед сохранением. Возвращаем true / falsereturn true;

}

public static function getTabs($arArgs){

return array(array("DIV" => "edit1", "TAB" => "Мой Tab", "ICON" => "sale", "TITLE" => "Мой Tab", "SORT" => 1));

}

public static function showTab($divName, $arArgs, $bVarsFromForm){

if ($divName == "edit1"){

?><tr><td width="40%">Мое поле:</td><td width="60%"><input type="text" name="my_field"></td></tr><?

}}

}

Page 13: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Информационная панель

Page 14: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Информационная панель - 1

// init.phpMain\EventManager::getInstance()->addEventHandler('sale', 'onSaleAdminOrderInfoBlockShow', 'onSaleAdminOrderInfoBlockShow');

function onSaleAdminOrderInfoBlockShow(Event $event){

// $order = $event->getParameter("ORDER");

return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS,array(

array('TITLE' => 'Параметр 1:', 'VALUE' => 'Значение параметра 1', 'ID' => 'param1'),array('TITLE' => 'Параметр 2:',

'VALUE' => '<a href="http://1c-bitrix.ru">Значение параметра 2</a>'),),'sale'

);}

Page 15: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Пользовательские блоки

Page 16: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Пользовательские блоки - 1// init.phpEventManager::getInstance()->addEventHandler("main", "OnAdminSaleOrderViewDraggable", array("MyClass", "onInit"));

class MyClass{

public static function onInit(){

return array("BLOCKSET" => "MyClass","getScripts" => array("MyClass", "getScripts"),"getBlocksBrief" => array("MyClass", "getBlocksBrief"),"getBlockContent" => array("MyClass", "getBlockContent"),

);}

public static function getBlocksBrief($args){

$id = !empty($args['ORDER']) ? $args['ORDER']->getId() : 0;return array(

'custom1' => array("TITLE" => "Пользовательский блок для заказа №".$id),'custom2' => array("TITLE" => "Еще один блок для заказа №".$id),

);}

Page 17: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Пользовательские блоки - 2public static function getScripts($args){

return '<script type="text/javascript">... </script>';}

public static function getBlockContent($blockCode, $selectedTab, $args){

$result = '';$id = !empty($args['ORDER']) ? $args['ORDER']->getId() : 0;

if ($selectedTab == 'tab_order'){

if ($blockCode == 'custom1')$result = 'Содержимое блока custom1<br> Номер заказа: '.$id;

if ($blockCode == 'custom2')$result = 'Содержимое блока custom2<br> Номер заказа: '.$id;

}

return $result;}

}

Page 18: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Пользовательские блоки - 3// init.phpAddEventHandler("main", "OnAdminSaleOrderEditDraggable", array("MyEditClass", "onInit"), 100);AddEventHandler("main", "OnAdminSaleOrderCreateDraggable", array("MyEditClass", "onInit"), 100);

class MyEditClass extends MyClass{

public static function onInit(){

return array("BLOCKSET" => "MyEditClass",

"check" => array("MyEditClass", "check"),"action" => array("MyEditClass", "action"),"getScripts" => array("MyEditClass", "getScripts"),"getBlocksBrief" => array("MyEditClass", "getBlocksBrief"),"getBlockContent" => array("MyEditClass", "getBlockContent"),

);}

Page 19: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Пользовательские блоки - 4

public static function action($args){

// заказ сохранен, сохраняем данные пользовательских блоков// возвращаем True в случае успеха и False - в случае ошибки// в случае ошибки $GLOBALS["APPLICATION"]->ThrowException("Ошибка!!!", "ERROR");return true;

}

public static function check($args){

// заказ еще не сохранен, делаем проверки// возвращаем True, если можно все сохранять, иначе False// в случае ошибки $GLOBALS["APPLICATION"]->ThrowException("Ошибка!!!", "ERROR");return true;

}

Page 20: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Пользовательские блоки - 5public static function getBlockContent($blockCode, $selectedTab, $args){

$result = '';$id = !empty($args['ORDER']) ? $args['ORDER']->getId() : 0;

if ($selectedTab == 'tab_order'){

if ($blockCode == 'custom1'){

$result = 'Содержимое блока custom1 для заказа №'.$id.'<br><input name="custom1" value="cust1">';

}if ($blockCode == 'custom2'){

$result = 'Содержимое блока custom2 для заказа №'.$id.'<br><input name="custom2" value="cust2">';

}}

return $result;}

}

Page 21: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Пользовательские блоки - 6// вставим итоговую стоимость заказа в кастомное поле на странице создания/изменения заказа

public static function getScripts($args){

$id = !empty($args['ORDER']) ? $args['ORDER']->getId() : 0;

return '<script type="text/javascript">BX.ready(function(){

BX.Sale.Admin.OrderEditPage.registerFieldsUpdaters({"TOTAL_PRICES": function(prices){

var custom = BX("custom_field");if (custom_field)

custom_field.value = prices.PRICE_TOTAL;}

});});

</script>';}

Page 22: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Впечатляющая гибкость

• Полный набор инструментов для всевозможных кастомизаций

• Не теряя возможности обновлений

• Не требуется вносить правки в ядро продукта

Впечатляйте своих клиентов - возможностями eСommerce платформы D7

Page 23: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Автоматизацияинтернет продаж

Page 24: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Автоматизация рутины Действия на оплату

• После подтверждения частичного платежа• При получение полного платежа• Зависимость доставки от поступления оплаты

Действия с доставками• На разрешение доставки частичной отгрузки• На разрешение доставки полной отгрузки• С заказом при полной отгрузке• С заказом при любой частичной отгрузки

Действия со статусами заказа• Связанные с отгрузками частичными/полными• Связанные с оплатами частичными/полными

Page 25: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Настройки

Page 26: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

События

Page 27: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

• События обсчета

• Меняем объекты в памяти

• Система автоматически поддерживает

консистентное состояние

• новый заказ – полный пересчет

• существующий заказ – численная

целостность

• События сохранения

• Сохраняются все сущности в том состоянии, в

котором они есть на данный момент

заказ

оплаты

отгрузки

создание

сохранение

загрузкаили

Виды событий

Page 28: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

• События при сохранении применяются для:• применения изменений к внешним по отношению к заказу сущностям (например, к

каталогу товаров или внешней базе покупателей)• изменение алгоритма сохранения заказа (например, отмена сохранения)

• События на обсчет заказа применяются:• во всех остальных случаях

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

обсчета не было сохранения заказа• если изменять параметры заказа на сохранении, то при обсчете они все еще будут старыми

(потенциально некорректными)

Обсчет против Сохранения

Page 29: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

• OnBefore<имя>SetFieldв самом начале, можно отменить изменения

• On<имя>SetFieldперед изменением, если оно реально началось

Параметры

•ENTITY – объект, чье поле

•NAME – название поля

•VALUE – значение поля

для любого наследника \Bitrix\Sale\Internals\Entity

Обсчет: изменение значения поля

• SaleOrder

• SaleBasketItem

• SaleShipmentItem

• SalePayment

• SaleShipment

• SalePropertyValue

Page 30: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

• OnBeforeSaleOrderFinalAction

перед расчетом скидок и налогов, если у заказа

есть корзина

• OnAfterSaleOrderFinalAction

в самом конце обсчета

Параметры

• ENTITY – объект заказа

Обсчет: завершение пересчета

Page 31: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

• OnSaleOrderBeforeSaved

если вернуть EventResult::ERROR, то сохранение

отменится

• OnSaleOrderSaved

Параметры

•ENTITY – объект заказа

•VALUES – старые значения полей заказа

•IS_NEW – новый заказ (только для OnSaleOrderSaved)

Сохранение: заказ

Page 32: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

• On<имя>EntitySaved

после сохранения сущности

Параметры

•ENTITY – сохраняемый объект

•VALUES – старые значения полей

для любого наследника \Bitrix\Sale\Internals\Entity

Сохранение: сущности

• SaleOrder

• SaleBasketItem

• SaleShipmentItem

• SalePayment

• SaleShipment

• SalePropertyValue

Page 33: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Инициируются при обсчете, но вызываются при сохранении

• OnSaleOrderCanceled - сохраняемый заказ был отменен

• OnSaleStatusOrderChange – статус заказа был изменен

• OnSaleOrderPaid – оплаченность заказа была изменена

• OnShipmentTrackingNumberChange – был изменен идентификатор отправления

• OnShipmentAllowDelivery – был изменен флаг разрешения отгрузки

• OnShipmentDeducted – был изменен флаг отгрузки

Параметры

• ENTITY – соответствующий объект (заказ, оплата или отгрузка)

Сохранение: особые события

Page 34: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Если корзина не привязана к заказу

• OnSaleBasketBeforeSaved

если вернуть EventResult::ERROR, то

сохранение отменится

• OnSaleBasketSaved

Параметры

•ENTITY – объект корзины

Сохранение: корзина

Page 35: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Новая eCommerce платформа D7

• Применяйте новые паттерны разработки

• Занимайтесь творчеством, а не рутиной• Используйте решения которые делают

вас лидером• Расширяйте свои сферы влияния на

новых рынках

Page 36: Новая eCommerce платформа D7:  скидки, управление заказами, автоматизация

Спасибо за внимание! Вопросы?