Advertisement
Guest User

Untitled

a guest
Jul 19th, 2018
403
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 11.91 KB | None | 0 0
  1. <?php
  2. AddEventHandler('form', 'onBeforeResultAdd', 'IntegrationWebFormWithB24');
  3. function IntegrationWebFormWithB24($WEB_FORM_ID, &$arFields, &$arrVALUES, $email = ""){
  4.     global $phone, $email, $FIO, $message, $title, $SOURCE_ID;
  5.    
  6.     function writeToLog($data, $title = '') {
  7.         $log = "\n------------------------\n";
  8.         $log .= date("Y.m.d G:i:s") . "\n";
  9.         $log .= (strlen($title) > 0 ? $title : 'DEBUG') . "\n";
  10.         $log .= print_r($data, 1);
  11.         $log .= "\n------------------------\n";
  12.         file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/log_test_get.log', $log, FILE_APPEND);
  13.         return true;
  14.     }
  15.    
  16.     writeToLog($_GET, 'GET');
  17.     writeToLog($_REQUEST, 'REQUEST');
  18.    
  19.     if(!empty($email)){
  20.         $title = 'Заказ с сайта "Подписка"';
  21.         $message = 'Клиент подписался на обновления';
  22.         $SOURCE_ID = 'EMAIL';
  23.         $FIO = "Подписавшийся Клиент";
  24.         $phone = "";
  25.     }elseif($arrVALUES['WEB_FORM_ID'] == 1){
  26.         $phone = $arrVALUES["form_text_2"];
  27.         $email = $arrVALUES["form_email_3"];
  28.         $FIO = $arrVALUES["form_text_1"];
  29.         $message = "Организация: ".$arrVALUES["form_text_4"]."\r\nСообщение:".$arrVALUES["form_textarea_5"];
  30.         $title = 'Заказ с сайта "Заказ кофе в офис"';
  31.         $SOURCE_ID = 'CALLBACK';
  32.     }elseif($arrVALUES['WEB_FORM_ID'] == 2){
  33.         $phone = $arrVALUES["form_text_6"];
  34.         $email = $arrVALUES["BITRIX_SM_SENDER_SUBSCR_EMAIL"];
  35.         $FIO = $arrVALUES["form_text_7"];
  36.         $message = "Товар: ".$arrVALUES["form_hidden_10"];
  37.         $title = 'Заказ с сайта "Быстрая покупка"';
  38.         $SOURCE_ID = 'WEBFORM';
  39.     }
  40.    
  41.     $check = true;
  42.     $check_CONTACT = false;
  43.     $comp = false;
  44.    
  45.     function curl($queryUrl, $queryData){
  46.         $curl = curl_init();
  47.         curl_setopt_array($curl, array(
  48.         CURLOPT_SSL_VERIFYPEER => 0,
  49.         CURLOPT_POST => 1,
  50.         CURLOPT_HEADER => 0,
  51.         CURLOPT_RETURNTRANSFER => 1,
  52.         CURLOPT_URL => 'https://portal.livecoffee.softmonster.ru/rest/1/s08k9eoh27dmzmtm/'.$queryUrl,
  53.         CURLOPT_POSTFIELDS => http_build_query($queryData),
  54.         ));
  55.         $arData = curl_exec($curl);
  56.         curl_close($curl);
  57.         var_dump($arData);
  58.         $arData = json_decode($arData, 1);
  59.         return $arData;
  60.     }
  61.    
  62.     function addDeal($title_name, $id_contact, $ASSIGNED_BY_ID){
  63.         global $title, $message;
  64.         $queryUrl = 'crm.livefeedmessage.add';
  65.         $queryData = array(
  66.         'fields' =>array(
  67.             'POST_TITLE' => $title,
  68.             'MESSAGE' => $title."\r\n".$message,
  69.             "ENTITYTYPEID" => 3,
  70.             "ENTITYID" => $id_contact
  71.         ));
  72.         curl($queryUrl, $queryData);
  73.         if($title != 'Заказ с сайта "Подписка"'){
  74.             $queryUrl = 'crm.deal.add';
  75.             $queryData = array(
  76.             'fields' => array(
  77.                 'TITLE' => $title_name,
  78.                 'CATEGORY_ID' => 1,
  79.                 'STAGE_ID' => "C1:NEW",
  80.                 'CONTACT_ID' => $id_contact,
  81.                 'ASSIGNED_BY_ID' => $ASSIGNED_BY_ID,
  82.                 'COMMENTS' => $title."<br>".$message,
  83.                 'UF_CRM_1529483792' => ($title == 'Заказ с сайта "Заказ кофе в офис"') ? 51 : 50
  84.             ));
  85.             $d_id = curl($queryUrl, $queryData);
  86.             if(!empty($d_id['result'])){
  87.                 $queryUrl = 'crm.deal.update';
  88.                 $queryData = array(
  89.                 'id' => $d_id['result'],
  90.                 'fields' => array(
  91.                     'TITLE' => $d_id['result']." ".$title_name,
  92.                 ));
  93.                 curl($queryUrl, $queryData);
  94.             }
  95.         }
  96.     }
  97.    
  98.     function addContact($ASSIGNED_BY_ID, $COMPANY_ID = "", $COMPANY_NAME = ""){
  99.         global $FIO, $phone, $email, $SOURCE_ID;
  100.         list($last_name, $name, $second_name) = explode(" ", $FIO);
  101.         $queryUrl = 'crm.CONTACT.add';
  102.         $queryData = array(
  103.         'fields' => array(
  104.             'NAME' => $name,
  105.             'LAST_NAME' => $last_name,
  106.             'SECOND_NAME' => $second_name,
  107.             'PHONE' => array(array("VALUE" => $phone, "VALUE_TYPE" => "WORK")),
  108.             'EMAIL' => array(array("VALUE" => $email, "VALUE_TYPE" => "WORK")),
  109.             'SOURCE_ID' => $SOURCE_ID,
  110.             'TYPE_ID' => "CLIENT",
  111.             'ASSIGNED_BY_ID' => $ASSIGNED_BY_ID,
  112.             'COMPANY_ID' => $COMPANY_ID,
  113.             'UF_CRM_1529045703' => 45
  114.            
  115.         ));
  116.         $id_l = curl($queryUrl, $queryData);
  117.        
  118.         $title_name = empty($COMPANY_NAME) ? $last_name." ".$name." ".$second_name : $COMPANY_NAME;
  119.        
  120.         if(!empty($id_l['result'])){
  121.             addDeal($title_name, $id_l['result'], $ASSIGNED_BY_ID);
  122.         }
  123.     }
  124.  
  125.     $queryUrl = 'crm.duplicate.findbycomm';
  126.     $queryData = array(
  127.         'type' => "PHONE",
  128.         'values' => array($phone)
  129.     );
  130.     $arDubP = curl($queryUrl, $queryData);
  131.     $arDubP = $arDubP["result"];
  132.    
  133.     if(isset($arDubP['CONTACT'][0]) && !empty($arDubP['CONTACT'][0])){
  134.         $check_CONTACT = true;
  135.         $arDub['CONTACT'][0] = $arDubP['CONTACT'][0];
  136.     }else{
  137.         $queryUrl = 'crm.duplicate.findbycomm';
  138.         $queryData = array(
  139.             'type' => "EMAIL",
  140.             'values' => array($email)
  141.         );
  142.         $arDubE = curl($queryUrl, $queryData);
  143.         $arDubE = $arDubE["result"];
  144.         if(isset($arDubE['CONTACT'][0]) && !empty($arDubE['CONTACT'][0])){
  145.             $check_CONTACT = true;
  146.             $arDub['CONTACT'][0] = $arDubE['CONTACT'][0];
  147.         }
  148.     }
  149.    
  150.     if($check_CONTACT){
  151.         $queryUrl = 'crm.CONTACT.get';
  152.         $queryData = array('id' => $arDub['CONTACT'][0]);
  153.         $CONTACT = curl($queryUrl, $queryData);
  154.         $CONTACT = $CONTACT['result'];
  155.         if(!empty($CONTACT['ID'])){
  156.             $check = false;
  157.             foreach($CONTACT['EMAIL'] as $key => $value){
  158.                 $con_e[$value['VALUE']] = 1;
  159.             }
  160.             foreach($CONTACT['PHONE'] as $key => $value){
  161.                 $con_p[$value['VALUE']] = 1;
  162.             }
  163.             if(empty($con_p[$phone])){
  164.                 $queryUrl = 'crm.CONTACT.update';
  165.                 $queryData = array('id' => $CONTACT['ID'], 'fields'=>array('PHONE' => array_merge($CONTACT['PHONE'], array(array('VALUE' => $phone, 'VALUE_TYPE' => 'WORK'))), 'UF_CRM_1529045703' => 46));
  166.                 curl($queryUrl, $queryData);
  167.             }
  168.             if(empty($con_e[$email])){
  169.                 $queryUrl = 'crm.CONTACT.update';
  170.                 $queryData = array('id' => $CONTACT['ID'], 'fields'=>array('EMAIL' => array_merge($CONTACT['EMAIL'], array(array('VALUE' => $email, 'VALUE_TYPE' => 'WORK'))), 'UF_CRM_1529045703' => 46));
  171.                 curl($queryUrl, $queryData);
  172.             }
  173.            
  174.             if(!empty($CONTACT['COMPANY_ID'])){
  175.                 $queryUrl = 'crm.COMPANY.get';
  176.                 $queryData = array('id' => $CONTACT['COMPANY_ID']);
  177.                 $COMPANY = curl($queryUrl, $queryData);
  178.                 $COMPANY = $COMPANY['result'];
  179.             }
  180.            
  181.             $title_name = empty($COMPANY['TITLE']) ? $CONTACT['LAST_NAME']." ".$CONTACT['NAME']." ".$CONTACT['SECOND_NAME'] : $COMPANY['TITLE'];
  182.            
  183.             addDeal($title_name, $CONTACT['ID'], $CONTACT['ASSIGNED_BY_ID']);
  184.         }
  185.     }else{
  186.         if(isset($arDubP['COMPANY'][0]) && !empty($arDubP['COMPANY'][0])){
  187.             $comp = true;
  188.             $check = false;
  189.             $arDub['COMPANY'][0] = $arDubP['COMPANY'][0];
  190.         }elseif(isset($arDubE['COMPANY'][0]) && !empty($arDubE['COMPANY'][0])){
  191.             $comp = true;
  192.             $check = false;
  193.             $arDub['COMPANY'][0] = $arDubE['COMPANY'][0];
  194.         }
  195.     }
  196.    
  197.     if($comp){
  198.         $queryUrl = 'crm.COMPANY.get';
  199.         $queryData = array('id' => $arDub['COMPANY'][0]);
  200.         $COMPANY = curl($queryUrl, $queryData);
  201.         $COMPANY = $COMPANY['result'];
  202.         if(!empty($COMPANY['ID'])){
  203.             addContact($COMPANY['ASSIGNED_BY_ID'], $COMPANY['ID'], $COMPANY['TITLE']);
  204.         }
  205.     }
  206.    
  207.     if($check){
  208.         addContact(1);
  209.     }
  210. }
  211.  
  212. \Bitrix\Main\EventManager::getInstance()->addEventHandler('sale', 'OnSaleOrderSaved', 'IntegrationOrderWithB24');
  213.  
  214. function IntegrationOrderWithB24(\Bitrix\Main\Event $event)
  215. {
  216.     function writeToLog($data, $title = '') {
  217.         $log = "\n------------------------\n";
  218.         $log .= date("Y.m.d G:i:s") . "\n";
  219.         $log .= (strlen($title) > 0 ? $title : 'DEBUG') . "\n";
  220.         $log .= print_r($data, 1);
  221.         $log .= "\n------------------------\n";
  222.         file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/log_order.log', $log, FILE_APPEND);
  223.         return true;
  224.     }
  225.    
  226.     $order = $event->getParameter("ENTITY");
  227.     $oldValues = $event->getParameter("VALUES");
  228.     $isNew = $event->getParameter("IS_NEW");
  229.    
  230.     if($isNew == 1){
  231.         $propertyCollection = $order->getPropertyCollection();
  232.        
  233.         $ar = $propertyCollection->getArray();
  234.        
  235.         $basket = $order->getBasket();
  236.        
  237.         $arProps['ACTION'] = "OrderSave";
  238.         $arProps['auth_code'] = "jig3rF^%7867tqc3xnj4*Y324";
  239.        
  240.         $arProps['ID'] = $order->getId();
  241.        
  242.         foreach($ar['properties'] as $key => $value){
  243.             $arProps[$value['CODE']] = empty($value['OPTIONS']) ? $value['VALUE'][0] : $value['OPTIONS'][$value['VALUE'][0]];
  244.         }
  245.        
  246.         $arProps['DELIVERY_PRICE'] = $order->getDeliveryPrice();
  247.        
  248.         $arProps['COMMENTS'] = $order->getField("USER_DESCRIPTION");
  249.        
  250.         foreach ($basket as $basketItem) {
  251.             $arBasket[($basketItem -> getProductId())] = array(
  252.                 'PRICE' => $basketItem -> getPrice(),
  253.                 'QUANTITY' => $basketItem -> getQuantity(),
  254.                 'NAME' => $basketItem -> getField('NAME'),
  255.                 'MEASURE_NAME' => $basketItem -> getField('MEASURE_NAME'),
  256.                 'CURRENCY' => $basketItem -> getField('CURRENCY'),
  257.                 'DISCOUNT_PRICE' => $basketItem -> getField('DISCOUNT_PRICE'),
  258.                 'BASE_PRICE' => $basketItem -> getField('BASE_PRICE'),
  259.             );
  260.             $arProdID[] = $basketItem -> getProductId();
  261.         }
  262.        
  263.         $arSelect = Array("ID", "IBLOCK_ID", "PROPERTY_MILLING", "PROPERTY_WEIGHT", "PROPERTY_VOLUME");
  264.         $arFilter = Array("IBLOCK_ID"=>2, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", "ID" => $arProdID);
  265.         $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
  266.         while($ob = $res->GetNext())
  267.         {
  268.             $arBasket[$ob['ID']]['MILLING'] = $ob['PROPERTY_MILLING_VALUE'];
  269.             $arBasket[$ob['ID']]['WEIGHT'] = $ob['PROPERTY_WEIGHT_VALUE'];
  270.             $arBasket[$ob['ID']]['VOLUME'] = $ob['PROPERTY_VOLUME_VALUE'];
  271.         }
  272.        
  273.         $discountData = $order->getDiscount()->getApplyResult();
  274.        
  275.         $arProps['SKIDKA'] = (int)(($arBasket[$arProdID[0]]['DISCOUNT_PRICE'] * 100) / $arBasket[$arProdID[0]]['BASE_PRICE']);
  276.        
  277.         foreach($discountData['COUPON_LIST'] as $COUPON){
  278.             $arProps['PROMOCOD'] = $COUPON['COUPON'];
  279.         }
  280.        
  281.         $paymentIds = $order->getPaymentSystemId();
  282.        
  283.         $arProps['PAYMENT'] = $paymentIds[0];
  284.        
  285.         $arProps['BASKET'] = $arBasket;
  286.        
  287.         if(!empty($arProps['EMAIL']) || !empty($arProps['PHONE'])){
  288.             $curl = curl_init();
  289.             curl_setopt_array($curl, array(
  290.                 CURLOPT_SSL_VERIFYPEER  => 0,
  291.                 CURLOPT_POST            => 1,
  292.                 CURLOPT_HEADER          => 0,
  293.                 CURLOPT_URL             => 'https://portal.livecoffee.softmonster.ru/__cust/integration_with_im.php',
  294.                 CURLOPT_POSTFIELDS      => http_build_query($arProps)
  295.             ));
  296.             curl_exec($curl);
  297.             curl_close($curl);
  298.         }
  299.        
  300.         writeToLog($arProps, 'arProps');
  301.     }
  302. }
  303.  
  304. \Bitrix\Main\EventManager::getInstance()->addEventHandler('sale', 'OnSaleOrderPaid', 'IntegrationOrderPaidWithB24');
  305.  
  306. function IntegrationOrderPaidWithB24(\Bitrix\Main\Event $event){
  307.     $order = $event->getParameter("ENTITY");
  308.     $orderId = $order->getId();
  309.     /*$isPaid               = $paymentCollection->isPaid();                 // true, если все оплаты оплачены
  310.     $hasPaidPayment         = $paymentCollection->hasPaidPayment();         // true, если хотя бы одна оплата оплачена
  311.     $getPaidSum             = $paymentCollection->getPaidSum();             // оплаченная сумма
  312.     $isExistsInnerPayment   = $paymentCollection->isExistsInnerPayment();   // true, если осуществлена оплата с внутреннего счета
  313.    
  314.     function writeToLog($data, $title = '') {
  315.         $log = "\n------------------------\n";
  316.         $log .= date("Y.m.d G:i:s") . "\n";
  317.         $log .= (strlen($title) > 0 ? $title : 'DEBUG') . "\n";
  318.         $log .= print_r($data, 1);
  319.         $log .= "\n------------------------\n";
  320.         file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/log_order_paid.log', $log, FILE_APPEND);
  321.         return true;
  322.     }
  323.    
  324.     writeToLog($isPaid, 'isPaid');
  325.     writeToLog($hasPaidPayment, 'hasPaidPayment');
  326.    
  327.     $arProps['ACTION'] = "OrderPaid";
  328.     $arProps['auth_code'] = "jig3rF^%7867tqc3xnj4*Y324";
  329.    
  330.     $arProps['ID'] = $orderId;
  331.     $arProps['PAID_SUM'] = $getPaidSum;
  332.  
  333.     if(!empty($arProps['ID'])){
  334.         $curl = curl_init();
  335.         curl_setopt_array($curl, array(
  336.             CURLOPT_SSL_VERIFYPEER  => 0,
  337.             CURLOPT_POST            => 1,
  338.             CURLOPT_HEADER          => 0,
  339.             CURLOPT_URL             => 'https://portal.livecoffee.softmonster.ru/__cust/integration_with_im.php',
  340.             CURLOPT_POSTFIELDS      => http_build_query($arProps)
  341.         ));
  342.         curl_exec($curl);
  343.         curl_close($curl);
  344.     }
  345.    
  346.     writeToLog($arProps, 'arProps');
  347.     */
  348. }
  349. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement