UMIhelp

Разработка дополнительного функционала => Custom макросы => Тема начата: toshka от 04 Ноября 2013, 00:48:07

Название: Изменение статуса заказа
Отправлено: toshka от 04 Ноября 2013, 00:48:07
Добрый вечер! Можно ли кастомизировать событие изменения статуса заказа? В ядре это функция order_edit(), насколько я понял. Если да, то опишите пожалуйста поподробней процесс, я новичок в написании кастомов, не знаю нюансов.
Название: Re:Изменение статуса заказа
Отправлено: e.ioffe от 04 Ноября 2013, 10:25:18
А что именно нужно сделать?
Название: Re:Изменение статуса заказа
Отправлено: toshka от 04 Ноября 2013, 21:17:07
Есть накопительная скидка, она начинает действовать, когда сумма заказов становится больше установленного придела, но при этом у всех заказов должен быть статус "принят". Мне необходимо чтобы как только активировалась скидка у пользователя в личных данных появлялся номер дисконтной карты. Решил редактировать событие изменения статуса заказа, потому как оно помимо активации скидки, отправляет письмо на ящик покупателя, в которое можно достать присвоенный номер.  Но реализовал это в ядре, а теперь хочу вынести в кастом.
Название: Re:Изменение статуса заказа
Отправлено: muldy от 06 Ноября 2013, 00:14:49
На первый взгляд, если вы хотите использовать именно событие то можете взять, стандартную точку вызова: order_refresh подробнее здесь:
http://api.docs.umi-cms.ru/razrabotka_nestandartnogo_funkcionala/sobytijnaya_model_umicms/standartnye_tochki_vyzova/#sel=4:1060,4:1060

Чтобы создать событие идете в папку classes/modules/emarket/custom_events.php, в нем создаете новое событие:

   new umiEventListener("order_refresh", "emarket", "getKart");

и в зависимости где будт обрабатываться ваш кастом, те либо в админке либо на самом сайте пишите сам обработчик, те в файле _admin.php либо в файле custom.php соотвественно!

Да и обязательно учтите параметры которые передает событие order_refresh, в api все описано!
Название: Re:Изменение статуса заказа
Отправлено: toshka от 09 Ноября 2013, 12:25:34
Событие в админке, значит  _admin.php, но ведь _admin.php обновиться, при обновлении системы?
Название: Re:Изменение статуса заказа
Отправлено: muldy от 10 Ноября 2013, 22:29:39
Создаете файл __custom_adm.php и все!
Название: Re:Изменение статуса заказа
Отправлено: e.ioffe от 11 Ноября 2013, 00:30:08
В последних версиях столкнулся с тем, что order_refresh не всегда отрабатывает.

Советую посмотреть в сторону

new umiEventListener('systemModifyPropertyValue', 'emarket', 'onModifyProperty');
new umiEventListener('systemModifyObject', 'emarket', 'onModifyObject');

Код этих обработчиков находится в файле emarket/__events.php