Обучаю битриксу программистов, интеграторов. Подробнee ⇒

Обработчик, который добавляет клиента в заказ



версия интернет-магазин + CRM
какой-то модуль из маркетплейса "Обработка заказов с СБЕРМЕГАМАРКЕТ" - и он не создавал клиента в Заказе-сделке

добавила обработчик OnAfterCrmDealAdd
AddEventHandler("crm", "OnAfterCrmDealAdd", "AddSberMarketClient");     

function AddSberMarketClient(&$arFields){   
   if(!empty($arFields["ORDER_ID"]) && \Bitrix\Main\Loader::includeModule("sale")){
      $order = \Bitrix\Sale\Order::load($arFields["ORDER_ID"]);
      $userId = $order->getUserId();
      $user = \Bitrix\Main\UserTable::getByPrimary($userId, [
         'select' => ['NAME', 'LAST_NAME'],
      ])->fetchObject();
      if($user->getName()=="Маркет" && $user->getLastName()=="Сбер"){

         $communications = $order->getContactCompanyCollection();         

         if($communications->count() == 0){
            $propertyCollection = $order->getPropertyCollection();

            if(
               (($property = $propertyCollection->getItemByOrderPropertyId(181))  || ($property = $propertyCollection->getItemByOrderPropertyId(174))) &&              
               ($propValue = $property->getValue())
            ){
               //ИД заказа (СберМегаМаркет)
               if(!empty($propValue)){
                  $arFields["COMMENTS"] = !empty($arFields["COMMENTS"]) ? $propValue. " ".$arFields["COMMENTS"] : $propValue;
               }
             }
            $itemCom = $communications->createContact();//контакт
            $itemCom ->setField('ENTITY_ID',  86675); //ID контакта или компании
            $itemCom ->setField('IS_PRIMARY', 'Y');

            $itemCom1 = $communications->createCompany(); //компания
            $itemCom1 ->setField('ENTITY_ID', 736); //ID контакта или компании
            $itemCom1 ->setField('IS_PRIMARY', 'Y');

            $order->save();

            $deal  =  new  \CCrmDeal( false );
            $arOptions = array("CURRENT_USER"=> 1); //из под кого обновляем                     
            $arFieldsNew = [
              "COMPANY_ID" => 736,      
              "CONTACT_ID" =>  86675 
            ];            
            $upRes = $deal->Update($arFields["ID"], $arFieldsNew, true, true, $arOptions);    
         }  
     }

  }  
    
}


А после такого варианта заказ не создается из сделки
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
    'sale',
    'OnSaleOrderSaved',
    'AddSberMarketClient'
);


function AddSberMarketClient(\Bitrix\Main\Event $event){   
    $order = $event->getParameter("ENTITY");
    if ($event->getParameter("IS_NEW")){
      $userId = $order->getUserId();
      $user = \Bitrix\Main\UserTable::getByPrimary($userId, [
             'select' => ['NAME', 'LAST_NAME'],
         ])->fetchObject();
      if($user->getName()=="Маркет" && $user->getLastName()=="Сбер"){
         $communications = $order->getContactCompanyCollection();         
         if($communications->count() == 0){
          $itemCom = $communications->createContact();//контакт
               $itemCom ->setField('ENTITY_ID',  86675); //ID контакта или компании
               $itemCom ->setField('IS_PRIMARY', 'Y');

               $itemCom1 = $communications->createCompany(); //компания
               $itemCom1 ->setField('ENTITY_ID', 736); //ID контакта или компании
               $itemCom1 ->setField('IS_PRIMARY', 'Y');

               $order->save();
            }
      }
    }
}
Если блог был полезным, можете угостить меня "чашечкой кофе" :)

Сбер по номеру телефона +7 (953) 585-13-09 Вероника.
Спасибо!