Апну темку.
Я вместе со скидками несколько лет назад таки сделал механизм переопределения цен через кастомные узлы тарифного плана модуля NPay взамен стандартных узлов "Стоимость" :
- Добавлена таблица с переопределёнными ценами по услугам для тарифов договора:
custom_tariff_cost: contract_tariff_id * sid -> value
- В тарифном узле берётся (если задана) цена из этой таблицы. Если нет - стандартная цена.
Основная идея такая.
Остальное - обвязка вокруг:
- Кэширование таблицы переопределения цен с обновлением кэша по событию через ActiveMQ
- Визуальное отображение переопределения:
Вложение:
tp.png [ 3.89 КБ | Просмотров: 37335 ]
- Галка "возможно переопределение цены" в тарифном узле, чтобы разделять основную цену, которую нужно переопределять, от добавочных (через тарифные опции, например)
- Веб-сервис для работы с переопределениями цен - используется внешними системами при назначении тарифов (из внешней CRM, например)
- (!) Допил клиентской части: вкладка "Переопределение цен" модуля Npay для редактирования переоопределений вручную на договорах (через тот же веб-сервис):
Вложение:
custom_cost.png [ 23.67 КБ | Просмотров: 37335 ]
Всё работает как часы в версии 5.2 уже несколько лет.
Думаю, многим эта доработка будет интересна.
На 6.2 базовую часть перенести будет не сложно, я думаю.
Планирую обновиться до 6.2 в ближайшие месяцы, кстати.
Сейчас захотели сделать переопределение цен не только для модуля NPay, но и для модуля RSCM и столкнулись с трудностями, т.к. там совсем древние классы работы с тарифными узлами: в тарифном узле нельзя получить cid договора и tree_id дерева тарифа.
Посему у меня
предложение к разработчикам: допилите RSCM Calculator, чтобы в тарифный запрос передавались кроме sid и time услуги также tree_id тарифа и cid договора:
[code=java]
tariffRequest.setRequestParam("cid", cid);
tariffRequest.setRequestParam("tree_id",tree.getTree().getTreeId());
[\code]
- нужно добавить 2 строчки. Ну либо переписать калькулятор RSCM на более современный ваш API работы с тарифым деревом, где есть TariffContext и пр. плюшки.
А я взамен
выложу своё решение на Wiki Причём не обязательно делать это в 5.2 - можно в 6.2 или даже в 7.
Что скажете?
А также вопрос к юзерам - кому-то эта фича интересна?