Advertisement
Guest User

Untitled

a guest
Jun 6th, 2021
416
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.40 KB | None | 0 0
  1. <?php
  2. require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
  3.  
  4. use Bitrix\Main\Loader;
  5. use Bitrix\Sale\Internals\BasketTable;
  6. use Bitrix\Sale\Order;
  7. use Bitrix\Sale;
  8.  
  9. global $USER;
  10.  
  11. \Bitrix\Main\Loader::includeModule("catalog");
  12. \Bitrix\Main\Loader::includeModule("sale");
  13.  
  14. $ID =   520747;
  15. $phone = '8(123)321-22-33';
  16. $name = 'Илья';
  17. $message = 'Комментарий - Тест';
  18. $email = 'email@mail.ru';
  19.  
  20. $price = CPrice::GetBasePrice($ID)['PRICE'];
  21.  
  22. $arSelect = Array('NAME');
  23. $arFilter = Array("IBLOCK_ID"=>142, "ACTIVE"=>"Y", "ID"=>$ID);
  24. $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
  25. if($ob = $res->GetNextElement())
  26. {
  27.     $arFields = $ob->GetFields();
  28.     $NAME = $arFields['NAME'];
  29. }
  30.  
  31. $products = array(
  32.     array(
  33.         'PRODUCT_ID' => $ID,
  34.         'NAME' => $NAME,
  35.         'PRICE' => (int)$price,
  36.         'CURRENCY' => 'RUB',
  37.         'QUANTITY' => 1
  38.     )
  39. );
  40.  
  41. $basket = Bitrix\Sale\Basket::create(SITE_ID);
  42. foreach ($products as $product)
  43. {
  44.     $item = $basket->createItem("dress_catalog", $product["PRODUCT_ID"]);
  45.     unset($product["PRODUCT_ID"]);
  46.     $item->setFields($product);
  47. }
  48.  
  49. /* TODO: оформить текущую корзину */
  50. //$basket = Sale\Basket::loadItemsForFUser(Sale\Fuser::getId(), Bitrix\Main\Context::getCurrent()->getSite());
  51. /* ----------------- */
  52.  
  53. $order = Bitrix\Sale\Order::create(SITE_ID, 1);
  54. $order->setPersonTypeId(1);
  55. $order->setBasket($basket);
  56.  
  57. $shipmentCollection = $order->getShipmentCollection();
  58. $shipment = $shipmentCollection->createItem(
  59.     Bitrix\Sale\Delivery\Services\Manager::getObjectById(1)
  60. );
  61.  
  62. $shipmentItemCollection = $shipment->getShipmentItemCollection();
  63.  
  64. foreach ($basket as $basketItem)
  65. {
  66.     $item = $shipmentItemCollection->createItem($basketItem);
  67.     $item->setQuantity($basketItem->getQuantity());
  68. }
  69.  
  70. $paymentCollection = $order->getPaymentCollection();
  71. $payment = $paymentCollection->createItem(
  72.     Bitrix\Sale\PaySystem\Manager::getObjectById(1)
  73. );
  74.  
  75. $collection = $order->getPropertyCollection();
  76.  
  77. if ($nameProp = $collection->getProfileName()) {
  78.     $nameProp->setValue($name);
  79. } else {
  80.     $nameProp = $collection->createItem([
  81.         'ID' => 1,
  82.         'NAME' => 'FIO',
  83.         'TYPE' => 'STRING',
  84.         'CODE' => 'PROP_FIO',
  85.     ]);
  86.     $nameProp->setField('VALUE', $name);
  87. }
  88.  
  89. if ($phoneProp = $collection->getPhone()) {
  90.     $phoneProp->setValue($phone);
  91. } else {
  92.     $phoneProp = $collection->createItem([
  93.         'ID' => 3,
  94.         'NAME' => 'PHONE',
  95.         'TYPE' => 'STRING',
  96.         'CODE' => 'PROP_Phone',
  97.     ]);
  98.     $phoneProp->setField('VALUE',  $phone);
  99. }
  100.  
  101.  
  102. if ($emailProp = $collection->getUserEmail()) {
  103.     $emailProp->setValue($email);
  104. } else {
  105.     $emailProp = $collection->createItem([
  106.         'ID' => 3,
  107.         'NAME' => 'EMAIL',
  108.         'TYPE' => 'STRING',
  109.         'CODE' => 'PROP_Email',
  110.     ]);
  111.     $emailProp->setField('VALUE', $email);
  112. }
  113.  
  114. $payment->setField("SUM", $order->getPrice());
  115. $payment->setField("CURRENCY", $order->getCurrency());
  116.  
  117. $order->setField('USER_DESCRIPTION', $message);
  118.  
  119. $propertyCollection = $order->getPropertyCollection();
  120. foreach ($propertyCollection as $property) {
  121.     if ($property->getField('CODE') == 'ONCLICK_ORDER') $property->setValue('Да');
  122. }
  123.  
  124. $result = $order->save();
  125. if (!$result->isSuccess())
  126. {
  127.     $result->getErrors();
  128. }
  129.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement