Есть стандартный компонент битрикса корзины. Но оформление заказа написано полностью на API. То есть, начиная с кнопки оформить заказ внутренности компонента не используются.
Соответственно, создаётся объект $order, в него передаётся текущая корзина пользователя $basket.
Далее, в зависимости от того, что выбрал пользователь, создаётся доставка, а именно вот так:
if (($delivery == 2) or ($delivery == 3)) {
$service = Delivery\Services\Manager::getById($delivery);
$shipment->setFields(array(
"DELIVERY_ID" => $service["ID"],
"DELIVERY_NAME" => $service["NAME"],
));
$shipment->setBasePriceDelivery($deliveryCost);
} else {// Иначе создаём служебную доставку
$service = Delivery\Services\Manager::getById(Delivery\Services\EmptyDeliveryService::getEmptyDeliveryServiceId());
$shipment->setFields(array(
"DELIVERY_ID" => $service["ID"],
"DELIVERY_NAME" => $service["NAME"],
));
}
Как мне передать и каким способом адрес доставки? Сейчас он не фиксируется в заказе и следовательно не виден в заказе из админки.
Поддержка битрикс пока что ответила так:
"Адрес доставки" это свойство заказа, его название можно получить и обновить $propertyValue->setField();
https://dev.1c-bitrix.ru/api_d7/bitrix/sale/techni...
https://dev.1c-bitrix.ru/api_d7/bitrix/sale/techni...
Только не понятно, к чему применить setField и какой ключ в него передавать, чтобы установить именно адрес доставки.