Входящий вебхук
Создал входящий вебхук 


В настройках сайта указал данные
Департамент тоже прописал
Код обработчика тоже нормальный:
</div><div><div><?</div><div><br /></div><div>class Service_Bitrix</div><div>{</div><div> const VOLKOV_ANTON_BITRIX_ID = 11;</div><div> const VOLKOV_ANTON_ID = 9;</div><div><br /></div><div> private function doRequest($method, $params = null)</div><div> {</div><div> require_once 'Zend/Http/Client.php';</div><div> require_once 'Zend/Http/Cookie.php';</div><div><br /></div><div> $key = config('bitrix.webhook_key');</div><div> $company_name = config('bitrix.company_name');</div><div> $hookid = config('bitrix.hook_id');</div><div> $url = "https://$company_name.bitrix24.ru/rest/$hookid/$key/$method/";</div><div><br /></div><div> $http_client = new Zend_Http_Client($url, [</div><div> 'strictredirects' => true,</div><div> 'timeout' => 30,</div><div> 'keepalive' => true,</div><div> ]);</div><div><br /></div><div> if ($params) {</div><div> $http_client->setParameterPost($params);</div><div> }</div><div><br /></div><div> $request = $http_client->request('POST');</div><div> $body = json_decode($request->getBody());</div><div> if ($request->getStatus() == 200) {</div><div> return $body;</div><div> } else {</div><div> if ($body->error == 'QUERY_LIMIT_EXCEEDED') {</div><div> sleep(1);</div><div> }</div><div> echo $method . ' ' . $body->error_description . '<br/>';</div><div> var_dump($params);</div><div> var_dump($request->getBody());</div><div> return false;</div><div> }</div><div> }</div><div><br /></div><div> /**</div><div> * Вернуть сделки</div><div> */</div><div> public function getDeals()</div><div> {</div><div> $result = $this->doRequest('crm.deal.list');</div><div> var_dump($result);</div><div> }</div><div><br /></div><div> /**</div><div> * Вернуть продукты</div><div> */</div><div> public function getProducts()</div><div> {</div><div> $result = $this->doRequest('crm.product.list');</div><div> var_dump($result);</div><div> }</div><div><br /></div><div> /**</div><div> * Добаить категорию</div><div> * @param array $data</div><div> * @return boolean</div><div> */</div><div> public function addCategory($data)</div><div> {</div><div> $result = $this->doRequest('crm.productsection.add', [</div><div> 'fields' => [</div><div> 'NAME' => $data['name'],</div><div> 'SECTION_ID' => $data['parent_id'],</div><div> ],</div><div> ]);</div><div> if ($result) {</div><div> $bitrix_id = (int)$result->result;</div><div> Mel_db::update('category', ['bitrix_id' => $bitrix_id], ['id' => $data['id']]);</div><div> return $bitrix_id;</div><div> } else {</div><div> return false;</div><div> }</div><div> }</div><div><br /></div><div> /**</div><div> * Добавить категории</div><div> */</div><div> public function addCategories()</div><div> {</div><div> $categories = Mel_Db::select('category', 'id,name,parent_id', 'bitrix_id is null', 'parent_id,id');</div><div> $id_trans = Mel_db::getPair("SELECT id,bitrix_id FROM category");</div><div> foreach ($categories as $category) {</div><div> if ($category['parent_id'] and !isset($id_trans[$category['parent_id']])) {</div><div> continue;</div><div> }</div><div> $bitrix_id = $this->addCategory([</div><div> 'id' => $category['id'],</div><div> 'name' => $category['name'],</div><div> 'parent_id' => $category['parent_id'] ? $id_trans[$category['parent_id']] : 0,</div><div> ]);</div><div> $id_trans[$category['id']] = $bitrix_id;</div><div> sleep(1);</div><div> }</div><div> }</div><div><br /></div><div> /**</div><div> * Вернуть категории</div><div> */</div><div> public function getCategories()</div><div> {</div><div> $result = $this->doRequest('crm.productsection.list');</div><div> var_dump($result);</div><div> }</div><div><br /></div><div> /**</div><div> * Вернуть контакт</div><div> * @param string $user_email</div><div> */</div><div> public function getContactId($user_email)</div><div> {</div><div> $result = $this->doRequest('crm.contact.list', [</div><div> 'order' => ["DATE_CREATE" => "ASC"],</div><div> 'filter' => ["TYPE_ID" => "CLIENT", "EMAIL" => $user_email],</div><div> 'select' => ["ID"],</div><div> ]);</div><div> if ($result->result) {</div><div> return $result->result[0]->ID;</div><div> } else {</div><div> return false;</div><div> }</div><div> }</div><div><br /></div><div> /**</div><div> * Добавить контакт</div><div> * @param array $contact_data</div><div> * @param int $bitrix_manager_id</div><div> * @return boolean</div><div> */</div><div> public function addContact(array $contact_data, int $bitrix_manager_id=null)</div><div> {</div><div> $result = $this->doRequest('crm.contact.add', [</div><div> 'fields' => [</div><div> "LAST_NAME" => $contact_data['user_surname'],</div><div> "NAME" => $contact_data['user_firstname'],</div><div> "SECOND_NAME" => $contact_data['user_patronymic'],</div><div> "ASSIGNED_BY_ID" => $bitrix_manager_id,</div><div> "OPENED" => "Y",</div><div> "TYPE_ID" => "CLIENT",</div><div> "SOURCE_ID" => "SELF",</div><div> "EMAIL" => [</div><div> [</div><div> "VALUE" => $contact_data['user_email'],</div><div> "VALUE_TYPE" => "HOME",</div><div> ],</div><div> ],</div><div> "ADDRESS" => $contact_data['delivery_address'],</div><div> "PHONE" => [</div><div> [</div><div> "VALUE" => $contact_data['user_phone'],</div><div> "VALUE_TYPE" => "WORK",</div><div> ],</div><div> ],</div><div> ],</div><div> 'params' => ["REGISTER_SONET_EVENT" => "N"],</div><div> ]);</div><div> if ($result) {</div><div> return (int)$result->result;</div><div> } else {</div><div> return false;</div><div> }</div><div> }</div><div><br /></div><div> /**</div><div> * Обновить контакт в битриксе</div><div> * @param $bitrix_contact_id</div><div> * @param array $data</div><div> * @param int $bitrix_manager_id</div><div> * @return false|int</div><div> */</div><div> public function updateContact($bitrix_contact_id, array $data, int $bitrix_manager_id)</div><div> {</div><div> $request_params = [</div><div> 'id' => $bitrix_contact_id,</div><div> 'fields' => [</div><div> "LAST_NAME" => $data['user_surname'],</div><div> "NAME" => $data['user_firstname'],</div><div> "SECOND_NAME" => $data['user_patronymic'],</div><div> "OPENED" => "Y",</div><div> "ASSIGNED_BY_ID" => $bitrix_manager_id,</div><div> "TYPE_ID" => "CLIENT",</div><div> "SOURCE_ID" => "SELF",</div><div> "EMAIL" => [</div><div> [</div><div> "VALUE" => $data['user_email'],</div><div> "VALUE_TYPE" => "HOME",</div><div> ],</div><div> ],</div><div> "PHONE" => [</div><div> [</div><div> "VALUE" => $data['user_phone'],</div><div> "VALUE_TYPE" => "WORK",</div><div> ],</div><div> ],</div><div> ],</div><div> 'params' => ["REGISTER_SONET_EVENT" => "N"],</div><div> ];</div><div> if (isset($data['delivery_address']) and $data['delivery_address']) {</div><div> $request_params['fields']['ADDRESS'] = $data['delivery_address'];</div><div> }</div><div> $result = $this->doRequest('crm.contact.update', $request_params);</div><div> if ($result) {</div><div> return (int)$result->result;</div><div> } else {</div><div> return false;</div><div> }</div><div> }</div><div><br /></div><div> /**</div><div> * Добавить продукт</div><div> * @param Model_Order_Item $item</div><div> * @return boolean</div><div> */</div><div> public function addProductItem(Model_Order_Item $item)</div><div> {</div><div> include_once 'simple_html_dom.php';</div><div> $poster = $item->poster;</div><div><br /></div><div> $product_name = 'арт. ' . $poster->getArticul() . ', ' . $poster->getName();</div><div> $product_info_arr = [];</div><div> $poster_view = View::factory('content/studio/poster/info');</div><div> $poster_view->poster = $poster;</div><div> $dom = str_get_html($poster_view);</div><div> foreach ($dom->find('.rows .row') as $row) {</div><div> $rub = '';</div><div> $value_dom = $row->find('.value');</div><div> $label_dom = $row->find('.label');</div><div><br /></div><div> if ($value_dom and isset($value_dom[0]) and $value_dom[0]->getAttribute('data-price')) {</div><div> $rub = ' руб.';</div><div> }</div><div> $d = [];</div><div><br /></div><div> if ($label_dom and isset($label_dom[0])) {</div><div> $d[] = trim($label_dom[0]->outertext());</div><div> }</div><div><br /></div><div> if ($value_dom and isset($value_dom[0])) {</div><div> $d[] = '<font color="#898989">' . trim($value_dom[0]->outertext()) . $rub . '</font>';</div><div> }</div><div> $product_info_arr[] = preg_replace('/\s+/', ' ', implode("\n", $d));</div><div> }</div><div> $product_info = "</div><div> <b></div><div> <a href='<a class="txttohtmllink" href="https://tvoyposter.ru&">https://tvoyposter.ru&</a>;quot; . $poster->getShareUrl() . "' target='_blank'></div><div> <font color='#00aeef'>" . $product_name . "</font></div><div> </a></div><div> </b>";</div><div><br /></div><div> if ($poster instanceof Model_Poster and isset($poster->image->ext_link) and $poster->image->ext_link) {</div><div> $product_info .= "<br/><a href='{$poster->image->ext_link}' target='_blank'>{$poster->image->ext_link}</a><br/>";</div><div> }</div><div> $product_info .= "<br/></div><div> <b>Количество: {$item->amount} шт.</b></div><div> <br/>" .</div><div> implode("<br/>", $product_info_arr);</div><div> return $product_info;</div><div> }</div><div><br /></div><div> /**</div><div> * Добавить заказ</div><div> * @param Model_Order $order</div><div> * @return bool</div><div> * @throws Exception_500</div><div> */</div><div> public function addOrder(Model_Order $order)</div><div> {</div><div> if (!$order->bitrix_manager_id) {</div><div> $this->attachManager($order);</div><div> }</div><div> $comment = [];</div><div><br /></div><div> //данные для JSON</div><div> $order_json = [</div><div> 'origin' => 'tvoyposter',</div><div> 'number' => $order->order_id,</div><div> 'datetime' => date('Y-m-dTH:i:s+03:00', $order->add_time),</div><div> 'comments' => $order->comments,</div><div> 'discount_percent' => $order->getDiscount(),</div><div> 'discount_value' => $order->getDiscountValue($order->getDiscount()),</div><div> 'total' => (int)$order->sum_final,</div><div><br /></div><div> 'delivery' => [</div><div> 'type' => $order->delivery->name,</div><div> 'address' => $order->delivery_address,</div><div> ],</div><div> 'payment_type' => $order->payment->name,</div><div> 'contact' => [</div><div> 'name' => $order->getUserName(),</div><div> 'phone' => $order->user_phone,</div><div> 'email' => $order->user_email,</div><div> ],</div><div> 'products' => [],</div><div> ];</div><div><br /></div><div> $items_proccess = 0;</div><div> $items_sum_total = 0;</div><div> /** @var Model_Order_Item $item */</div><div> foreach ($order->items as $item) {</div><div> $product_data = [</div><div> 'amount' => $item->amount,</div><div> 'price' => $item->price,</div><div> 'sum' => $item->sum,</div><div> 'type' => $item->type,</div><div> 'name' => $item->poster->getName(),</div><div> 'width' => $item->poster->getFullWidth(),</div><div> 'height' => $item->poster->getFullHeight(),</div><div> 'params' => $item->poster->getParamsFor1C(),</div><div> ];</div><div> if ($item->poster instanceof Model_Poster</div><div> and isset($item->poster->image->ext_link)</div><div> and $item->poster->image->ext_link) {</div><div> $product_data['ext_link'] = $item->poster->image->ext_link;</div><div> }</div><div> $order_json['products'][] = $product_data;</div><div> $items_sum_total += $item->sum;</div><div> $comment[] = $this->addProductItem($item);</div><div> $items_proccess++;</div><div> }</div><div><br /></div><div> $order_item_count = (int)Mel_Db::getOne("SELECT count(*) as c FROM order_item where order_id={$order->id}");</div><div> if ($items_proccess != $order_item_count) {</div><div> Helper_Log::log('bitrix', "$order->id количество не совпадает $order_item_count / $items_proccess");</div><div> return false;</div><div> }</div><div><br /></div><div> Helper_Log::log('bitrix', $order->id . ' ' . count($order->getItems()) . '/' . $items_proccess);</div><div><br /></div><div> $comment = $order->comments . '<br/>' .</div><div> '<ol><li>' .</div><div> implode('</li><li>', $comment) .</div><div> '</li></ol>';</div><div><br /></div><div> $add_comment = '';</div><div> if ($order->used_points) {</div><div> $add_comment .= 'Использовано баллов : ' . $order->used_points;</div><div> }</div><div> $discount_value = $order->getDiscountValue($order->getDiscount());</div><div> if ($discount_value) {</div><div> $add_comment .= '<br/>Размер скидки: ' . $discount_value . ' руб';</div><div> }</div><div><br /></div><div> $STANDART_TIME_ID = 3; //стандартное время изготовления</div><div> if ($order->time and $order->time->id !== $STANDART_TIME_ID) {</div><div> $add_comment .= '<br/>' . $order->time->name . ' ' . $order->time_price . ' руб';</div><div> }</div><div><br /></div><div> if ($add_comment) {</div><div> $comment .= '<hr/>' . $add_comment;</div><div> }</div><div><br /></div><div> //получаем ID контакта</div><div> $contact_id = $this->getContactId($order->user_email);</div><div> if ($contact_id) {</div><div> $this->updateContact($contact_id, $order->getParams(), $order->bitrix_manager_id);</div><div> } else {</div><div> $contact_id = $this->addContact($order->getParams(), $order->bitrix_manager_id);</div><div> }</div><div><br /></div><div> $pdf_rand_path = uniqid() . '.pdf';</div><div> $command = '/usr/bin/wkhtmltopdf <a class="txttohtmllink" href="https://tvoyposter.ru/order/list_products?order_id='">https://tvoyposter.ru/order/list_products?order_id='</a> . $order->id . ' ' . realpath(Treebika::docroot()) . '/temp/pdf/' . $pdf_rand_path;</div><div> exec(escapeshellcmd($command), $output, $exit_code);</div><div> $pdf_link = "<a href='<a class="txttohtmllink" href="https://tvoyposter.ru/temp/pdf/">https://tvoyposter.ru/temp/pdf/</a>$pdf_rand_path'>PDF</a> <br/>";</div><div><br /></div><div><br /></div><div> $files_list = '';</div><div> if ($order->files) {</div><div> $files = unserialize($order->files);</div><div> if ($files and is_array($files)) {</div><div> $files_list = '<b>Загруженные файлы:</b><br/><ul>';</div><div> foreach ($files as $file) {</div><div> $files_list .= "<li><a href='" . URL::base('http') . '/temp/' . $file . "'>$file</a></li>";</div><div> }</div><div> $files_list .= '</ul><hr/>';</div><div> }</div><div> }</div><div><br /></div><div> $comment = $pdf_link . $files_list . $comment;</div><div><br /></div><div> $result = $this->doRequest('crm.deal.add', [</div><div> 'fields' => [</div><div> "ASSIGNED_BY_ID" => $order->bitrix_manager_id,</div><div> "TITLE" => "Заказ №" . $order->order_id,</div><div> "TYPE_ID" => "GOODS",</div><div> "STAGE_ID" => "NEW",</div><div> "CONTACT_ID" => $contact_id,</div><div> "OPENED" => "Y",</div><div> "PROBABILITY" => 100,</div><div> "CURRENCY_ID" => "RUB",</div><div> "OPPORTUNITY" => $order->sum_final,</div><div> "BEGINDATE" => date('Y-m-dTH:i:s+03:00', $order->add_time),</div><div> "CLOSEDATE" => date('Y-m-dTH:i:s+03:00', $order->add_time),</div><div> "COMMENTS" => $comment,</div><div> //скидка</div><div> "UF_CRM_1495396920" => $order->getDiscount(),</div><div> //доставка</div><div> "UF_CRM_1495396944" => $order->delivery->name,</div><div> //итого</div><div> "UF_CRM_1496345886" => number_format($order->getFinalPrice(true, $order->getDiscount()), 0, '.', ' '),</div><div> "UF_CRM_1507733012" => $order->delivery_address,</div><div> "UF_CRM_1507893389" => json_encode($order_json),</div><div> "UF_CRM_1509029611" => $order->time ? $order->time->name : '',</div><div> "UF_CRM_1510661912" => $order->delivery_cdek,</div><div> "UF_CRM_1533293178" => date('Y-m-dTH:i:s+03:00', $order->add_time),</div><div> ],</div><div> 'params' => ["REGISTER_SONET_EVENT" => "N"],</div><div> ]);</div><div><br /></div><div> $bitrix_order_id = (int)$result->result;</div><div><br /></div><div> $order->bitrix_sended = 1;</div><div> $order->save();</div><div> $this->sendMessage($order->bitrix_manager_id,</div><div> 'Новый <a href="<a class="txttohtmllink" href="https://tvoy-portret.bitrix24.ru/crm/deal/show/'">https://tvoy-portret.bitrix24.ru/crm/deal/show/'</a> . $bitrix_order_id . '/">заказ №' . $order->order_id . '</a>');</div><div> return true;</div><div> }</div><div><br /></div><div> /**</div><div> * Добавить заявку с сайта в заказы</div><div> * @param $data</div><div> * @return bool</div><div> */</div><div> public function addRequestFromSite($data)</div><div> {</div><div> $contact_id = $this->getContactId($data['user_email']);</div><div> if (!$contact_id) {</div><div> $contact_id = $this->addContact($data);</div><div> }</div><div><br /></div><div> //определяем ID ответственного менеджера в Битриксе</div><div> //для заказов "Вызов дизайнера" или "Заказ визуализации" всегда ставим ответственного Волкова Антона</div><div> if (in_array($data['type'], ['Вызов дизайнера', 'Заказ визуализации'])) {</div><div> $manager_bitrix_id = Service_Bitrix::VOLKOV_ANTON_BITRIX_ID;</div><div> } else {</div><div> $manager_bitrix_id = 0;</div><div> $managers = $this->getSavedManagers();</div><div> if (!$managers or count($managers) == 0) {</div><div> return false;</div><div> }</div><div><br /></div><div> $request_last_manager_id = Helper_Params::get('request_last_manager_id'); //ID последнего менеджера</div><div> $request_last_manager_id = $request_last_manager_id ? $request_last_manager_id : 0;</div><div> foreach ($managers as $n => $manager) {</div><div> if ($manager->bitrix_id > $request_last_manager_id) {</div><div> $manager_bitrix_id = $manager->bitrix_id;</div><div> break;</div><div> }</div><div> }</div><div> if (!$manager_bitrix_id) {</div><div> $manager_bitrix_id = $managers[0]->bitrix_id;</div><div> }</div><div> Helper_Params::save('request_last_manager_id', $manager_bitrix_id);</div><div> }</div><div><br /></div><div> $result = $this->doRequest('crm.deal.add', [</div><div> 'fields' => [</div><div> "ASSIGNED_BY_ID" => $manager_bitrix_id,</div><div> "TITLE" => $data['type'],</div><div> "TYPE_ID" => "GOODS",</div><div> "STAGE_ID" => "NEW",</div><div> "CONTACT_ID" => $contact_id,</div><div> "OPENED" => "Y",</div><div> "PROBABILITY" => 100,</div><div> "CURRENCY_ID" => "RUB",</div><div> "BEGINDATE" => date('Y-m-dTH:i:s+03:00'),</div><div> "COMMENTS" => $data['commentary'],</div><div> ],</div><div> 'params' => ["REGISTER_SONET_EVENT" => "N"],</div><div> ]);</div><div> }</div><div><br /></div><div> public function checkOrder()</div><div> {</div><div><br /></div><div> }</div><div><br /></div><div> /**</div><div> * Вернуть заказ</div><div> * @param int $order_id</div><div> */</div><div> public function getOrder($order_id)</div><div> {</div><div> $result = $this->doRequest('crm.deal.get', ['id' => $order_id]);</div><div> var_dump($result);</div><div> }</div><div><br /></div><div> /**</div><div> * Добавить лид <br/></div><div> * type - тип лида <br/></div><div> * name - имя <br/></div><div> * commentary - комментарий <br/></div><div> * email - емейл <br/></div><div> * phone - телефон <br/></div><div> * address - адрес</div><div> * @param array $data</div><div> */</div><div> public function addLead($data, $manager_bitrix_id = 0)</div><div> {</div><div> if (!$manager_bitrix_id) {</div><div> $managers = $this->getSavedManagers();</div><div> }</div><div> $result = $this->doRequest('crm.lead.add', [</div><div> 'fields' => [</div><div> 'ASSIGNED_BY_ID' => $manager_bitrix_id,</div><div> 'TITLE' => $data['type'],</div><div> 'NAME' => $data['name'],</div><div> 'SOURCE_ID' => 'WEB',</div><div> 'SOURCE_DESCRIPTION' => $data['commentary'],</div><div> 'COMMENTS' => $data['commentary'],</div><div> "EMAIL" => [</div><div> [</div><div> "VALUE" => $data['email'],</div><div> "VALUE_TYPE" => "HOME",</div><div> ],</div><div> ],</div><div> "ADDRESS" => $data['address'],</div><div> "PHONE" => [</div><div> [</div><div> "VALUE" => $data['phone'],</div><div> "VALUE_TYPE" => "WORK",</div><div> ],</div><div> ],</div><div> ],</div><div> 'params' => ["REGISTER_SONET_EVENT" => "N"],</div><div> ]);</div><div> }</div><div><br /></div><div> /**</div><div> * Вернуть лида</div><div> * @param mixed $lead_id</div><div> */</div><div> public function getLead($lead_id)</div><div> {</div><div> $result = $this->doRequest('crm.lead.get', ['id' => $lead_id]);</div><div> var_dump($result);</div><div> }</div><div><br /></div><div> /**</div><div> * Обновить сохраненных менеджеров</div><div> * @return mixed</div><div> * @throws Exception_500</div><div> */</div><div> public function updateManagers()</div><div> {</div><div> $manager_departament_id = config('bitrix.manager_departament_id');</div><div> $result = $this->doRequest('user.get', [</div><div> 'FILTER' => [</div><div> 'UF_DEPARTMENT' => $manager_departament_id,</div><div> 'ACTIVE' => 1,</div><div> ],</div><div> ]);</div><div> $managers_info = [];</div><div> foreach ($result->result as $m) {</div><div> if ($m->ID == 38) {</div><div> continue;</div><div> }</div><div> $managers_info[$m->ID] = $m->NAME . ' ' . $m->LAST_NAME;</div><div> $stored_manager = new Model_Manager(['bitrix_id' => $m->ID]);</div><div> if ($stored_manager->id) {</div><div> $stored_manager->email = $m->EMAIL;</div><div> $stored_manager->save();</div><div> } else {</div><div> $new_manager = new Model_Manager();</div><div> $new_manager->name = $m->NAME;</div><div> $new_manager->surname = $m->LAST_NAME;</div><div> $new_manager->email = $m->EMAIL;</div><div> $new_manager->bitrix_id = $m->ID;</div><div> $new_manager->hidden = 0;</div><div> $new_manager->save();</div><div> }</div><div> }</div><div> Helper_Params::save('manager_info', $managers_info);</div><div> return $managers_info;</div><div> }</div><div><br /></div><div> /**</div><div> * Вернуть массив сохраненных менеджеров</div><div> * @return array</div><div> */</div><div> public function getSavedManagers()</div><div> {</div><div> return Model_Manager::get(Model_Manager::class, ['hidden' => 0], 'id');</div><div> }</div><div><br /></div><div> public function getTimeManStatus($user_id)</div><div> {</div><div> $result = $this->doRequest('timeman.status', [</div><div> 'USER_ID' => $user_id,</div><div> ]);</div><div> var_dump($result);</div><div> }</div><div><br /></div><div> public function sendMessage($user_bitrix_id, $message)</div><div> {</div><div> $result = $this->doRequest('im.notify', [</div><div> 'to' => $user_bitrix_id,</div><div> 'message' => $message,</div><div> 'type' => 'SYSTEM',</div><div> ]);</div><div> }</div><div><br /></div><div> /**</div><div> * Присоединить к заказу менеджера</div><div> * @param Model_Order $order</div><div> * @return Model_Order|void</div><div> * @throws Exception_500</div><div> */</div><div> public function attachManager(Model_Order $order)</div><div> {</div><div> $manager = $this->getNextManager($order->sum_total);</div><div> $order->manager_id = $manager->id;</div><div> $order->bitrix_manager_id = $manager->bitrix_id;</div><div> $order->save();</div><div> return $order;</div><div> }</div><div><br /></div><div> /**</div><div> * Вернуть ID ответственного менеджера</div><div> * @param int $sum</div><div> * @return void|Model_Manager</div><div> */</div><div> public function getNextManager($sum)</div><div> {</div><div> $managers = $this->getSavedManagers();</div><div> if (!$managers) {</div><div> return;</div><div> }</div><div><br /></div><div> if ($sum < 3000) {</div><div> $range = 'sum_total < 3000';</div><div> } else {</div><div> if ($sum < 10000) {</div><div> $range = 'sum_total >= 3000 and sum_total < 10000';</div><div> } else {</div><div> $range = 'sum_total >= 10000';</div><div> }</div><div> }</div><div><br /></div><div> $last_in_range_order_managers_id = Mel_Db::getColumn("</div><div> SELECT manager_id </div><div> FROM `order` </div><div> WHERE user_name !='AUTOTEST' AND $range AND manager_id IS NOT NULL</div><div> ORDER BY id DESC</div><div> LIMIT 0, " . count($managers) * 2);</div><div><br /></div><div> $found = false;</div><div><br /></div><div><br /></div><div> if ($last_in_range_order_managers_id) {</div><div> $last_in_range_order_manager_id = $last_in_range_order_managers_id[0];</div><div><br /></div><div> foreach ($managers as $manager) {</div><div> if ($manager->id > $last_in_range_order_manager_id) {</div><div> //Волков</div><div> if ($manager->id == self::VOLKOV_ANTON_ID) {</div><div> //убираем с Волкова распределение заказов дороже 15000 руб.</div><div> if ($sum > 15000) {</div><div> continue;</div><div> }</div><div> //так же Волков должен "пропускать" один круг распределения</div><div> for ($i = 0; $i < count($last_in_range_order_managers_id); $i++) {</div><div> if ($last_in_range_order_managers_id[$i] == self::VOLKOV_ANTON_ID and $i < count($managers)) {</div><div> continue 2;</div><div> }</div><div> }</div><div> }</div><div><br /></div><div> $found = true;</div><div> break;</div><div> }</div><div> }</div><div> }</div><div> if (!$found) {</div><div> $manager = array_shift($managers);</div><div> }</div><div><br /></div><div> return $manager;</div><div> }</div><div><br /></div><div>}</div></div>Но данные заказа с сайта все равно в Битрикс24 не уходят, можете подсказать где ту косяк?
Комментариев пока нет
Пока нет комментариев. Будьте первым.
Для добавления комментариев необходимо авторизоваться.