Форум

Входящий вебхук

Андрей Создатель CRM
Создал входящий вебхук 

В настройках сайта указал данные


Департамент тоже прописал


Код обработчика тоже нормальный:
</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&amp">https://tvoyposter.ru&amp</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 не уходят, можете подсказать где ту косяк?

Ещё в этом разделе

Комментариев пока нет

Пока нет комментариев. Будьте первым.

Для добавления комментариев необходимо авторизоваться.