Всем доброго дня, не получается вывести стоимость доставки в карточке товара, погуглив - понял, что нужно создать объект корзины,заказа и оттуда вытаскивать стоимость, но почему-то всегда выводится 0. Ниже код. Да, и где нужно заполнять местоположение в заказе? Как я понял, стоимость рассчитывается исходя из местоположения и веса, так где эти данные добавлять в заказе? Может из-за этого выводит всегда 0?
Код |
---|
$price_product = 1000;
$deliveryId = 9;
$obBasket = \Bitrix\Sale\Basket::create(SITE_ID);
$obItem = $obBasket->createItem("catalog", $arResult['ID']);
$arProductFields = array(
'NAME' => $arResult['NAME'],
'PRICE' => $price_product,
'CURRENCY' => 'RUB',
'QUANTITY' => 1,
'LID' => \Bitrix\Main\Context::getCurrent()->getSite(),
'PRODUCT_PROVIDER_CLASS' => 'CCatalogProductProvider',
);
$obItem->setFields($arProductFields);
$obOrder = \Bitrix\Sale\Order::create(SITE_ID, 1);
$obOrder->setPersonTypeId(1);
$obOrder->setBasket($obBasket);
$obShipmentCollection = $obOrder->getShipmentCollection();
$obShipment = $obShipmentCollection->createItem(\Bitrix\Sale\Delivery\Services\Manager::getObjectById($deliveryId));
$shipmentItemCollection = $obShipment->getShipmentItemCollection();
foreach ($obBasket as $basketItem)
{
$item = $shipmentItemCollection->createItem($basketItem);
$item->setQuantity($basketItem->getQuantity());
// print_r($basketItem);
}
$deliviryprice=Bitrix\Sale\PriceMaths::roundPrecision($obOrder->getDeliveryPrice());
$arDelivery = \Bitrix\Sale\Delivery\Services\Manager::calculateDeliveryPrice($obShipment, $deliveryId, array());
$arDeliveryParams = \Bitrix\Sale\Delivery\Services\Manager::getById($deliveryId);
echo '1:<pre>';print_R( $deliviryprice);echo '</pre>';
echo '2:<pre>';print_R( $arDelivery);echo '</pre>';
echo '3:<pre>';print_R( $arDeliveryParams);echo '</pre>';
|