Таблица договоров#
Пользователи процесса#
- пользователь с ролью CUSTOMER
- пользователь с ролью CONTRACTOR
- пользователь с ролью OBSERVER
- пользователь с ролью COMPLIANCE
- пользователь с ролью AGENT
- пользователь с ролью PARTNER
Предусловия#
- у роли пользователя есть право VIEW_CONTRACT или VIEW_CONTRACT_ALL
Точки входа#
- пункт
Договорыв меню
Процесс#
Общий вид#
| # | Шаг |
|---|---|
| 1 | Пользователь нажимает на пункт Договоры в меню приложения. |
| 2 | Система отображает первые 25 договоров. |
| 3 | Пользователь нажимает на ссылку перехода на следующую страницу. |
| 4 | Система отображает следующие 25 договоров. |
| 5 | Пользователь нажимает на ссылку перехода на предыдущую страницу. |
| 6 | Система отображает предыдущие 25 договоров. |
| 7 | Пользователь вводит в строку поиска часть номера договора. |
| 8 | Система отображает договоры с номером, часть которого совпадают с введенным значением. |
| 9 | Пользователь вводит в строку поиска часть ФИО или названия компании клиента. |
| 10 | Система отображает договоры клиентов, у которых часть ФИО или названия компании совпадает с введенным значением. |
| 11 | Пользователь вызывает панель фильтров |
| 12 | Система отображает панель фильтров |
| 13 | Пользователь указывает значения фильтров (сразу несколько или поочередно, добавляя и убирая) |
| 14 | Система отображает отфильтрованные договоры (фильтры дополняют друг друга) |
Интерфейс#
Таблица договоров#
| Поле таблицы | Атрибут объекта |
|---|---|
| Дата договора | contract.document.date |
| Номер договора | contract.docuement.number |
| Клиент | Для ФЛ: contract.document.customer.person.fio Для ИП: ИП {contract.document.customer.person.fio} Для ЮЛ: contract.document.customer.сompany.mame |
| Агент | contract.document.agent.сompany.mame |
| Статус | contract.status Статусная модель договора: индивидуального / типового |
| Доп. соглашения | {Подписано ДС}/{всего ДС} подписано, где: |
- {Подписано ДС} - количество привязанных к договору дополнительных соглашений, в статусе SIGNED |
|
- {всего ДС} - количество привязанных к договору дополнительных соглашений, не в статусах CANCELLED |
- Модель document-contract: md / json
- Структура таблицы для всех ролей и прав отображается одинаково
- Записи в таблице отсортированы по убыванию по полю
contract.document.changedAt(по дате и времени последнего изменения, новые всегда сверху, поле в таблице не отображается) - При клике на строку открывается деталка договора. Отображение деталки зависит от статуса договора и роли пользователя
- Пользователь с правом VIEW_CONTRACT:
- Для роли CONTRACTOR - видят только договоры, у которых
contract.document.userEmployeeсовпадает сuser.id. Сейчас этого права у роли нет, добавлено на случай изменения права VIEW_CONTRACT_ALL на VIEW_CONTRACT у исполнителя - Для роли CUSTOMER - видят только договоры, у которых клиент
contract.document.customerсвязан с пользователем - Для роли AGENT - видят только договоры, у которых
contract.document.agentсовпадает сuser.agent - Для роли PARTNER видит только договоры от "своих" клиентов (у которых в карточке указан тот же партнёр, с которым связан пользователь-партнёр)
- Для роли CONTRACTOR - видят только договоры, у которых
- Пользователь с правом VIEW_CONTRACT_ALL видят все договоры
- Окно отображения пустого списка аналогично окну Нет ни одного клиента
Строка поиска#
Поиск по вхождению введенного значения в атрибутах:
- номер
contract.document.number - клиент
- для договоров с ЮЛ:
contract.document.customer.company.fullName - для договоров с ФЛ/ИП:
contract.document.customer.person.fio
- для договоров с ЮЛ:
- ИНН клиента
- для договоров c ЮЛ:
contract.document.customer.company.inn - для договоров с ФЛ/ИП
contract.document.customer.person.inn
- для договоров c ЮЛ:
Очищение строки поиска сбрасывает фильтр по Номеру и Клиенту.
Панель фильтров#
-
Отображается только пользователю с правом USE_CONTRACT_FILTER
-
Кнопки
ПрименитьиСброситьдоступны если панели было изменено значение хотя бы в одном поле - Фильтры применяются при нажатии на кнопку
Применить -
При нажатии
Сбросить:- все значения фильтров очищаются
- быстрый поиск остается
- панель фильтров закрывается
- строки в таблице сразу фильтруются.
-
Тип договора - выбор из списка:
Экспорт/Импорт. Поиск поcontract.document.direction- при указанном значении, при наведении на полей, справа отображается крестик для очистки поля
-
Форма договора - выбор из списка
Типовой/ИндивидуальныйПоиск поcontract.form- при указанном значении, при наведении на полей, справа отображается крестик для очистки поля
-
Дата договора - поиск по вхождению
contract.document.dateв указанный в фильтре период (включительно указанные даты).- минимальное значение даты 01.01.1900
- максимальное значение даты 31.12.2100
- если указано только начало периода, то система ищет договоры у которых
contract.document.date>= указанному значению - если указано только окончание периода, то система ищет договоры у которых
contract.document.date<= указанному значению - если любая дата некорректная (например введено ДД.08.2024) — подсвечиваем поле, не пишем текст ошибки
- если в диапазоне дат дата конца меньше даты начала, система подсвечивает оба поля, пишет под ними ошибку
Первая дата должна быть меньше или равна второй - если есть ошибки в веденных датах, система не применяет фильтр.
- Отображение в чипсах
- если указана только начальная дата периода -
Дата договора с: {дата с}, - если указана только конечная дата периода -
Дата договора по: {дата по} - если указаны обе даты -
Дата договора: {дата с} – {дата по}
- если указана только начальная дата периода -
-
Статус - мультиселект, поиск по выбранным статусам договора в
contract.statusСтатусная модель договора -
Статус доп. соглашения - мультиселект, поиск всех договоров, у которых есть хотя бы одно доп. соглашение в указанных статусах
-
Агент - мультиселект, поиск по выбранному агенту в
contract.document.agent- выбор из списка всех агентов
- В выпадашке отображаются
agent.fullName
-
Протокол согласован поиск по вхождению
contract.disagreementProtocolApprovedAtв указанный в фильтре период (включительно указанные даты).- минимальное значение даты 01.01.1900
- максимальное значение даты 31.12.2100
- если указано только начало периода, то система ищет договоры у которых
contract.disagreementProtocolApprovedAt>= указанному значению - если указано только окончание периода, то система ищет договоры у которых
contract.disagreementProtocolApprovedAt<= указанному значению - если любая дата некорректная (например введено ДД.08.2024) — подсвечиваем поле, не пишем текст ошибки
- если в диапазоне дат дата конца меньше даты начала, система подсвечивает оба поля, пишет под ними ошибку
Первая дата должна быть меньше или равна второй - если есть ошибки в веденных датах, система не применяет фильтр.
- Отображение в чипсах
- если указана только начальная дата периода -
Протокол согласован с: {дата с}, - если указана только конечная дата периода -
Протокол согласован по: {дата по} - если указаны обе даты -
Протокол согласован: {дата с} – {дата по}
- если указана только начальная дата периода -
Примененные фильтры#
Примененные значения фильтров отображаются над таблицей:

