Как связать зависимые списки из разных типов материалов?

Аватар пользователя Funtik44 Funtik44 17 июня в 14:52

Всем привет!

Попробую объяснить, чего требуется:

На Drupal 7 реализую процесс заведения заявки к рамочному соглашению (закупка). Т.е. пользователи будут выполнять следующие действия:

1. Роль 1. Привязана к определенному департаменту организации. Создаёт ноду - заявка. Заполняет форму и первым шагом выбирает договор (отдельный тип материала, имеет свой набор полей). Выбор договора система должна предлагать из всех договоров, привязанных к его департаменту (привязка - отдельный процесс). Т.е. пользователь видит не весь реестр договоров, а только часть, должен сработать определенный фильтр.

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

3. Далее указывает команду (так же отдельный тип материала с привязкой к выбранной системе или нескольким системам).

4. Далее выбирает позиции команды (так же отдельный тип материала с привязкой к выбранной команде или командам) и т.д. У каждой позиции, это по сути роль - есть привязанная ставка (также отдельный тип материала).

5. Далее по заявке указывает диапазон дат.

6. После заполнения формы, система должна автоматически рассчитать сумму заявки по выбранным позициям и за указанный диапазон дат.

7. Когда заявка заполнена, пользователь отправляет её на согласование Роли 2.

8. Роль 2 может просмотреть заявку, согласовать, отклонить с комментарием или отправить на доработку (после чего Роль 1 корректирует и отправляет на повторное согласование).

И т.д.

Такое вообще на drupal можно реализовать? Он потянет? Самый важный вопрос - как выстроить взаимосвязь полей, которые по сути являются отдельными типами материалов с определенными фильтрами?

Дополнительные вопросы:

1. Какой модуль лучше использовать для математических расчетов (сумма по заявке, различные проценты от суммы и т.д.)?

2. Какой модуль использовать для создания процесса, связанного с заявкой. Т.е. одна роль создала объект, другая дополнила, третья согласовала, четвёртая утвердила или отправила на доработку?

Комментарии

Аватар пользователя ivnish ivnish 17 июня в 15:00

Да, можно использовать. Да потянет.

На одном контрибе такого не сделать, нужно будет и кастом писать, особенно для расчетов

Так как это новый проект, рекомендую не мучать древнюю семерку, а использовать современный Drupal 9.2

Аватар пользователя ivnish ivnish 19 июня в 9:17

Каких таких необходимых? Всё есть, просто некоторые популярные модули заменены ныне другими популярными

Аватар пользователя Funtik44 Funtik44 19 июня в 8:21

То, что потянет хорошо, пол дела сделано, а какие модули порекомендуете использовать?

Аватар пользователя Funtik44 Funtik44 19 июля в 21:33

Благодарю! Подскажите пожалуйста, а вместо полей-списков можно использовать реестры созданные на основе других типов материала?

Например создаю заявку, в которой необходимо выбрать договор, а договор это отдельный тип материала?

Аватар пользователя marassa marassa 19 июня в 12:17
1

Funtik44 wrote: на 9 нет большинства модулей необходимых я так понимаю?

Рекомендую перестать слушать людей, которые сделали своей профессией нытьё по поводу того как всё было замечательно в семёрке (Windows 98, Internet Explorer, Fortran и т.п.) и как всё стало ужасно в восьмёрке/девятке (Windows 10, Chrome, Java и т.п.).
Всё, что реально нужно (и даже больше), в девятке есть. Стало меньше возможностей говнокодить, к чему так привыкли некоторые адепты семерки.

Аватар пользователя ivnish ivnish 20 июня в 10:58

Вот тут соглашусь. Необходимых модулей нет только у нытиков. У всех остальных всё есть Smile

Аватар пользователя marassa marassa 19 июля в 22:17

Funtik44 wrote:
Благодарю! Подскажите пожалуйста, а вместо полей-списков можно использовать реестры созданные на основе других типов материала?
Например создаю заявку, в которой необходимо выбрать договор, а договор это отдельный тип материала?

А Вы не пробовали прочесть текст по моей первой ссылке? Ну хотя бы первые два абзаца? Или просто поставить модуль и попробовать? Я бы на Вашем месте сделал именно так.