forum.bitel.ru
http://forum.bitel.ru/

Подскажите как получить информацию по узлу тарифа
http://forum.bitel.ru/viewtopic.php?f=22&t=2216
Страница 1 из 1

Автор:  Akhmat [ 20 апр 2009, 17:59 ]
Заголовок сообщения:  Подскажите как получить информацию по узлу тарифа

Добрый всем!

Подскажите, как получить информацию по узлу тарифного плана (в своем скрипте)? Конкретно, мне надо узнать кол-во бесплатного трафика (первый узел диапазон), который включен в абонплату тарифа. (Требуется узнать кол-во трафика скаченного сверх абонплаты, по тарифу. Собираюсь вычислять как общее кол-во минус бесплатный траф)

SQL запросами не осилил алгоритм, как вытянуть эту инфу.

Спасибо!

Автор:  Akhmat [ 21 апр 2009, 14:47 ]
Заголовок сообщения: 

up

Автор:  Akhmat [ 22 апр 2009, 12:52 ]
Заголовок сообщения: 

Разработчики, как вы разбираете тарифный план, подскажите.

Раз принят такой способ хранения данных для ТП, значит алгоритм разбора должен быть простой и эффектный

Автор:  Администратор [ 22 апр 2009, 16:06 ]
Заголовок сообщения: 

Давайте несколько записей конкретных из mtree_node, помогу разобрать.

Автор:  Akhmat [ 23 апр 2009, 13:12 ]
Заголовок сообщения: 

сейчас, момент

Автор:  Akhmat [ 23 апр 2009, 18:47 ]
Заголовок сообщения: 

в общем так, см. скрины.
в mtree_node

Код:
SELECT * FROM mtree_node where mtree_id=239


Код:
+-------+-------------+----------+---------------+---------------------------------+-----+
| id    | parent_node | mtree_id | type          | data                            | pos |
+-------+-------------+----------+---------------+---------------------------------+-----+
| 82057 |           0 |      239 | root          |                                 | 212 |
| 82061 |       82057 |      239 | multi_service | sids&1,5,3                      |   1 |
| 82062 |       82057 |      239 | service       | 4                               |   2 |
| 82063 |       82057 |      239 | service       | 2                               |   3 |
| 82064 |       82061 |      239 | cost          | type&2%cost&0.0%col&1           |   1 |
| 82065 |       82062 |      239 | range         | col&1%for_time&1%type&3%mode&0  |   1 |
| 82066 |       82062 |      239 | range         | col&0%for_time&1%type&2%mode&0  |   2 |
| 82067 |       82065 |      239 | cost          | type&2%cost&0.0%col&1           |   1 |
| 82068 |       82066 |      239 | cost          | type&2%cost&1.32%col&1          |   1 |
| 82069 |       82063 |      239 | range         | col&50%for_time&1%type&2%mode&0 |   1 |
| 82072 |       82063 |      239 | range         | col&0%for_time&1%type&2%mode&0  |   4 |
| 82073 |       82069 |      239 | cost          | type&2%cost&0.0%col&1           |   1 |
| 82076 |       82072 |      239 | cost          | type&2%cost&0.06%col&1          |   1 |
+-------+-------------+----------+---------------+---------------------------------+-----+
13 rows in set (0.00 sec)


Каким образом можно достать эту инфу? Может SQL какой покажете?
У меня стартовый параметр только id тарифа(из contract_tariff)

У этого тарифа id=146, далее по цепочке tariff_tree_link -> tariff_tree -> module_tariff_tree -> mtree_node руками нахожу выборку выше.

В общем, от tpid надо дойти до необходимой записи. сам не могу допереть как :(

Автор:  Администратор [ 24 апр 2009, 09:55 ]
Заголовок сообщения: 

Цитата:
82066 | 82062 | 239 | range | col&0%for_time&1%type&2%mode&0 | 2 |

Ну вот тут range - это тип узла. Соответствие типа названию можно посмотреть в конфигурации тарифа. Для 4.5 конфигурация в таблице tariff_tree_config. От 4.6 - в jar файлах модулей идет в файле bitel.billing.common.tariff.<имя модуля>.xml
Собственно range - это и есть диапазон наработки.
Теперь в поле data - это пары атрибут-значение, разделенные символом процента. Атрибут от значения в паре отделяется &.
Ну и для этого конкретного узла. col - количество. type - мб/часы/секунды и т.п.
mode - безусловно/пропорционально, по-моему.
Можете просто менять свойства узла и сопоставлять data.
Код узла дерева (id записи из mtree_node) можете получить нажав Ctrl+Shift+i на нем.

Автор:  Akhmat [ 24 апр 2009, 13:57 ]
Заголовок сообщения: 

Спасибо!:) Хотелось бы узнать как дойти до нужной записи mtree_node от одного параметра tpid. Ищем первый диапазон услуги sid=4 модуля mid=1

Вообще возможно её одним запросом вытащить?

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

PS
По вашему ответу не понял как вы конкретные узлы тарифного плана получаете. Вообще, сложно понять как по таким взаимосвязям таблиц выбирать данные. И вообще не понятно, как выбрать (фильтровать) взаимосвязанные данные ОДНОЙ таблицы (mtree_node). Объяснений не прошу. Если покажете как вы выбираете, наверно пойму.

Автор:  Akhmat [ 24 апр 2009, 14:10 ]
Заголовок сообщения: 

Скажу зачем мне это. Написал обработки для 1с 8, три штуки.
1. Импортирование договоров из биллинга(импортируются конкретные группы биллинга, импортируются только новые, не существующие в 1с договора)
2. Сверка остатков в 1с и в биллинге на конкретный месяц. Для наглядного обнаружения расхождений по конкретным договорам в двух системах.
3. Формирование актов выполненных работ, и счетов-фактур из биллинга в 1с.

Во всех обработках добротный, дружественный интерфейс.

Готовы все обработки, надо только в 3 для услуг "услуги интернет (вх)" и т.д. указывать кол-во услуги. Т.е. для таких тарифов кол-во трафика скачанного сверх абонплаты. Поможете, с удовольствием готов выложить, может кому из пользователей окажутся они полезными.

Автор:  lda [ 24 апр 2009, 14:27 ]
Заголовок сообщения: 

Цитата:
Т.е. для таких тарифов кол-во трафика скачанного сверх абонплаты.

Вам для этого не надо лесть в тариф и определять его параметры.
Почитайте: http://www.bgbilling.ru/v4.5/doc/ch14s0 ... l#d0e14266

Автор:  Akhmat [ 24 апр 2009, 14:49 ]
Заголовок сообщения: 

Не, ну ты посмотри)) Сделали уже все и не предупредили :D
Спасибо, вроде то что надо, пробую!

Автор:  lda [ 24 апр 2009, 14:57 ]
Заголовок сообщения: 

Лесть в тариф и пытаться определить его параметры, это дело не благодарное. Тем более что тариф может быть очень сложным. Я всегда стараюсь искать обходные пути :)

Автор:  Akhmat [ 24 апр 2009, 15:01 ]
Заголовок сообщения: 

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

Автор:  Akhmat [ 28 апр 2009, 15:28 ]
Заголовок сообщения: 

lda писал(а):
Вам для этого не надо лесть в тариф и определять его параметры.
Почитайте: http://www.bgbilling.ru/v4.5/doc/ch14s0 ... l#d0e14266

Эта фича, что в доке описана, работает только при переобсчете. Может в планировщик добавите задание, переобсчет ДиалАп (ИПН), по указанным группам, если не в напряг :) Всё равно ведь желательно пересчитывать каждый месяц, так что можно и задачу замутить.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/