Еще споткнулся - включил модуль СДЕК, он включился, ответ присылает со стомостью, но в модуле срабатывает
if (empty($ruble) || $ruble['is_primary'] == 'N') {
$this->_internalError(__('shippings.sdek.activation_error'));
}
А у меня основная - не рубль… Есть варианты как победить?
Так, сам острю - сам смеюсь опять.
Закомментировал эту проверку, дальше все пошло с одним НО: СДЭК возвращает стоимость в рублях, а модуль считает это валютой и, соответственно, умножает на курс.
Памагитеинвалиду, в каком месте идет прием данных? Я там это на курс валюты умножу и все дела.
Покопался, в
/app/addons/rus_sdek/func.php
есть
function fn_sdek_calculate_cost_by_shipment($order_info, $shipping_info, $shipment_info, $rec_city_code)
Явно вот оно, что надо…
$result = $sum_rate['price']; меняю на
$result = $sum_rate['price'] / 45; это типа курс у меня такой...
return $result;
Но в итоге ничего не меняется в выводе ни тестового расчета ни расчета на сайте… Что за дела?
Так, почти нашел. Точнее нашел - почти сделал…
/app/addons/rus_sdek/Tygh/Shippings/Services/Sdek.php
private function _getRates($response)
Есть строка
$rates['price'] = $response['result']['price'] / 45;
Куда тупо вставил курс валюты, и заработало - калькулятор отдает цену в рублях теперь. Да, через зад, лучше бы, конечно, заставить модуль отдавать инфо что на выходе валюта уже рубли. Но хоть так.
ВОПРОС: в этом скрипте можно как-то получить курс валюты?
Чем дальше в лес - тем злее партизаны…
ВОПРОС 2:
В СДЭК передаются запросы с указанием кода доставки. Я нашел единственное место, где эти коды задаются:
/app/addons/rus_sdek/config.php
define('SDEK_STOCKROOM', 136);
define('SDEK_DOOR', 137);
define('SDEK_DOOR_STOCKROOM', 234); - это как надо.
define('SDEK_DOOR_DOOR', 233); - это как надо.
//define('SDEK_DOOR_STOCKROOM', 138); - это в оригинале, закомментил.
//define('SDEK_DOOR_DOOR', 139); - это в оригинале, закомментил.
define('SDEK_TIMEOUT', 5);
Вроде бы все должно работать… Но запросы в СДЭК улетают с кодами 138 и 139! Думал запрос кешируется - менял адреса и регионы, нет. Думал скрипты кешируются - удалял модуль и устанавливал назад с промежуточным жестким удалением /var/cache/ - не помогло. Прошелся по всем файлам /app/addons/rus_sdek/ в поисках треклятого кода 139 - нет числа 139 в файлах! Что за фигня, где я туплю так сильно?
Ну и
ВОПРОС 3:
После установки модуля появляются языковые переменные sdek_tariff_хххх значения которых я поменял. Но после удаления-установки модуля их значения опять старые. Перерыл все вроде файлы модуля - не могу найти где эти дефолтные значения спрятаны…
Как говориться сам придумал и сам обиделся! )))
Блин, ну подскажите же кто-нибудь! Явно ответ где-то на поверхности но я сослепу его не вижу!
define(‘SDEK_DOOR_STOCKROOM’, 138); - это было.
//define(‘SDEK_DOOR_STOCKROOM’, 138); - я закомментил
define(‘SDEK_DOOR_STOCKROOM’, 234); - вставил новую строку.
Все это в /app/addons/rus_sdek/config.php
Кеш чистил по-всякому. Прошелся grep по всему серверу в поисках SDEK_DOOR_STOCKROOM вдруг где еще оно сидит - нет. Прошелся по всей папке /app/addons/rus_sdek в поисках 138 - нет больше числа 138 (кроме ID городов).
Кеш чистил. По всякому. Модуль откл-вкл. Модуль удалить - поставить, но все равно былин в запросе передается ID доставки 138 если выбрать способ доставки SDEK_DOOR_STOCKROOM!!!
Всем спасибо за жаркое участие, в итоге методом дедукции я додумался сам, где может быть проблема, проверил - вуаля, она там и есть. Все у меня заработало, кроме подстановки курса валюты. Но это я думаю и не дождусь ответа, так что забью. Работает - и ладно.
2 лайка