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

Тайный потомок
http://forum.bitel.ru/viewtopic.php?f=22&t=11981
Страница 1 из 1

Автор:  Inspire [ 05 окт 2016, 12:26 ]
Заголовок сообщения:  Тайный потомок

Нужно удалить модуль dialup в тарифе. Как в таком случае узнать потомка?
Вложение:
Безымянный.png
Безымянный.png [ 9.89 КБ | Просмотров: 12469 ]

Автор:  skyb [ 05 окт 2016, 12:51 ]
Заголовок сообщения:  Re: Тайный потомок

Видимо какой то тариф наследован от этого

Автор:  Inspire [ 05 окт 2016, 12:54 ]
Заголовок сообщения:  Re: Тайный потомок

Наследован. Обычно в таком случае в окне пишется название этого тарифа. Как тут , например.
Вложение:
Безымянный.png
Безымянный.png [ 13.99 КБ | Просмотров: 12464 ]

Автор:  dimOn [ 05 окт 2016, 13:29 ]
Заголовок сообщения:  Re: Тайный потомок

ну с бд в связях что-то

Автор:  Inspire [ 05 окт 2016, 13:33 ]
Заголовок сообщения:  Re: Тайный потомок

dimOn писал(а):
ну с бд в связях что-то

это поправимо?

Автор:  Ildar [ 05 окт 2016, 14:22 ]
Заголовок сообщения:  Re: Тайный потомок

А вы просто в наследниках не можете убрать переопределения? Или не можете их найти?

Автор:  Inspire [ 05 окт 2016, 14:54 ]
Заголовок сообщения:  Re: Тайный потомок

Не могу найти. В списке тарифов его нет. Поэтому он должен быть в персональных тарифах. Можно этот список как-то получить?

Автор:  Ildar [ 05 окт 2016, 15:07 ]
Заголовок сообщения:  Re: Тайный потомок

SELECT * FROM tariff_plan where id=141; 141 - код тарифа
Взять его tree_id
SELECT * FROM module_tariff_tree where parent_tree=210 где 210, ранее взятый tree_id

Вот у вас есть список всех tree_id. Теперь надо найти к какому тарифу данные ветки относятся. Так как персональные, то ищите в contract_tree_link.
SELECT * FROM contract_tree_link where tree_id=<один из наследуемых tree_id>

Можно конечно все это несколькими join-ами объединить.

Автор:  Inspire [ 05 окт 2016, 15:46 ]
Заголовок сообщения:  Re: Тайный потомок

Ildar писал(а):
SELECT * FROM tariff_plan where id=141; 141 - код тарифа
Взять его tree_id
SELECT * FROM module_tariff_tree where parent_tree=210 где 210, ранее взятый tree_id

Вот у вас есть список всех tree_id. Теперь надо найти к какому тарифу данные ветки относятся. Так как персональные, то ищите в contract_tree_link.
SELECT * FROM contract_tree_link where tree_id=<один из наследуемых tree_id>

Можно конечно все это несколькими join-ами объединить.

Отлично! Только не помогло. Потому что в результатах запроса пусто. И в tariff_plan и в contract_tree_link

Автор:  Ildar [ 05 окт 2016, 16:12 ]
Заголовок сообщения:  Re: Тайный потомок

А вы вставили верный id? Не было оставлено 141, как в примере запроса?
Потому как, если он вам не выдал тариф, то его как бы и нет :)

Автор:  Inspire [ 05 окт 2016, 16:44 ]
Заголовок сообщения:  Re: Тайный потомок

Ildar писал(а):
А вы вставили верный id? Не было оставлено 141, как в примере запроса?
Потому как, если он вам не выдал тариф, то его как бы и нет :)

Конечно
Вложение:
Без имени-2.png
Без имени-2.png [ 71.54 КБ | Просмотров: 12443 ]

Автор:  Inspire [ 05 окт 2016, 17:23 ]
Заголовок сообщения:  Re: Тайный потомок

Еще вопрос: а как найти персональный тариф по id в биллинге?

Автор:  Ildar [ 05 окт 2016, 17:39 ]
Заголовок сообщения:  Re: Тайный потомок

Не понятно как получилось, что осталась висеть ветка модуля. При удалении они не остаются.

Inspire писал(а):
Еще вопрос: а как найти персональный тариф по id в биллинге?


SELECT * FROM contract_tree_link WHERE id=??

Но id пер. тарифа ни где не фигурирует в клиенте, насколько помню.

Автор:  Inspire [ 05 окт 2016, 17:51 ]
Заголовок сообщения:  Re: Тайный потомок

Ildar писал(а):
Не понятно как получилось, что осталась висеть ветка модуля. При удалении они не остаются.

Inspire писал(а):
Еще вопрос: а как найти персональный тариф по id в биллинге?


SELECT * FROM contract_tree_link WHERE id=??

Но id пер. тарифа ни где не фигурирует в клиенте, насколько помню.