- При удалении одного из фильтров, система отображает список договоров по оставшимся фильтрам.
- При нажатии "Сбросить фильтр", система очищает все фильтры, т.ч. быстрый поиск по Номеру договора и Клиенту
- При повторном открытии панели фильтров в полях отображаются ранее установленные значения
- Если по указанным фильтрам не найдено ни одного договора, то показывается изображение
Не найдено:
Состояние "Нет ни одного договора"#
Если в базе еще нет ни одного договора, вместо таблицы отображается:
Выгрузка реестра договоров#
Кнопка Выгрузить
- макет
- отображается пользователю с правом EXPORT_CONTRACT_LIST
- активная если в списке есть строки
- При нажатии на кнопку пользователем, система:
- отображает лоадер на кнопке, делает кнопку недоступной
- формирует excel-файл
- если произошла техническая ошибка, показывает баннер технической ошибки над списком запросов
- сохраняет сформированный excel-файл на устройство пользователя, возвращает кнопку в активное состояние.
- название скачиваемого файла
Договоры {{текщая дата}}.xlsx
Наполнение файла#
- В реестр выгружаются строки, соответствующие текущему фильтру в списке
- Название полей и выгружаемые атрибуты:
| Название поля | Значение |
|---|---|
| Название клиента | - для ФЛ: customer.person.fio |
- для ИП: ИП {customer.person.fio} |
|
| ИНН | - для ЮЛ: customer.company.inn |
- для ФЛ/ИП: customer.person.inn |
|
| КПП | - для ЮЛ: customer.company.name |
| - для ФЛ/ИП: пустое | |
| ОГРН | - для ЮЛ: customer.company.ogrn |
- для ИП: customer.person.ogrnip |
|
| - для ФЛ: пустое | |
| Дата договора | contract.document.date |
| Номер договора | contract.docuement.number |
| Форма договора | contract.form |
| Тип договора | contract.docuement.duration |
| Статус договора | contract.status |
| Статус клиента | customer.status |
| Статус пользователя | user.status первого найденного пользователя у клиента |



