Биллинговая система Nodeny

Главная категория => Ревизии => Тема начата: Efendy от 31 Июля 2015, 00:24:57



Название: rev 337. Зависимые выпадающие списки
Отправлено: Efendy от 31 Июля 2015, 00:24:57
UPDATE: Внимание. Теперь делается проще (значения добавляются прямо в данных абонента) http://nodeny.com.ua/wiki/index.php/%D0%97%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D1%8B%D0%B5_%D0%B2%D1%8B%D0%BF%D0%B0%D0%B4%D0%B0%D1%8E%D1%89%D0%B8%D0%B5_%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B8


Наконец-то добавлены зависимые поля, например, можно создать поля "город" и "улица" и сделать так чтоб в выпадающем списке улиц отображались только те, которые разрешены для данного города. Фича работает и при изменении данных абонента и при поиске.

Естественно, такое можно сделать не только для города и улицы, а, например, пол абонента и список имен (женских или мужских) - как пример.

Настраивается так:

  • Поле "город": имя в базе данных _adr_city, тип = выпадающий список,  тип объекта = city
  • Поле "улица": имя в базе данных _adr_street, тип = выпадающий список,  тип объекта = _adr_city:street
  • Создаем объекты city: ключ "kiev" -> значение "Киев", "lviv" -> "Львов" и т.д.
  • Создаем объекты street: ключ "kiev:1" -> значение "Прорезная", "kiev:2" -> "Героев Днепра", "lviv:1" -> "Армянская" и т.д.


На что обратить внимание: ключ в объекте city и ключ в объекте street должны быть одинаковыми, один в один, если хотите - можете города написать с большой буквы, но это всего-лишь ключи в базе. Двоеточие тоже обязательно. После него можно хоть число, хоть имя в латинице - это ключ в базе, как я уже сказал.

Тип объекта _adr_city:street означает: поле зависит от поля с именем _adr_city, а данные для выпадающего списка берутся из объектов street.

Обновились js файлы - возможно придется скопировать вручную у кого нет симлинка на папку htdocs.

Каскадную зависимость: поле1 зависит от поля 2, а то в свою очередь от поля 3, я еще не тестировал. Интересно, что получится. По идее должно работать



Название: Re: rev 337. Зависимые выпадающие списки
Отправлено: Warlock от 10 Августа 2015, 15:07:16
а есть что-то типа скриптика для перехода? просто сейчас город - это отдельная группа..


Название: Re: rev 337. Зависимые выпадающие списки
Отправлено: Efendy от 10 Августа 2015, 16:29:10
sql запросы - это пойдет взамен скриптов.

Код:
update data0 set _adr_city='kiev' where uid in(select id from users where grp=номер группы);

Код:
update users set grp=новый номер группы where grp=старый номер группы

Предварительно сделать бекап


Название: Re: rev 337. Зависимые выпадающие списки
Отправлено: Warlock от 10 Августа 2015, 21:34:55
sql запросы - это пойдет взамен скриптов.
Спасибо, вроде бы получилось.
а при таком раскладе возможно переделать услуги?. Т.к сейчас все клиенты в одной группе, нужно сделать, чтоб для каждого города был свой набор услуг.


Название: Re: rev 337. Зависимые выпадающие списки
Отправлено: Warlock от 12 Августа 2015, 14:30:47
Код:
update data0 set _adr_city='kiev' where uid in(select id from users where grp=номер группы);

Код:
update users set grp=новый номер группы where grp=старый номер группы
А возможно еще как-то перенести улицы?


Название: Re: rev 337. Зависимые выпадающие списки
Отправлено: Efendy от 12 Августа 2015, 15:49:02
как они оформлены?


Название: Re: rev 337. Зависимые выпадающие списки
Отправлено: Warlock от 13 Августа 2015, 09:13:29
как они оформлены?
доп.поле: _adr_street_gromovka (выпадающий список), Тип объекта: street_gromovka, далее улицы прописаны в Объектах street_gromovka.. (отображается для клиентов группы Громовка)
и таких групп в районе 10, со своим набором улиц


Название: Re: rev 337. Зависимые выпадающие списки
Отправлено: Efendy от 13 Августа 2015, 10:13:17
Бекап. Потом

Код:
update dictionary set k=concat('gromovka:',k), type='_adr_street' where type='_adr_street_gromovka';


Название: Re: rev 337. Зависимые выпадающие списки
Отправлено: Warlock от 13 Августа 2015, 14:23:33
Бекап. Потом

Код:
update dictionary set k=concat('gromovka:',k), type='_adr_street' where type='_adr_street_gromovka';
Спасибо, только чуток изменить пришлось
Код:
update dictionary set k=concat('gromovka:',k), type='street' where type='street_gromovka';
Только чего-то не хватает, когда открываю клиента, вот что пишет:
Код:
Админу: нет ни одного объекта типа street_gromovka
, а поле Улица осталось пустым... как-то можно чтоб клиенту заново старые улицы присвоились?


Название: Re: rev 337. Зависимые выпадающие списки
Отправлено: Warlock от 13 Августа 2015, 15:53:36
Код:
update data0 set _adr_street = _adr_street_gromovka where _adr_street_gromovka<>''
не помогло.
mysql> update data0 set _adr_street = _adr_street_gromovka where _adr_street_gromovka<>'';
Query OK, 45 rows affected (0.01 sec)
Rows matched: 45  Changed: 45  Warnings: 0
у клиентов перед полем улица предупреждение:
Необходимо выбрать одно из значений


Название: Re: rev 337. Зависимые выпадающие списки
Отправлено: Efendy от 13 Августа 2015, 18:08:49
Код:
update data0 set _adr_street = concat('gromovka:', _adr_street_gromovka) where _adr_street_gromovka<>''


Название: Re: rev 337. Зависимые выпадающие списки
Отправлено: Warlock от 14 Августа 2015, 08:54:13
Большое спасибо! все получилось.