Здравствуйте! У меня вопрос такой:
1. Как по средствам Битрикс можно автоматически определять город где находится пользователью
2.Как сделать так , что бы была связь доставки и местоположения, что бы работали ограничения настроенные в доставках на местоположения.(С оплатами аналогично).
Мне желательно нужны примеры кода реализации. У меня есть код, который с помощью аякс запроса из шаблона компонента оформления заказа, в файле добывает доставки, оплаты и т.д. , эти данные передаются в заказ.
#корзина
$basket = Sale\Basket::loadItemsForFUser(
Sale\Fuser::getId(),
$siteId
);
$order->setBasket($basket);
#доставка
$shipmentCollection = $order->getShipmentCollection();
$shipment = $shipmentCollection->createItem();
$arDeliv = CSaleDelivery::GetByID(
$deliveryId
);
$shipment->setFields(array(
"DELIVERY_NAME" => $arDeliv["NAME"],
'DELIVERY_ID' => $deliveryId,
'CURRENCY' => $order->getCurrency(),
'PRICE_DELIVERY' => $arDeliv['PRICE'],
'BASE_PRICE_DELIVERY' => $arDeliv['PRICE']
//'PRICE_DELIVERY' => $order->getDeliveryPrice(), # нет параметра
));
/**/
#оплата
$paymentCollection = $order->getPaymentCollection();
$payment = $paymentCollection->createItem();
$paySystemService = PaySystem\Manager::getObjectById(
$payId?$payId:1
);
$payment->setFields(array(
'PAY_SYSTEM_ID' => $paySystemService->getField("PAY_SYSTEM_ID"),
'PAY_SYSTEM_NAME' => $paySystemService->getField("NAME"),
));
#свойства заказа
$propertyCollection = $order->getPropertyCollection();
$phoneProp = $propertyCollection->getPhone();
$phoneProp->setValue($phone);
$nameProp = $propertyCollection->getPayerName();
$nameProp->setValue($name);
$emailProp = $propertyCollection->getUserEmail();
$emailProp->setValue($email);
#местоположения
$res = CSaleLocation::GetList(
array(),
array(),
false,
false,
array("ID", "CITY_NAME")
);
//foreach($arResult['JS_DATA']['ORDER_PROP']['properties'] as $arItem){
//$your_location[] = \Bitrix\Sale\Location\LocationTable::getById($arItem["ID"])->fetch();
//}
#Сохраняем заказ
$order->doFinalAction(true);
$result = $order->save();
$orderId = $order->getId();
По местоположениям, пока что только выборка, нашёл варианты получения выборки, но привязать не могу.
1. Как по средствам Битрикс можно автоматически определять город где находится пользователью
2.Как сделать так , что бы была связь доставки и местоположения, что бы работали ограничения настроенные в доставках на местоположения.(С оплатами аналогично).
Мне желательно нужны примеры кода реализации. У меня есть код, который с помощью аякс запроса из шаблона компонента оформления заказа, в файле добывает доставки, оплаты и т.д. , эти данные передаются в заказ.
#корзина
$basket = Sale\Basket::loadItemsForFUser(
Sale\Fuser::getId(),
$siteId
);
$order->setBasket($basket);
#доставка
$shipmentCollection = $order->getShipmentCollection();
$shipment = $shipmentCollection->createItem();
$arDeliv = CSaleDelivery::GetByID(
$deliveryId
);
$shipment->setFields(array(
"DELIVERY_NAME" => $arDeliv["NAME"],
'DELIVERY_ID' => $deliveryId,
'CURRENCY' => $order->getCurrency(),
'PRICE_DELIVERY' => $arDeliv['PRICE'],
'BASE_PRICE_DELIVERY' => $arDeliv['PRICE']
//'PRICE_DELIVERY' => $order->getDeliveryPrice(), # нет параметра
));
/**/
#оплата
$paymentCollection = $order->getPaymentCollection();
$payment = $paymentCollection->createItem();
$paySystemService = PaySystem\Manager::getObjectById(
$payId?$payId:1
);
$payment->setFields(array(
'PAY_SYSTEM_ID' => $paySystemService->getField("PAY_SYSTEM_ID"),
'PAY_SYSTEM_NAME' => $paySystemService->getField("NAME"),
));
#свойства заказа
$propertyCollection = $order->getPropertyCollection();
$phoneProp = $propertyCollection->getPhone();
$phoneProp->setValue($phone);
$nameProp = $propertyCollection->getPayerName();
$nameProp->setValue($name);
$emailProp = $propertyCollection->getUserEmail();
$emailProp->setValue($email);
#местоположения
$res = CSaleLocation::GetList(
array(),
array(),
false,
false,
array("ID", "CITY_NAME")
);
//foreach($arResult['JS_DATA']['ORDER_PROP']['properties'] as $arItem){
//$your_location[] = \Bitrix\Sale\Location\LocationTable::getById($arItem["ID"])->fetch();
//}
#Сохраняем заказ
$order->doFinalAction(true);
$result = $order->save();
$orderId = $order->getId();
По местоположениям, пока что только выборка, нашёл варианты получения выборки, но привязать не могу.