Подскажите, почему у сохраненного заказа и у товаров в заказе цена 0 рублей?
Прилагаю
Прилагаю
| Код |
|---|
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
Bitrix\Main\Loader::includeModule('sale');
Bitrix\Main\Loader::includeModule('catalog');
$basket = Bitrix\Sale\Basket::create(SITE_ID);
$arData = [
"order" => [
"currency" => "RUR",
"fake" => false,
"id" => 12345,
"paymentType" => "PREPAID",
"paymentMethod" => "YANDEX",
"delivery" => [
"price" => 300
],
"items" => [
[
"offerId" => "17190",
"offerName" => "Медиаплеер Xiaomi Mi Box S International Version",
"count" => 3,
"price" => 5150
],
[
"offerId" => "1616109",
"offerName" => "Робот-пылесос Xiaomi Mi Robot Vacuum-Mop (Vacuum Cleaner 1C)",
"count" => 2,
"price" => 15845
]
]
]
];
foreach($arData['order']['items'] as $item){
$basketItem = $basket->createItem("catalog", $item['offerId']);
$basketItem->setField('PRODUCT_ID', $item['offerId']);
$basketItem->setField('NAME', $item['offerName']);
$basketItem->setField('PRICE', $item['price']);
$basketItem->setField('CURRENCY', 'RUB');
$basketItem->setField('QUANTITY', $item['count']);
}
$order = Bitrix\Sale\Order::create(SITE_ID, 100072);
$order->setPersonTypeId(1);
$order->setBasket($basket);
$shipmentCollection = $order->getShipmentCollection();
$shipment = $shipmentCollection->createItem(
Bitrix\Sale\Delivery\Services\Manager::getObjectById(1)
);
$shipmentItemCollection = $shipment->getShipmentItemCollection();
foreach($basket as $basketItem)
{
$item = $shipmentItemCollection->createItem($basketItem);
$item->setQuantity($basketItem->getQuantity());
}
$paymentCollection = $order->getPaymentCollection();
$payment = $paymentCollection->createItem(
Bitrix\Sale\PaySystem\Manager::getObjectById(1)
);
$res = $order->getShipmentCollection()->calculateDelivery();
// здесь $order->getPrice() равен 0
$payment->setField("SUM", $order->getPrice());
$payment->setField("CURRENCY", $order->getCurrency());
$order->doFinalAction(true);
$result = $order->save();
if(!$result->isSuccess())
{
$result->getErrors();
}
$orderId = $order->getId();
echo $orderId;
?>
|