Возможности:
Пользователь (провайдер) сам задает схему адресов. Структура - линейная. Из обязательных уровней только дом (последний уровень, который соединяет новые адреса с уже существующей таблицей builds.
Для работы используются таблицы (названия приблизительные):
levels - Уровни структуры адресов (например 1-Страна, 2-Город, 3-Улица, 4-Дом ). Для каждого уровня указывается название уровня и имя переменной (для использования в шаблонах)
values - ноды (узлы) адреса. Сохранены в виде дерева. Каждое значение имеет 2 параметра - уровень и родительский элемент (ссылка на элемент более высокого уровня). Для примера значение "улица Бандеры" будет иметь уровень 3 (улица) и ссылку на родительский элемент "город Коломыя"
main - в этой таблице для каждого location_id прописываются значения для каждого из уровней.
Для схемы из четырех уровней для каждого пользователя будет четыре записи в таблице.
Шаблон изменения и отображения адреса в веб форме планирую заменить строкой с полным адресом и кнопкой изменения. При нажатии открывается модальное окно с выбором адреса, после закрытия модального окна в форму подставляется location_id выбранного адреса.
Для отображения в документах и шаблонах данные можно получить с помощью user→info() , имя ключей хеша берется из таблицы уровней.