33 if(intval(
$params[
'PERSON_TYPE_ID']) <= 0)
36 if(empty(
$params[
'CART_ITEMS']))
39 if(empty(
$params[
'IS_ACCEPT_OLD_PRICE']))
45 if(
$params[
'CURRENCY'] ==
'RUR' && empty($currencyList[
'RUR']) && !empty($currencyList[
'RUB']))
58 $orderClass = $registry->getOrderClassName();
64 if (!
$res->isSuccess())
67 if(!empty(
$params[
'PROPERTIES']))
69 $propCollection =
$order->getPropertyCollection();
72 if (!
$res->isSuccess())
77 $isStartField =
$order->isStartField();
80 $basketClass = $registry->getBasketClassName();
82 $basket = $basketClass::create(
$params[
'SITE_ID']);
85 if (!
$res->isSuccess())
88 $basket->setFUserId($fUserId);
94 Loader::includeModule(
'catalog');
98 foreach (
$params[
'CART_ITEMS'] as $itemKey => $item)
100 $basketItemFields =
array(
101 'PRODUCT_ID' => $item[
'offerId'],
102 'QUANTITY' => $item[
'count'],
103 'PRODUCT_PROVIDER_CLASS' =>
'\Bitrix\Catalog\Product\CatalogProvider'
107 'SITE_ID' =>
$params[
'SITE_ID'],
108 'CURRENCY' =>
$params[
'CURRENCY'],
111 if (
$order->getUserId() > 0)
119 $resultData =
$res->getData();
121 if (!empty($resultData[
'BASKET_ITEM']))
124 $basketItem = $resultData[
'BASKET_ITEM'];
127 if (!
$res->isSuccess())
131 $basketItem->setField(
"QUANTITY", 0);
137 $itemsMap[$basketItem->getBasketCode()] = $itemKey;
153 $r = $basket->refreshData();
154 if (!$r->isSuccess())
160 foreach($basket as $basketItem)
162 $basketCode = $basketItem->getBasketCode();
163 $item =
$params[
'CART_ITEMS'][$itemsMap[$basketCode]];
165 $basketItem->setField(
"NAME", $item[
'offerName']);
171 if($basket->count() == 0)
173 $result->addError(
new Error(Loc::getMessage(
'SALE_YMARKET_ORDER_PRODUCTS_NOT_AVAILABLE')));
179 $hasMeaningfulFields =
$order->hasMeaningfulField();
180 $res =
$order->doFinalAction($hasMeaningfulFields);
182 if (!
$res->isSuccess())
189 'ITEMS_MAP' => $itemsMap
196 public static function createShipment(\
Bitrix\
Sale\Order &
$order, $deliveryId = 0, $deliveryPrice =
false)
198 $shipments =
$order->getShipmentCollection();
201 if($shipments->count() > 0)
202 foreach ($shipments as $shipment)
203 if(!$shipment->isSystem())
206 $shipment = $shipments->createItem();
208 if(intval($deliveryId) > 0)
212 $dlvName = $dlvSrv->getNameWithParent();
214 $dlvName =
'Not found ('.$deliveryId.
')';
216 $shipment->setField(
'DELIVERY_ID', $deliveryId);
217 $shipment->setField(
'DELIVERY_NAME', $dlvName);
220 if($deliveryPrice !==
false)
222 $shipment->setBasePriceDelivery(floatval($deliveryPrice),
true);
225 $basket =
$order->getBasket();
229 $shipmentItemCollection = $shipment->getShipmentItemCollection();
230 $basketItems = $basket->getBasketItems();
233 foreach ($basketItems as $basketItem)
236 $shipmentItem = $shipmentItemCollection->createItem($basketItem);
237 $shipmentItem->setQuantity($basketItem->getField(
'QUANTITY'));
243 public static function createPayment(\
Bitrix\
Sale\Order &
$order, $paySystemId = 0)
245 $payments =
$order->getPaymentCollection();
248 if($payments->count() > 0)
261 if(intval($paySystemId) > 0)
263 $psName =
'Not found ('.$paySystemId.
')';
265 if($ps =
PaySystem\Manager::getById($paySystemId))
266 $psName = $ps[
'NAME'];
268 $payment->setField(
'PAY_SYSTEM_ID', $paySystemId);
269 $payment->setField(
'PAY_SYSTEM_NAME', $psName);