Изменение имени объекта Незарегистрированного покупателя — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «Как вы все знаете, по умолчанию, когда «Незарегистрированный покупатель» совершает заказ …»)
(нет различий)

Версия 18:39, 28 ноября 2010

Как вы все знаете, по умолчанию, когда «Незарегистрированный покупатель» совершает заказ в Интернет-магазине, в конечном итоге этот заказ в модуле Интернет-магазин отображается с именем примерно такого вида: 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'));
?>

В итоге, при просмотре списка заказов, имена заказов будут равны Имени покупателя.