Current Path : /var/www/axolotl/data/www/kirov.axolotls.ru/bitrix/components/aspro/oneclickbuy.next/ |
Current File : /var/www/axolotl/data/www/kirov.axolotls.ru/bitrix/components/aspro/oneclickbuy.next/functions.php |
<? function getPropertyByCode($propertyCollection, $code){ foreach ($propertyCollection as $property){ if($property->getField('CODE') == $code){ return $property; } } } function checkNewVersionExt($module="main"){ if($info = CModule::CreateModuleObject($module)){ $testVersion = '16.0.30'; if(CheckVersion($info->MODULE_VERSION, $testVersion)){ return true; }else{ return false; } } return false; } function placeOrder($registeredUserID, $basketUserID, $newOrder, $arOrderDat, $POST){ \Bitrix\Sale\DiscountCouponsManager::init(); $deliveryName = $paymentName = ""; if(class_exists('\Bitrix\Sale\Delivery\Services\Manager')) { $service = \Bitrix\Sale\Delivery\Services\Manager::getObjectById($newOrder["DELIVERY_ID"]); if(is_object($service)) { if ($service->isProfile()) $arDelivery['DELIVERY_NAME'] = $service->getNameWithParent(); else $arDelivery['DELIVERY_NAME'] = $service->getName(); $deliveryName = $arDelivery["DELIVERY_NAME"]; } else { $deliveryName = "QUICK_ORDER"; } } else { $deliveryName = "QUICK_ORDER"; } if(class_exists('\Bitrix\Sale\PaySystem\Manager')) { $service = \Bitrix\Sale\PaySystem\Manager::getObjectById($newOrder["PAY_SYSTEM_ID"]); if(is_object($service)) $paymentName=$service->getField('NAME'); else $paymentName = "QUICK_ORDER"; } else { $paymentName = "QUICK_ORDER"; } //$siteId = \Bitrix\Main\Context::getCurrent()->getSite(); $siteId = $_POST['SITE_ID']; $order = Bitrix\Sale\Order::create($siteId, $basketUserID); $order->setPersonTypeId($newOrder['PERSON_TYPE_ID']); $order->setFieldNoDemand('USER_ID', $registeredUserID); /*Basket start*/ $basket = Bitrix\Sale\Basket::loadItemsForFUser($basketUserID, $siteId)->getOrderableItems(); // action for basket items $basketItems = $basket->getBasketItems(); foreach ($basketItems as $basketItem){ $basketItem->setField('PRODUCT_PROVIDER_CLASS', '\CCatalogProductProvider'); } CSaleBasket::UpdateBasketPrices($basketUserID, $siteId); Bitrix\Sale\Compatible\DiscountCompatibility::stopUsageCompatible(); $order->setBasket($basket); /*Basket end*/ /*Shipment start*/ $shipmentCollection = $order->getShipmentCollection(); $shipment = $shipmentCollection->createItem(); $shipment->setField('CURRENCY', $arOrderDat["CURRENCY"]); $shipmentItemCollection = $shipment->getShipmentItemCollection(); foreach ($order->getBasket() as $item) { $shipmentItem = $shipmentItemCollection->createItem($item); $shipmentItem->setQuantity($item->getQuantity()); } $shipment->setFields( array( 'DELIVERY_ID' => $newOrder["DELIVERY_ID"], 'DELIVERY_NAME' => $deliveryName ) ); $shipmentCollection->calculateDelivery(); /*Shipment end*/ /*Payment start*/ $paymentCollection = $order->getPaymentCollection(); $extPayment = $paymentCollection->createItem(); $extPayment->setFields( array( 'PAY_SYSTEM_ID' => $newOrder['PAY_SYSTEM_ID'], 'PAY_SYSTEM_NAME' => $paymentName, ) ); /*Payment end*/ $order->getDiscount()->calculate(); $order->doFinalAction(true); /*Order fields start*/ $order->setField('CURRENCY', $arOrderDat["CURRENCY"]); $order->setFields( array( 'USER_DESCRIPTION' => $POST['ONE_CLICK_BUY']['COMMENT'], 'COMMENTS' => GetMessage('FAST_ORDER_COMMENT'), ) ); /*Order fields end*/ /*Props start*/ $propertyCollection = $order->getPropertyCollection(); if($POST['ONE_CLICK_BUY']['EMAIL']){ $obProperty = getPropertyByCode($propertyCollection, 'EMAIL'); if($obProperty) $obProperty->setValue($POST['ONE_CLICK_BUY']['EMAIL']); } /*Props end*/ $r=$order->save(); if (!$r->isSuccess()){ die(getJson(GetMessage('ORDER_CREATE_FAIL'), 'N', implode('<br />', (array)$r->getErrors()))); } return $r; } ?>