208 похожих чатов

ВСем привет. Подскажиет пожалуйста, как изменить стоимость доставки (отгрузки) в собычии

OnSaleOrderBeforeSaved ??
МЕняю через $shipment->setBasePriceDelivery($newPrice, false); - меняетс BASE_DELIVERY_PRICE, но не меняется DELIVERY_PRICE
в итоге в заказе стоимость доставки = 0

17 ответов

91 просмотр

onSaleDeliveryServiceCalculate событие

Сергей-Шадрин Автор вопроса
Andrew Zahalski
onSaleDeliveryServiceCalculate событие

так тоже не работает :(. точнее оно работает при генерации списка служб доставок, а потом не срабатывает, после выбора и сохранения выбранной службы доставки :(.

Сергей-Шадрин Автор вопроса
Andrew Zahalski
onSaleDeliveryServiceCalculate событие

в обработчике выполняю: $calcResult->setDeliveryPrice($price); $event->addResult(new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, ['RESULT' => $calcResult])); но это обработчик вызывается один раз, при выводе списка служб доставок, почему-то.

Сергей Шадрин
в обработчике выполняю: $calcResult->setDeliveryP...

при каждом запуске расчета вызывается

Сергей-Шадрин Автор вопроса
Andrew Zahalski
onSaleDeliveryServiceCalculate событие

да, посе выбора службы доставки и переходе к выбору плат. системы в логе я поймал что установлена новая цена доставки через обработчик onSaleDeliveryServiceCalculate $calcResult->setDeliveryPrice($price); $event->addResult(new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, ['RESULT' => $calcResult])); $log='<p>Set new delivery price: '.$price.'</p>'; Debug::writeToFile('Data: '. $log.PHP_EOL, '', '/logs/order_delivery_price.log'); но при создании заказа - цена доставки все равно = 0 :(.

Сергей-Шадрин Автор вопроса
Andrew Zahalski
скидка на доставку :) мб

если это будет так, то это будет писец :(. секунду.

Сергей-Шадрин Автор вопроса
Andrew Zahalski
скидка на доставку :) мб

не, тогда была бы стоимость доставки 1000, стоимость доставки с учетом скидок = 0. верно?

Сергей Шадрин
screenshot не, тогда была бы стоимость доставки 1000, стоимос...

странно выглядит, видимо уже есть в обработчиках логика

Сергей-Шадрин Автор вопроса
Andrew Zahalski
доставка 311р стоит?

1000р. в сумму заказа она добавлена кстати. Товаров на 6220, скидка 311 = 5909р. + 1000 на доставку = 6909 р.

Сергей-Шадрин Автор вопроса
Andrew Zahalski
странно выглядит, видимо уже есть в обработчиках л...

\Bitrix\Main\EventManager::getInstance()->addEventHandler('sale', 'onSaleDeliveryServiceCalculate', array('handlersDelivery','onSaleDeliveryServiceCalculateFuncHandler')); class handlersDelivery{ public static function onSaleDeliveryServiceCalculateFuncHandler(\Bitrix\Main\Event $event){ $calcResult = $event->getParameter('RESULT'); $nos=$_SESSION["MY"]["NEW_ORDER"]; $dId=$event->getParameter("DELIVERY_ID"); if($dId==3 or $dId==1 or $dId==8 or $dId==28 or $dId==29){ $shipment=$event->getParameter("SHIPMENT"); $price = ($_REQUEST["DELIVERY_CUSTOM_PRICE"]>0?$_REQUEST["DELIVERY_CUSTOM_PRICE"]:$nos["DELIVERY_CUSTOM_PRICE"]); // unset($_SESSION["DELIVERY_CUSTOM_PRICE"]); } if($nos["DELIVERY_ID"]=="30"){ $price = 1000; } if(isset($price) and $price>0){ $log='<p>Set new delivery price: '.$price.'</p>'; $calcResult->setDeliveryPrice($price); $event->addResult(new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, ['RESULT' => $calcResult])); Debug::writeToFile('Data: '. $log.PHP_EOL, '', '/logs/order_delivery_price.log'); # die(); } } }

Сергей Шадрин
\Bitrix\Main\EventManager::getInstance()->addEvent...

нет тут а в других обработчиках на заказе уже самом

Сергей Шадрин
да, посе выбора службы доставки и переходе к выбор...

Вы должны выставить как минимум 2 значения (стоимость доставки и скидку) так, чтобы выполнялось условие base_price = price + скидка (не помню, как поле скидки в отгрузке называется)

Сергей-Шадрин Автор вопроса
Eugene Zhukov
Вы должны выставить как минимум 2 значения (стоимо...

тут вроде про скидку не пишется ничего https://dev.1c-bitrix.ru/api_d7/bitrix/sale/classes/delivery/calculationresult/setDeliveryPrice.php

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта