Всем привет. Мне достался непонятный функционал работы с заказами. в заказах есть списки товаров. Все эти товары лежат в отдельном инфоблоке. и свойство Цена доставки каждого товара находится в свойствах элемента инфоблока. Соответственно. при расчете Итоговой цены доставка не учитывается.
Задача. Нужно учитывать стоимость доставки кажждого из товаров.
Вариант решения. №1 (Пока самый желаеммый) Добавить в расчет поля "Сумма" цену доставки. если было "Количество" * "Цена" , то стало "Количество" * "Цена" + Цена доставки.
Попытка решения. Повесил обработчик события OnSaleCalculateOrder. в Нем прошелся по каждому товару и с помощью CSaleBasket::GetByID зная BUSCET_ID каждого товара нахожу цену доставки. но так как в событии отсутствует поле "Сумма" не знаю как добавить цену доставки..
Другие варианты... Также использовал следующие события:
-- OnBeforeOrderUpdate - http://joxi.ru/V2VY9E5IdxdDmv Проблема возникала в том что это работает только после нажатия на кнопку применить/сохранить. Еще не правильно отображалась Итоговая цена если мы меняем Количество или ценутовара (Измененные данные приходили только при повторном нажатии на кнопку применить/сохранить (видимо присвоение этих полей происходит после события)) До - http://joxi.ru/Dr8NBj3ho4zz26. После первого сохранения - http://joxi.ru/E2pbyXeS79abrY. После второго сохранения - http://joxi.ru/J2b3WY4u0XGEA6. Причем при просмотре заказа вообще странно все выглядитhttp://joxi.ru/vAWy9vltg1qMmW -- OnBeforeBasketUpdate - там отлавливал изменение цены доставки и с помощью CSaleOrder::Update пытался изменить поле доставки.. но там тоже не понятно что происходило.
Жду любой комментарий по этому поводу.. Уже не знаю что делать... мне даже способ редактирования кода модуля сойдет, только не знаю как и где искать все это... что за события срабатывают и где их обработчики..