Advertisement
Guest User

Untitled

a guest
Apr 25th, 2018
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.82 KB | None | 0 0
  1. }elseif($_GET["act"] === "fastBack"){
  2.  
  3. if(!empty($_GET["phone"]) && !empty($_GET["id"])){
  4.  
  5. if(CModule::IncludeModule("iblock") && CModule::IncludeModule("sale")){
  6. $OPTION_CURRENCY = CCurrency::GetBaseCurrency();
  7. $arElement = CIBlockElement::GetByID(intval($_GET["id"]))->GetNext();
  8. if(!empty($arElement)){
  9.  
  10. $arPrice = CCatalogProduct::GetOptimalPrice($arElement["ID"], 1, $USER->GetUserGroupArray(), "N");
  11.  
  12. if (!empty($arPrice)) {
  13. $arElement["~PRICE"] = $arElement["PRICE"] = $arPrice["RESULT_PRICE"]["DISCOUNT_PRICE"];
  14. $arElement["PRICE"] = CurrencyFormat($arElement["PRICE"], $arPrice["RESULT_PRICE"]["CURRENCY"]);
  15. }
  16.  
  17. $postMess = CEventMessage::GetList($by = "site_id", $order = "desc", array("TYPE" => "SALE_DRESSCODE_FASTBACK_SEND"))->GetNext();
  18.  
  19. if(empty($postMess)){
  20.  
  21. $MESSAGE = "<h3>С сайта #SITE# поступил новый заказ в 1 клик. </h3> <p> Товар: <b>#PRODUCT#</b> <br /> Имя: <b>#NAME#</b> <br /> Телефон: <b>#PHONE#</b> <br /> Ссылка: #PRODUCT_URL# <br /> Комментарий: #COMMENT#";
  22. $FIELDS = "#SITE# \n #PRODUCT# \n #NAME# \n #PHONE# \n #COMMENT# \n";
  23.  
  24. $et = new CEventType;
  25. $et->Add(
  26. array(
  27. "LID" => "ru",
  28. "EVENT_NAME" => "SALE_DRESSCODE_FASTBACK_SEND",
  29. "NAME" => "Купить в один клик",
  30. "DESCRIPTION" => $FIELDS
  31. )
  32. );
  33.  
  34. $arr["ACTIVE"] = "Y";
  35. $arr["EVENT_NAME"] = "SALE_DRESSCODE_FASTBACK_SEND";
  36. $arr["LID"] = SITE_ID;
  37. $arr["EMAIL_FROM"] = COption::GetOptionString('main', 'email_from', 'webmaster@webmaster.com');
  38. $arr["EMAIL_TO"] = COption::GetOptionString("sale", "order_email");
  39. $arr["BCC"] = COption::GetOptionString("main", 'email_from', 'webmaster@webmaster.com');
  40. $arr["SUBJECT"] = "Покупка товара в один клик";
  41. $arr["BODY_TYPE"] = "html";
  42. $arr["MESSAGE"] = $MESSAGE;
  43.  
  44. $emess = new CEventMessage;
  45. $emess->Add($arr);
  46.  
  47. }
  48.  
  49.  
  50. $PRODUCT_URL = "<a href=";
  51. $PRODUCT_URL .= (CMain::IsHTTPS()) ? "https://" : "http://";
  52. $PRODUCT_URL .= SITE_SERVER_NAME.$arElement["DETAIL_PAGE_URL"];
  53. $PRODUCT_URL .= "\">".$arElement["NAME"]."</a>";
  54.  
  55. $arMessage = array(
  56. "SITE" => SITE_SERVER_NAME,
  57. "PRODUCT" => $arElement["NAME"]." (ID:".$arElement["ID"]." )"." - ".$arElement["PRICE"],
  58. "PRODUCT_URL" => $PRODUCT_URL,
  59. "NAME" => BX_UTF != 1 ? iconv("UTF-8","windows-1251//IGNORE", htmlspecialcharsbx($_GET["name"])) : htmlspecialcharsbx($_GET["name"]),
  60. "PHONE" => BX_UTF != 1 ? iconv("UTF-8","windows-1251//IGNORE", htmlspecialcharsbx($_GET["phone"])) : htmlspecialcharsbx($_GET["phone"]),
  61. "COMMENT" => BX_UTF != 1 ? iconv("UTF-8","windows-1251//IGNORE", htmlspecialcharsbx($_GET["message"])) : htmlspecialcharsbx($_GET["message"])
  62. );
  63.  
  64. CEvent::SendImmediate("SALE_DRESSCODE_FASTBACK_SEND", htmlspecialcharsbx($_GET["SITE_ID"]), $arMessage, "Y", false);
  65.  
  66. // NEW ORDER
  67.  
  68. $getPersonType = CSalePersonType::GetList(Array("SORT" => "ASC"), Array("LID" => htmlspecialcharsbx($_GET["SITE_ID"]), "ACTIVE" => "Y"));
  69. if ($arPersonItem = $getPersonType->Fetch()){
  70. $USER_ID = intval($USER->GetID());
  71. if($USER_ID == 0){
  72. $rsUser = CUser::GetByLogin("unregistered");
  73. $arUser = $rsUser->Fetch();
  74. if(!empty($arUser)){
  75. $USER_ID = $arUser["ID"];
  76. }else{
  77.  
  78. $newUser = new CUser;
  79. $newPass = rand(0, 999999999);
  80. $arUserFields = Array(
  81. "NAME" => "unregistered",
  82. "LAST_NAME" => "unregistered",
  83. "EMAIL" => "unregistered@unregistered.com",
  84. "LOGIN" => "unregistered",
  85. "LID" => "ru",
  86. "ACTIVE" => "Y",
  87. "GROUP_ID" => array(),
  88. "PASSWORD" => $newPass,
  89. "CONFIRM_PASSWORD" => $newPass,
  90. );
  91.  
  92. $USER_ID = $newUser->Add($arUserFields);
  93. }
  94. }
  95.  
  96. //paysystem
  97.  
  98. $db_ptype = CSalePaySystem::GetList($arOrder = Array("SORT" => "ASC", "PSA_NAME" => "ASC"),
  99. Array("ACTIVE" => "Y", "PERSON_TYPE_ID" => $arPersonItem["ID"])
  100. );
  101.  
  102. if ($ptype = $db_ptype->Fetch()){
  103.  
  104. //delivery
  105.  
  106. $db_dtype = CSaleDelivery::GetList(
  107. array(
  108. "SORT" => "ASC",
  109. "NAME" => "ASC"
  110. ),
  111. array(
  112. "LID" => htmlspecialcharsbx($_GET["SITE_ID"]),
  113. "ACTIVE" => "Y",
  114. ),
  115. false,
  116. false,
  117. array()
  118. );
  119.  
  120. if ($ar_dtype = $db_dtype->Fetch()){
  121.  
  122. CSaleBasket::DeleteAll(CSaleBasket::GetBasketUserID(), False);
  123.  
  124.  
  125. // CSaleBasket::GetBasketUserID()
  126.  
  127. Add2BasketByProductID(
  128. $arElement["ID"],
  129. 1,
  130. array(),
  131. array()
  132. );
  133.  
  134.  
  135. $arID = array();
  136. $giftComponentResult = NULL;
  137. $arBasketOrder = array("PRICE" => "ASC");
  138. $arBasketUser = array("FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => $_GET["SITE_ID"], "ORDER_ID" => "NULL");
  139. $arBasketSelect = array("ID", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "DELAY",
  140. "CAN_BUY", "PRICE", "WEIGHT", "NAME", "CURRENCY", "CATALOG_XML_ID", "VAT_RATE",
  141. "NOTES", "DISCOUNT_PRICE", "PRODUCT_PROVIDER_CLASS", "DIMENSIONS", "TYPE", "SET_PARENT_ID", "DETAIL_PAGE_URL", "*"
  142. );
  143.  
  144. $dbBasketItems = CSaleBasket::GetList($arBasketOrder, $arBasketUser, false, false, $arBasketSelect);
  145.  
  146. $arResult["SUM"] = 0;
  147. $arResult["ORDER_WEIGHT"] = 0;
  148. $arResult["SUM_DELIVERY"] = 0;
  149.  
  150. $arResult["MAX_DIMENSIONS"] = array();
  151. $arResult["ITEMS_DIMENSIONS"] = array();
  152.  
  153. while ($arItems = $dbBasketItems->Fetch()){
  154.  
  155. CSaleBasket::UpdatePrice(
  156. $arItems["ID"],
  157. $arItems["CALLBACK_FUNC"],
  158. $arItems["MODULE"],
  159. $arItems["PRODUCT_ID"],
  160. $arItems["QUANTITY"],
  161. "N",
  162. CSaleBasket::GetProductProvider($arItems)
  163. );
  164.  
  165. array_push($arID, $arItems["ID"]);
  166.  
  167. $arDim = $arItems["DIMENSIONS"] = $arItems["~DIMENSIONS"];
  168.  
  169. if(is_array($arDim)){
  170. $arResult["MAX_DIMENSIONS"] = CSaleDeliveryHelper::getMaxDimensions(
  171. array(
  172. $arDim["WIDTH"],
  173. $arDim["HEIGHT"],
  174. $arDim["LENGTH"]
  175. ),
  176. $arResult["MAX_DIMENSIONS"]);
  177.  
  178. $arResult["ITEMS_DIMENSIONS"][] = $arDim;
  179. }
  180. }
  181.  
  182. $dbBasketItems = CSaleBasket::GetList(
  183. $arBasketOrder,
  184. array(
  185. "ID" => $arID,
  186. "ORDER_ID" => "NULL"
  187. ),
  188. false,
  189. false,
  190. $arBasketSelect
  191. );
  192.  
  193. while ($arItems = $dbBasketItems->Fetch()){
  194. $arResult["SUM"] += ($arItems["PRICE"] * $arItems["QUANTITY"]);
  195. $arResult["ORDER_WEIGHT"] += ($arItems["WEIGHT"] * $arItems["QUANTITY"]);
  196. $arResult["ITEMS"][$arItems["PRODUCT_ID"]] = $arItems;
  197. $arResult["ID"][] = $arItems["PRODUCT_ID"];
  198. }
  199.  
  200.  
  201. $arOrderProps = array();
  202. $arWarnings = array();
  203. $arErrors = array();
  204.  
  205. $db_props = CSaleOrderProps::GetList(
  206. array("SORT" => "ASC"),
  207. array(
  208. "PERSON_TYPE_ID" => $arPersonItem["ID"],
  209. "UTIL" => "N"
  210. ),
  211. false,
  212. false,
  213. array()
  214. );
  215.  
  216. while ($props = $db_props->Fetch()){
  217. if($props["IS_PROFILE_NAME"] == "Y"){
  218. $arOrderProps[$props["ID"]] = BX_UTF != 1 ? iconv("UTF-8","windows-1251//IGNORE", htmlspecialcharsbx($_GET["name"])) : htmlspecialcharsbx($_GET["name"]);
  219. }else if(strtoupper($props["CODE"]) == "TELEPHONE" || strtoupper($props["CODE"]) == "PHONE" || $props["IS_PHONE"] == "Y"){
  220. $arOrderProps[$props["ID"]] = BX_UTF != 1 ? iconv("UTF-8","windows-1251//IGNORE", htmlspecialcharsbx($_GET["phone"])) : htmlspecialcharsbx($_GET["phone"]);
  221. }
  222. }
  223.  
  224. $arOrderDat = CSaleOrder::DoCalculateOrder(
  225. htmlspecialcharsbx($_GET["SITE_ID"]),
  226. !empty($USER_ID) ? $USER_ID : IntVal($USER->GetID()),
  227. $arResult["ITEMS"],
  228. $arPersonItem["ID"],
  229. $arOrderProps,
  230. $ar_dtype["ID"],
  231. $ptype["ID"],
  232. array(),
  233. $arErrors,
  234. $arWarnings
  235. );
  236.  
  237. if(empty($arErrors)){
  238.  
  239. $arOrderFields = array(
  240. "LID" => htmlspecialcharsbx($_GET["SITE_ID"]),
  241. "PERSON_TYPE_ID" => $arPersonItem["ID"],
  242. "PAYED" => "N",
  243. "CANCELED" => "N",
  244. "STATUS_ID" => "N",
  245. "PRICE" => $arElement["~PRICE"],
  246. "CURRENCY" => $OPTION_CURRENCY,
  247. "USER_ID" => !empty($USER_ID) ? $USER_ID : IntVal($USER->GetID()),
  248. "PAY_SYSTEM_ID" => $ptype["ID"],
  249. "PRICE_DELIVERY" => 0,
  250. "DELIVERY_ID" => $ar_dtype["ID"],
  251. "DISCOUNT_VALUE" => 0,
  252. "TAX_VALUE" => 0.0,
  253. "USER_DESCRIPTION" => BX_UTF != 1 ? iconv("UTF-8","windows-1251//IGNORE", htmlspecialcharsbx($_GET["message"])) : htmlspecialcharsbx($_GET["message"])
  254. );
  255.  
  256. $ORDER_ID = (int)CSaleOrder::DoSaveOrder($arOrderDat, $arOrderFields, 0, $arResult["ERROR"]);
  257.  
  258. if(!empty($arResult["ERROR"])){
  259. $result = array(
  260. "heading" => "Ошибка",
  261. "message" => "Ошибка, заказ не создан!",
  262. "success" => false
  263. );
  264. }
  265.  
  266. }else{
  267. $result = array(
  268. "heading" => "Ошибка",
  269. "message" => "Ошибка, заказ не создан!",
  270. "success" => false
  271. );
  272. }
  273.  
  274. CSaleBasket::OrderBasket($ORDER_ID, $USER_ID, $_GET["SITE_ID"]);
  275.  
  276.  
  277. }else{
  278. $result = array(
  279. "heading" => "Ошибка",
  280. "message" => "Ошибка, служба доставки не создана!",
  281. "success" => false
  282. );
  283. }
  284.  
  285. }else{
  286. $result = array(
  287. "heading" => "Ошибка",
  288. "message" => "Ошибка, платежная система не создана!",
  289. "success" => false
  290. );
  291. }
  292.  
  293. }
  294. if(empty($result)){
  295. $result = array(
  296. "heading" => "Ваш заказ успешно отправлен",
  297. "message" => "В ближайшее время Вам перезвонит наш менеджер для уточнения деталей заказа.",
  298. "success" => true
  299. );
  300. }
  301. }else{
  302.  
  303. $result = array(
  304. "heading" => "Ошибка",
  305. "message" => "Ошибка, товар не найден!",
  306. "success" => false
  307. );
  308.  
  309. }
  310.  
  311. }
  312.  
  313. }else{
  314. $result = array(
  315. "heading" => "Ошибка",
  316. "message" => "Ошибка, заполните обязательные поля!",
  317. "success" => false
  318. );
  319. }
  320.  
  321. echo jsonEn($result);
  322.  
  323. }
  324. }
  325. else{
  326. die(false);
  327. }
  328. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement