Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Проблемы с расчетом автоматической доставки

00 голосов
6
Сталкивался ли кто нибудь из вас с такой проблемой: при расчете любой (спср, почта россии) доставки, доставка расчитывается как будто товар весит ровно 1000грамм, проверял ставил и 1100 и 8000 всеравно считается как 1 кг, данные в компонент sale.ajax.delivery.calculator приходят верные, почемуже не считается? Сейчас пытаюсь разобрать что не так с компонентом но пока безуспешно.
спросил 27 Янв, 13 от OPEX (720 баллов)

6 Ответы

00 голосов
:?:
ответил 09 Фев, 13 от OPEX (720 баллов)
00 голосов
Проблема не в компоненте, а в скрипте расчета. Там вес товара округляется или вообще не учитывается - сделано для кэширования. В самом скрипте строчка кода закомментирована, где учитывается вес. Я недавно ковырялся с автоматической доставкой для СПСР - раскомментировал строку, всё заработало ;)
ответил 24 Фев, 13 от bazzet (620 баллов)
00 голосов
хм, спасибо, а в каком скрипте? sale.ajax.delivery.calculator тут?
ответил 22 Март, 13 от OPEX (720 баллов)
00 голосов
Вот респонс от /bitrix/components/bitrix/sale.ajax.delivery.calculator/templates/.default/ajax.php (860ms)
Код
Array

(

    [RESULT] => Array

        (

            [RESULT] => OK

            [VALUE] => 23.6

            [VALUE_FORMATTED] => 24 руб.

        )

    [JS_PARAMS] => 

{'STEP':'2',

'DELIVERY':'russianpost',

'PROFILE':'avia',

'WEIGHT':'8110',

'PRICE':'2090.14',

'LOCATION':'3',

'CURRENCY':'RUB',

'INPUT_NAME':'',

'TEMP':''

}

)

Оценочная стоимость: <b>24 руб.</b>


тоесть вес передает на сервак?? я непонимаю где здесь промежуточное звено между рашинпост и скриптом этим, непонимаю почему не приходит…
ответил 23 Июль, 13 от OPEX (720 баллов)
00 голосов
Не, это не в компоненте вообще, копать надо в /bitrix/modules/sale/ru/delivery/delivery_cpcr.php - это скрипт для расчета стоимости доставки СПСР. Для остальных служб свои скрипты. Уже не помню где там именно была строчка с расчетом веса, попробуйте найти закомментированные строки с переменной $arOrder["WEIGHT"]
ответил 26 Окт, 13 от bazzet (620 баллов)
00 голосов
К сожалению единственное что там закоменчено это вот что
Код
      //$arQuery[] = DELIVERY_CPCR_SERVER_POST_PRICE."=".urlencode($arOrder["PRICE"]);
      // price coefficient will be added later - to make caching independent from price
      $arQuery[] = DELIVERY_CPCR_SERVER_POST_PRICE."=0";

но вот что интересно, я однаружил что там, откуда вызываеться функция Calculate каким то образом передаються неверно параметры веса, и вес приходит нулевой, затем здесь идет проверка, и чтобы не 0 вес ставят 1 грамм:
Код
      $arOrder["WEIGHT"] = CSaleMeasure::Convert($arOrder["WEIGHT"], "G", "KG");
      if ($arOrder["WEIGHT"] <= 0) $arOrder["WEIGHT"] = 0.001; // weight must not be null - let it be 1 gramm

если я ставлю $arOrder["WEIGHT"] = 0.901; то действительно идет пересчет суммы, а вот если вначале не 0, ну тоесть вес более 1 кг НИКОГДА не просчитывается, пишет
Цитата
Не удалось рассчитать стоимость доставки: неверный ответ сервера

хттпливхедер показывает что отправляю я всеже 0 грамм, но думаю это значения здесь не имеет
ответил 30 Янв, 14 от OPEX (720 баллов)

Похожие вопросы

0 голосов
1 ответ
0 голосов
1 ответ
спросил 19 Июнь, 17 от аноним
0 голосов
2 ответов
спросил 06 Май, 14 от xDEV1Lx (240 баллов)
0 голосов
2 ответов
спросил 02 Май, 14 от PuTop (100 баллов)
0 голосов
2 ответов
спросил 29 Апр, 14 от Nadejda (180 баллов)