Advertisement
pnzdevelop

bitrix Предложите покупателю

Aug 22nd, 2016
399
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 9.94 KB | None | 0 0
  1. <?php
  2. // http://divasoft.ru/blog/vozvrashchaem-blok-predlozhite-pokupatelyu-v-detalnyy-zakaz-1s-bitriks/
  3. define("NO_KEEP_STATISTIC", true);
  4. //define("NOT_CHECK_PERMISSIONS", true);
  5. require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
  6. $ID = intval($_REQUEST['ID']);
  7.  
  8. if (!$USER->IsAdmin() || $ID==0) {
  9.     die();
  10. }
  11.  
  12. require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/sale/general/admin_tool.php");
  13. require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/sale/lang/ru/admin/order_detail.php");
  14. CModule::IncludeModule("iblock");
  15. CModule::IncludeModule("catalog");
  16. CModule::IncludeModule("sale");
  17.  
  18.  
  19. $dbOrder = CSaleOrder::GetList(
  20.         array("ID" => "DESC"), array("ID" => $ID), false, false, array(
  21.             "ID", "LID", "PERSON_TYPE_ID",
  22.             "PAYED", "DATE_PAYED", "EMP_PAYED_ID", "PAY_VOUCHER_NUM", "PAY_VOUCHER_DATE",
  23.             "CANCELED", "DATE_CANCELED", "EMP_CANCELED_ID", "REASON_CANCELED",
  24.             "STATUS_ID", "DATE_STATUS", "EMP_STATUS_ID", "PRICE_DELIVERY",
  25.             "ALLOW_DELIVERY", "DATE_ALLOW_DELIVERY", "EMP_ALLOW_DELIVERY_ID",
  26.             "DEDUCTED", "DATE_DEDUCTED", "EMP_DEDUCTED_ID", "REASON_UNDO_DEDUCTED",
  27.             "MARKED", "DATE_MARKED", "EMP_MARKED_ID", "REASON_MARKED",
  28.             "PRICE", "CURRENCY", "DISCOUNT_VALUE", "SUM_PAID", "USER_ID", "PAY_SYSTEM_ID",
  29.             "DELIVERY_ID", "DATE_INSERT", "DATE_INSERT_FORMAT", "DATE_UPDATE", "USER_DESCRIPTION",
  30.             "ADDITIONAL_INFO", "PS_STATUS", "PS_STATUS_CODE", "PS_STATUS_DESCRIPTION",
  31.             "PS_STATUS_MESSAGE", "PS_SUM", "PS_CURRENCY", "PS_RESPONSE_DATE", "COMMENTS",
  32.             "TAX_VALUE", "STAT_GID", "RECURRING_ID", "AFFILIATE_ID", "LOCK_STATUS",
  33.             "USER_LOGIN", "USER_NAME", "USER_LAST_NAME", "USER_EMAIL", "DELIVERY_DOC_NUM",
  34.             "DELIVERY_DOC_DATE", "STORE_ID", "ACCOUNT_NUMBER", "TRACKING_NUMBER",
  35.         )
  36.     );
  37.     if (($arOrder = $dbOrder->Fetch())) {
  38.     ?>
  39. <div class="load_product order_summary" style="float: left;">
  40.             <table width="100%" class="itog_header"><tr><td>Предложите покупателю</td></tr></table>
  41.             <div id="tabs">
  42.                 <?
  43.                 $crmMode=false;
  44.                 $displayNone = "block";
  45.                 $displayNoneBasket = "block";
  46.                 $displayNoneViewed = "block";
  47.                 $arFilterRecomendet = array();
  48.                 $arBasketItems = array();
  49.  
  50.                 $dbBasketTmp = CSaleBasket::GetList( array("ID" => "ASC"), array("ORDER_ID" => $arOrder["ID"]), false, false, array( "ID", "PRODUCT_ID" ) );
  51.                 while ($arBasketTmp = $dbBasketTmp->GetNext()) {
  52.                     $arBasketItems[] = $arBasketTmp;
  53.                 }
  54.                 //pr($arBasketItems);
  55.                 foreach ($arBasketItems as $arItem) {
  56.                     if (!CSaleBasketHelper::isSetItem($arItem)) {
  57.                         $arFilterRecomendet[] = $arItem["PRODUCT_ID"];
  58.                     }
  59.                 }
  60.  
  61.                 $arRecommendedResult = CSaleProduct::GetRecommendetProduct($arOrder["USER_ID"], $arOrder["LID"], $arFilterRecomendet);
  62.                 $recomCnt = count($arRecommendedResult);
  63.  
  64.                 if ($recomCnt > 2) {
  65.                     $arTmp = array();
  66.                     $arTmp[] = $arRecommendedResult[0];
  67.                     $arTmp[] = $arRecommendedResult[1];
  68.                     $arRecommendedResult = $arTmp;
  69.                 }
  70.                 if ($recomCnt <= 0)
  71.                     $displayNone = "none";
  72.  
  73.                 $arErrors = array();
  74.                 $arFuserItems = CSaleUser::GetList(array("USER_ID" => intval($arOrder["USER_ID"])));
  75.  
  76.                 $arCartWithoutSetItems = array();
  77.                 $arTmpShoppingCart = CSaleBasket::DoGetUserShoppingCart($arOrder["LID"], $arOrder["USER_ID"], $arFuserItems["ID"], $arErrors, array());
  78.  
  79.                 if (is_array($arTmpShoppingCart)) {
  80.                     foreach ($arTmpShoppingCart as $arCartItem) {
  81.                         if (CSaleBasketHelper::isSetItem($arCartItem))
  82.                             continue;
  83.                         $item = findPositionsByID($arCartItem["PRODUCT_ID"]);
  84.                         if ($item['IBLOCK_ID'] != CATALOG_IBLOCK_ID) {
  85.                             if ($item['PROPS']['CML2_LINK']['VALUE'] != "") {
  86.                                 $item = findPositionsByID($item['PROPS']['CML2_LINK']['VALUE']);
  87.                             }
  88.                         }
  89.                         $arCartItem['MASTER']=$item;
  90.                         $arCartItem['NAME']="[".$item['PROPS']['CML2_ARTICLE']['VALUE']."] ".$arCartItem['NAME'];
  91.        
  92.                         $arCartWithoutSetItems[] = $arCartItem;
  93.                     }
  94.                 }
  95.                 $basketCnt = count($arCartWithoutSetItems);
  96.                 if ($basketCnt > 2) {
  97.                     $arTmp = array();
  98.                     $arTmp[] = $arCartWithoutSetItems[0];
  99.                     $arTmp[] = $arCartWithoutSetItems[1];
  100.                     $arCartWithoutSetItems = $arTmp;
  101.                 }
  102.                 if ($basketCnt <= 0)
  103.                     $displayNoneBasket = "none";
  104.  
  105.                 ///
  106.                 $arViewed = array();
  107.                 $arViewedIds = array();
  108.                 $viewedCount = 0;
  109.                 $mapViewed = array();
  110.                 if (CModule::includeModule("catalog")) {
  111.                     $viewedIterator = \Bitrix\Catalog\CatalogViewedProductTable::getList(array(
  112.                                 'order' => array("DATE_VISIT" => "DESC"),
  113.                                 'filter' => array('FUSER_ID' => $arFuserItems["ID"], "SITE_ID" => $arOrder["LID"]),
  114.                                 'select' => array("ID", "FUSER_ID", "DATE_VISIT", "PRODUCT_ID", "LID" => "SITE_ID", "NAME" => "ELEMENT.NAME", "PREVIEW_PICTURE" => "ELEMENT.PREVIEW_PICTURE", "DETAIL_PICTURE" => "ELEMENT.DETAIL_PICTURE")
  115.                     ));
  116.  
  117.                     while ($viewed = $viewedIterator->fetch()) {
  118.                         $viewed['MODULE'] = 'catalog';
  119.                         $arViewed[$viewedCount] = $viewed;
  120.                         $arViewedIds[] = $viewed['PRODUCT_ID'];
  121.                         $mapViewed[$viewed['PRODUCT_ID']] = $viewedCount;
  122.                         $viewedCount++;
  123.                     }
  124.                     unset($viewedCount);
  125.                     $baseGroup = CCatalogGroup::getBaseGroup();
  126.                     if (!empty($arViewedIds)) {
  127.                         $priceIterator = CPrice::getList(
  128.                                         array(), array("PRODUCT_ID" => $arViewedIds, 'CATALOG_GROUP_ID' => $baseGroup['ID']), false, false, array("PRODUCT_ID", "PRICE", "CURRENCY"));
  129.                         while ($productPrice = $priceIterator->fetch()) {
  130.                             if (isset($mapViewed[$productPrice['PRODUCT_ID']])) {
  131.                                 $key = $mapViewed[$productPrice['PRODUCT_ID']];
  132.                                 $arViewed[$key]["PRICE"] = $productPrice["PRICE"];
  133.                                 $arViewed[$key]["CURRENCY"] = $productPrice["CURRENCY"];
  134.                             }
  135.                         }
  136.                     }
  137.                     $viewedCnt = count($arViewed);
  138.                     $arViewed = array_slice($arViewed, 0, 2);
  139.                     if (count($arViewed) <= 0)
  140.                         $displayNoneViewed = "none";
  141.                 }
  142.                 else {
  143.                     $displayNoneViewed = "none";
  144.                 }
  145.  
  146.                 $tabBasket = "tabs";
  147.                 $tabViewed = "tabs";
  148.  
  149.                 if ($displayNoneBasket == 'none' && $displayNone == 'none' && $displayNoneViewed == 'block')
  150.                     $tabViewed .= " active";
  151.                 if ($displayNoneBasket == 'block' && $displayNone == 'none')
  152.                     $tabBasket .= " active";
  153.                 ?>
  154.                                     <div id="tab_1" style="display:<?=$displayNone?>"       class="tabs active"     onClick="fTabsSelect('buyer_recmon', this);" ><?=GetMessage('SOD_SUBTAB_RECOMENET')?></div>
  155.                                     <div id="tab_2" style="display:<?=$displayNoneBasket?>" class="<?=$tabBasket?>" onClick="fTabsSelect('buyer_basket', this);"><?=GetMessage('SOD_SUBTAB_BASKET')?></div>
  156.                                     <div id="tab_3" style="display:<?=$displayNoneViewed?>" class="<?=$tabViewed?>" onClick="fTabsSelect('buyer_viewed', this);"><?=GetMessage('SOD_SUBTAB_LOOKED')?></div>
  157. <?
  158.                                     if ($displayNone == 'block')
  159.                                     {
  160.                                         $displayNoneBasket = 'none';
  161.                                         $displayNoneViewed = 'none';
  162.                                     }
  163.                                     if ($displayNoneBasket == 'block')
  164.                                     {
  165.                                         $displayNone = 'none';
  166.                                         $displayNoneViewed = 'none';
  167.                                     }
  168.                                     if ($displayNoneViewed == 'block')
  169.                                     {
  170.                                         $displayNone = 'none';
  171.                                         $displayNoneBasket = 'none';
  172.                                     }
  173.                                     ?>
  174.                                    
  175.                 <div id="buyer_recmon" class="tabstext active" style="display:<?= $displayNone ?>">
  176.                 <? echo fGetFormatedProductData($arOrder["USER_ID"], $arOrder["LID"], $arRecommendedResult, $recomCnt, $arOrder["CURRENCY"], 'recom', $crmMode); ?>
  177.                 </div>
  178.  
  179.                 <div id="buyer_basket" class="tabstext active" style="display:<?= $displayNoneBasket ?>">
  180.  
  181.                 if (count($arCartWithoutSetItems) > 0)
  182.                     echo fGetFormatedProductData($arOrder["USER_ID"], $arOrder["LID"], $arCartWithoutSetItems, $basketCnt, $arOrder["CURRENCY"], 'basket', $crmMode);
  183.                 ?>
  184.                 </div>
  185.  
  186.                 <div id="buyer_viewed" class="tabstext active" style="display:<?= $displayNoneViewed ?>">
  187.                 <?
  188.                 if (count($arViewed) > 0)
  189.                     echo fGetFormatedProductData($arOrder["USER_ID"], $arOrder["LID"], $arViewed, $viewedCnt, $arOrder["CURRENCY"], 'viewed', $crmMode);
  190.                 ?>
  191.                 </div>
  192.             </div>
  193.                 <script type="text/javascript">
  194.                 function fTabsSelect(tabText, el)
  195.                 {
  196.                     BX('tab_1').className = "tabs";
  197.                     BX('tab_2').className = "tabs";
  198.                     BX('tab_3').className = "tabs";
  199.  
  200.                     BX(el).className = "tabs active";
  201.                     BX(el).className = "tabs active";
  202.                     BX(el).style.display = 'block';
  203.  
  204.                     BX('buyer_recmon').className = "tabstext";
  205.                     BX('buyer_basket').className = "tabstext";
  206.                     BX('buyer_viewed').className = "tabstext";
  207.                     BX('buyer_recmon').style.display = 'none';
  208.                     BX('buyer_basket').style.display = 'none';
  209.                     BX('buyer_viewed').style.display = 'none';
  210.  
  211.                     BX(tabText).style.display = 'block';
  212.                     BX(tabText).className = "tabstext active";
  213.                 }
  214.                 </script>
  215.                                        
  216.                 <script type="text/javascript">
  217.                     /*
  218.                     * click on recommendet More
  219.                     */
  220.                     function fGetMoreProduct(type)
  221.                     {
  222.                         BX.showWait();
  223.                         productData = <? echo CUtil::PhpToJSObject($arFilterRecomendet); ?>;
  224.                         var userId = '<?=$arOrder["USER_ID"]?>';
  225.                         var fUserId = '<?=$arFuserItems["ID"]?>';
  226.                         var currency = '<?=$arOrder["CURRENCY"]?>';
  227.                         var lid = '<?=$arOrder["LID"]?>';
  228.  
  229.                         BX.ajax.post('/bitrix/admin/sale_order_detail.php', '<?=CUtil::JSEscape(bitrix_sessid_get())?>&ORDER_AJAX=Y&type='+type+'&arProduct='+productData+'&currency='+currency+'&LID='+lid+'&userId='+userId+'&fUserId='+fUserId+'&ID=<?=$ID?>', fGetMoreProductResult);
  230.                     }
  231.  
  232.                     function fGetMoreProductResult(res)
  233.                     {
  234.                         BX.closeWait();
  235.                         var rs = eval( '('+res+')' );
  236.  
  237.                         if (rs["ITEMS"].length > 0)
  238.                         {
  239.                             if (rs["TYPE"] == 'basket')
  240.                                 BX("buyer_basket").innerHTML = rs["ITEMS"];
  241.                             if (rs["TYPE"] == 'recom')
  242.                                 BX("buyer_recmon").innerHTML = rs["ITEMS"];
  243.                             if (rs["TYPE"] == 'viewed')
  244.                                 BX("buyer_viewed").innerHTML = rs["ITEMS"];
  245.                         }
  246.                     }
  247.             </script>  
  248.         </div>
  249.     <?}
  250. require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_after.php");?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement