Перейти к содержанию

Таблица договоров#

Пользователи процесса#

  • пользователь с ролью CUSTOMER
  • пользователь с ролью CONTRACTOR
  • пользователь с ролью OBSERVER
  • пользователь с ролью COMPLIANCE
  • пользователь с ролью AGENT
  • пользователь с ролью PARTNER

Предусловия#

Точки входа#

  • пункт Договоры в меню

Процесс#

Общий вид#

# Шаг
1 Пользователь нажимает на пункт Договоры в меню приложения.
2 Система отображает первые 25 договоров.
3 Пользователь нажимает на ссылку перехода на следующую страницу.
4 Система отображает следующие 25 договоров.
5 Пользователь нажимает на ссылку перехода на предыдущую страницу.
6 Система отображает предыдущие 25 договоров.
7 Пользователь вводит в строку поиска часть номера договора.
8 Система отображает договоры с номером, часть которого совпадают с введенным значением.
9 Пользователь вводит в строку поиска часть ФИО или названия компании клиента.
10 Система отображает договоры клиентов, у которых часть ФИО или названия компании совпадает с введенным значением.
11 Пользователь вызывает панель фильтров
12 Система отображает панель фильтров
13 Пользователь указывает значения фильтров (сразу несколько или поочередно, добавляя и убирая)
14 Система отображает отфильтрованные договоры (фильтры дополняют друг друга)

Интерфейс#

Таблица договоров#

img_3.png

Поле таблицы Атрибут объекта
Дата договора 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 видит только договоры от "своих" клиентов (у которых в карточке указан тот же партнёр, с которым связан пользователь-партнёр)
  • Пользователь с правом 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

Очищение строки поиска сбрасывает фильтр по Номеру и Клиенту.

Панель фильтров#

img_4.png

  • Отображается только пользователю с правом 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) — подсвечиваем поле, не пишем текст ошибки
    • если в диапазоне дат дата конца меньше даты начала, система подсвечивает оба поля, пишет под ними ошибку Первая дата должна быть меньше или равна второй
    • если есть ошибки в веденных датах, система не применяет фильтр.
    • Отображение в чипсах
      • если указана только начальная дата периода - Протокол согласован с: {дата с},
      • если указана только конечная дата периода - Протокол согласован по: {дата по}
      • если указаны обе даты - Протокол согласован: {дата с} – {дата по}

Примененные фильтры#

Примененные значения фильтров отображаются над таблицей: img.png

  • При удалении одного из фильтров, система отображает список договоров по оставшимся фильтрам.
  • При нажатии "Сбросить фильтр", система очищает все фильтры, т.ч. быстрый поиск по Номеру договора и Клиенту
  • При повторном открытии панели фильтров в полях отображаются ранее установленные значения
  • Если по указанным фильтрам не найдено ни одного договора, то показывается изображение Не найдено:

img_2.png

Состояние "Нет ни одного договора"#

Если в базе еще нет ни одного договора, вместо таблицы отображается:

img_1.png

Выгрузка реестра договоров#

Кнопка Выгрузить

  • макет
  • отображается пользователю с правом 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 первого найденного пользователя у клиента