Добрый день,
Уже третий день бьюсь с написанием собственного обработчика доставки (Типы доставки -> Редактировать -> По формуле)
Цель у меня следующая: Сделать так, чтобы в корзине после оформления заказа, в списке заказанных товаров, в товаре "доставка ИМЯ ДОСТАВКИ" отображалась цена, которую я вычислил на стадии ввода пользователем своего адреса (сейчас там всегда 0).
Конечно, можно реализовать через скрытый input, потом получить цену доставки через POST и сделать вывод параметра в нужном месте страницы, но хотелось бы всё же воспользоваться вашей готовой системой.
Что я делаю неправильно: в корзине я беру введённый адрес и отправляю в API карт, мне возвращается расстояние, которое я умножаю на тариф. Получается стоимость доставки, зависящая от расстояния до клиента.
Эту стоимость я и хочу присвоить объекту доставки. Поэтому у меня создан тип доставки у которого выбран режим "По формуле", я внимательно изучил все примеры, доступные в тестовом сайте, но так и не понял, что мне нужно отправить в return обработчика, чтобы файл \modules\shop\payment\system\handler.php (Я так понимаю он должен присвоить объекту доставки стоимость) в строке
Код из файла \modules\shop\payment\system\handler.php
из функции _addDelivery()
$aPrice = $oShop_Delivery_Condition->getPriceArray();
Получил бы не 0, а то, что я отправил в return файла обработчика доставки (\hostcmsfiles\shop\delivery\handler1.php)
Сейчас print_r параметра $aPrice выдаёт
Цитата:
Array ( [tax] => 0.00 [rate] => 0 [price] => 0.00 [price_tax] => 0.00 [discount] => 0 [discounts] => Array ( ) [price_discount] => 0.00 )
В данный момент я остановился на таком коде этого файла (в конце возвращает массив с ценой и описанием, но результат почему то по прежнему ноль)
Код файла \hostcmsfiles\shop\delivery\handler1.php
class Shop_Delivery_Handler1 extends Shop_Delivery_Handler
{
public function execute()
{
$deliveryPrice=intval(Core_Array::getPost('ИМЯ_ПЕРЕМЕННОЙ_С_ЦЕНОЙ', 0));
$oReturn = new StdClass;
$oReturn->price = $deliveryPrice;
$oReturn->description = "Описание доставки";
$oReturn = $deliveryPrice;
return $oReturn;
}
}
Такой вариант тоже не даёт результатов:
Код файла \hostcmsfiles\shop\delivery\handler1.php
class Shop_Delivery_Handler1 extends Shop_Delivery_Handler
{
public function execute()
{
$deliveryPrice=intval(Core_Array::getPost('ИМЯ_ПЕРЕМЕННОЙ_С_ЦЕНОЙ', 0));
return $deliveryPrice;
}
}
Возможно я копаю не там? Документации на эту тему очень мало, а примеры в тестовом сайте предназначены для отправки данных сторонним фирмам, таким как Почта России и EMS. Мне нужно просто назначить объекту доставки стоимость полученную ранее.