/** * @param Main\Event $event * @return Main\EventResult */ public static function onOrderAdd(Main\Event $event) { $parameters = $event->getParameters(); /** @var Sale\Order $order */ $order = $parameters[0]; $isNew = $parameters[1]; if (!$isNew) { return new Main\EventResult(Main\EventResult::SUCCESS, null, 'sale'); } if (!$order instanceof Sale\Order) { return new Main\EventResult(Main\EventResult::ERROR, new Sale\ResultError(Main\Localization\Loc::getMessage('SALE_EVENT_COMPATIBILITY_ORDER_ADD_WRONG_ORDER'), 'SALE_EVENT_COMPATIBILITY_ORDER_ADD_WRONG_ORDER'), 'sale'); } $id = $order->getId(); $fields = null; $orderFields = null; /** @var Sale\Result $resultOrderFields */ $resultOrderFields = OrderCompatibility::getOrderFields($order); if ($resultOrderFields->isSuccess()) { if ($orderFieldsResultData = $resultOrderFields->getData()) { if (!empty($orderFieldsResultData['ORDER_FIELDS']) && is_array($orderFieldsResultData['ORDER_FIELDS'])) { $orderFields = $orderFieldsResultData['ORDER_FIELDS']; } } } foreach (GetModuleEvents("sale", static::EVENT_COMPATIBILITY_ON_ORDER_ADD, true) as $oldEvent) { ExecuteModuleEventEx($oldEvent, array($id, $orderFields)); } return new Main\EventResult(Main\EventResult::SUCCESS, null, 'sale'); }
/** * @param Main\Event $event * * @return Main\EventResult * @throws Main\ObjectNotFoundException */ public static function onSaleOrderStatusChangeSendEmail(Main\Event $event) { $parameters = $event->getParameters(); /** @var Sale\Order $basketItem */ $order = $parameters['ENTITY']; $value = $parameters['VALUE']; $oldValue = $parameters['OLD_VALUE']; if (!$order instanceof Sale\Order) { return new Main\EventResult(Main\EventResult::ERROR, new Sale\ResultError(Main\Localization\Loc::getMessage('SALE_EVENT_COMPATIBILITY_ORDER_STATUS_CHANGE_WRONG_ORDER'), 'SALE_EVENT_COMPATIBILITY_ORDER_STATUS_CHANGE_WRONG_ORDER'), 'sale'); } $orderFields = array(); /** @var Sale\Result $resultOrderFields */ $resultOrderFields = OrderCompatibility::getOrderFields($order); if ($resultOrderFields->isSuccess()) { if ($orderFieldsResultData = $resultOrderFields->getData()) { if (!empty($orderFieldsResultData['ORDER_FIELDS']) && is_array($orderFieldsResultData['ORDER_FIELDS'])) { $orderFields = $orderFieldsResultData['ORDER_FIELDS']; } } } \CSaleMobileOrderPush::send(static::EVENT_COMPATIBILITY_MOBILE_PUSH_ORDER_STATUS_CHANGE, array("ORDER" => $orderFields)); $propertyCollection = $order->getPropertyCollection(); $userEmail = ""; /** @var Sale\PropertyValue $userEmailProperty */ if ($userEmailProperty = $propertyCollection->getUserEmail()) { $userEmail = $userEmailProperty->getValue(); } if (strval(trim($userEmail)) == '') { $userRes = \CUser::GetByID($order->getUserId()); if ($userData = $userRes->fetch()) { $userEmail = $userData["EMAIL"]; } } static $cacheSiteData = array(); if (!isset($cacheSiteData[$order->getSiteId()])) { $siteRes = \CSite::GetByID($order->getSiteId()); $siteData = $siteRes->Fetch(); } else { $siteData = $cacheSiteData[$order->getSiteId()]; } if (($statusData = \CSaleStatus::GetByID($order->getField("STATUS_ID"), $siteData['LANGUAGE_ID'])) && $statusData['NOTIFY'] == "Y") { $fields = array("ORDER_ID" => $order->getField("ACCOUNT_NUMBER"), "ORDER_DATE" => $order->getField("DATE_INSERT")->toString(), "ORDER_STATUS" => $statusData["NAME"], "EMAIL" => $userEmail, "ORDER_DESCRIPTION" => $statusData["DESCRIPTION"], "TEXT" => "", "SALE_EMAIL" => Main\Config\Option::get("sale", "order_email", "order@" . $_SERVER["SERVER_NAME"])); foreach (GetModuleEvents("sale", static::EVENT_COMPATIBILITY_ORDER_STATUS_EMAIL, true) as $oldEvent) { $fields["TEXT"] = ExecuteModuleEventEx($oldEvent, array($order->getId(), $statusData["ID"])); } $eventName = "SALE_STATUS_CHANGED_" . $order->getField("STATUS_ID"); $isSend = true; foreach (GetModuleEvents("sale", static::EVENT_COMPATIBILITY_ORDER_STATUS_SEND_EMAIL, true) as $oldEvent) { if (ExecuteModuleEventEx($oldEvent, array($order->getId(), &$eventName, &$fields, $order->getField("STATUS_ID"))) === false) { $isSend = false; } } if ($isSend) { $b = ''; $o = ''; $eventMessage = new \CEventMessage(); $eventMessageRes = $eventMessage->GetList($b, $o, array("EVENT_NAME" => $eventName, "SITE_ID" => $order->getSiteId(), 'ACTIVE' => 'Y')); if (!($eventMessageData = $eventMessageRes->Fetch())) { $eventName = "SALE_STATUS_CHANGED"; } unset($o, $b); $event = new \CEvent(); $event->Send($eventName, $order->getSiteId(), $fields, "N"); } } return new Main\EventResult(Main\EventResult::SUCCESS, null, 'sale'); }