Изменение имени объекта Незарегистрированного покупателя
Как вы все знаете, по умолчанию, когда «Незарегистрированный покупатель» совершает заказ в Интернет-магазине, в конечном итоге этот заказ в модуле Интернет-магазин отображается с именем примерно такого вида: 234.67.89.43, т.е. отображается IP-адрес покупателя. Это поведение системы можно изменить с помощью события 'order-status-changed' в Umi.CMS. Можно сформировать имя заказа из тех полей, которые покупатель заполнил при оформлении заказа, допустим из полей Фамилия или Имя. Для выполнения поставленной задачи, в папке classes/modules/emarket/ создадим файл custom_events.php, с таким содержанием:
<?php
new umiEventListener('order-status-changed', 'emarket', 'onSetNameOrder');
?>
потом в этой же папке, в файл __custom.php добавим метод:
public function onSetNameOrder(iUmiEventPoint $event) {
if($event->getMode() == "after" && $event->getParam("old-status-id") != $event->getParam("new-status-id")) {
$order = $event->getRef("order");
$statusId = $order->getValue("status_id");
$codeName = order::getCodeByStatus($statusId);
if($codeName != 'waiting' || permissionsCollection::getInstance()->isAuth()) return false;
$customer_id = $order->customer_id;
$objects = umiObjectsCollection::getInstance();
$object_customer = $objects->getObject($customer_id);
// У объекта "Незарегистрированный покупатель" берем значение поля fname
$name = $object_customer->getValue('fname');
// Меняем имя заказа на значение переменной $name
$object_customer->setName($name);
$object_customer->commit();
}
}
и также в папке classes/modules/emarket/ создадим файл permissions.custom.php с таким содержанием:
<?php
$permissions = array('purchasing' => array('onSetNameOrder'));
?>
В итоге, при просмотре списка заказов, имена заказов будут равны Имени покупателя.