Спасибо. Я имею ввиду в клиенте биллинга.

Тем не менее они остались. Как их удалить?

Автор:  Ildar [ 05 окт 2016, 17:54 ]
Заголовок сообщения:  Re: Тайный потомок

А ветки есть, точнее листья?
select * from mtree_node where mtree_id=461

Автор:  Inspire [ 05 окт 2016, 18:01 ]
Заголовок сообщения:  Re: Тайный потомок

Ildar писал(а):
А ветки есть, точнее листья?
select * from mtree_node where mtree_id=461

нету

Автор:  Ildar [ 06 окт 2016, 10:34 ]
Заголовок сообщения:  Re: Тайный потомок

Тогда удалить запись:
DELETE FROM module_tariff_tree where id=895 LIMIT 1
или обновить запись предка:
UPDATE module_tariff_tree SET parent_tree=0 where id=895 LIMIT 1

Автор:  Inspire [ 06 окт 2016, 13:58 ]
Заголовок сообщения:  Re: Тайный потомок

Сделал, получилось удалить. Спасибо.
parent_tree=0 - это означает без наследников?

Еще есть один тариф. В нем при удалении модуля в клиенте вылезает такая же ошибка. Но в отличие от предыдущего у него в результатах запроса есть наследники. Проблема как я выяснил в том, что в одном из наследников в базе указан cid договора, которого не существует. Мистика :)
Вот скрин
Вложение:
Без имени-2.png
Без имени-2.png [ 104.65 КБ | Просмотров: 12415 ]


Что порекомендуете делать?

Автор:  Ildar [ 06 окт 2016, 14:05 ]
Заголовок сообщения:  Re: Тайный потомок

Да, есть косяк, он исправлен пока только в 7.0. При удалении договора не удалялись персональные тарифы.
Чтобы проще было удалить тариф со всеми узлами, присвойте cid к существующему договору, далее зайдите в этот договор и удалите тариф.

Автор:  Ildar [ 06 окт 2016, 14:08 ]
Заголовок сообщения:  Re: Тайный потомок

Inspire писал(а):
parent_tree=0 - это означает без наследников?

Да, точнее без предка.

Автор:  Ildar [ 06 окт 2016, 14:36 ]
Заголовок сообщения:  Re: Тайный потомок

Получить все висячие персональные тарифы:

Код:
SELECT * FROM contract_tree_link AS ctl
 LEFT JOIN contract AS c ON c.id=ctl.cid
 WHERE c.id IS NULL

Автор:  Inspire [ 06 окт 2016, 16:10 ]
Заголовок сообщения:  Re: Тайный потомок

Ок, разобрался. Собственно ради чего я все это затеял - это сменить во всех тарифах модуль dialup на Inet. Может, можно это sql запросом сделать? А то тарифов многовато

Автор:  Ildar [ 06 окт 2016, 16:20 ]
Заголовок сообщения:  Re: Тайный потомок

А у вас они все персональные? Думаю в любом случае просто sql не получиться, сомневаюсь что структура всех узлов и значений будет идентична между двумя модулями( а так, конечно достаточно было бы изменить mid ).
Нужно будет писать скрипт который пробежит по дереву тарифа( если они все шаблонные ) возьмет нужные значения и создаст на основе них тариф для inet и удалит старый(ветку либо тариф)

Автор:  Inspire [ 06 окт 2016, 16:35 ]
Заголовок сообщения:  Re: Тайный потомок

По структуре только расширяющий модуль dialup на Inet надо заменить. Поэтому все получилось. Спасибо вам. Помогли.

Автор:  Inspire [ 06 окт 2016, 16:58 ]
Заголовок сообщения:  Re: Тайный потомок

Кнопку оповестить об изменениях не надо будет в этом случае нажимать?

Автор:  Ildar [ 06 окт 2016, 17:06 ]
Заголовок сообщения:  Re: Тайный потомок

Скорее всего надо. Либо перезапустите Accounting после всех изменений. Планировщик тоже не узнает до следующей перезагрузки, но на вас это не должно отразиться, вроде, это же не npay.

Автор:  Inspire [ 07 окт 2016, 14:28 ]
Заголовок сообщения:  Re: Тайный потомок

А что можно сделать с глючными тарифами, у которых нет дерева на соответствующей вкладке в клиенте?
Проблема в том, что они не удаляются. Отвечает ошибкой "не найдено дерева тарифа"
Вложение:
Безымянный.png
Безымянный.png [ 7.27 КБ | Просмотров: 12391 ]


Может, просто удалить запись с тарифом в табилице?
Вложение:
Безымянный1.png
Безымянный1.png [ 11.54 КБ | Просмотров: 12391 ]

Автор:  Ildar [ 07 окт 2016, 16:01 ]
Заголовок сообщения:  Re: Тайный потомок

Что-то у вас не здоровое происходит с тарифами.
Да, удалите.

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