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

Таблица заявок#

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

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

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

Точки входа#

  • пункт Заявки в меню

Процесс#

Общий вид#

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

Интерфейс#

Таблица заявок#

макет

Поле таблицы Атрибут объекта
Чекбокс Выбор заявки для дальнейшей массовой обработки
Дата заявки order.submittedAt. Если в нем значение отсутствует, то order.createdAt
Номер заявки первой строкой: order.docuement.number. Может отсутствовать значение, в этом случае показывается прочерк
второй строкой: Фамилия И.О. исполнителя из order.document.userEmployee.fio. Строка отображается пользователю с правом VIEW_HIDDEN_FROM_CUSTOMER_INFO
Клиент первой строкой: Для физлиц/ИП: order.docuement.customer.person.fio, для юрлиц:order.docuement.customer.сompany.mame
Пользователю с правом VIEW_HIDDEN_FROM_CUSTOMER_INFO: если у клиента установлен признак customer.isPriority = true, рядом названием отображается звезда. При наведении курсора на звезду отображается хинт Приоритетный клиент
второй строкой: название партнера из order.docuement.customer.partner, Строка отображается пользователю с правом VIEW_HIDDEN_FROM_CUSTOMER_INFO
Сумма Сумма из order.payment.amountCounterparty + код валюты из order.payment.currencyCounterparty
Статус order.status. Статусная модель заявки
второй строкой: Рекламации: {N}/{K} закрыто. Строка отображается пользователю с правом VIEW_HIDDEN_FROM_CUSTOMER_INFO
{N} - количество рекламаций в статусе CLOSED в заявке, {K} - всего рекламаций в заявке
Если рекламаций в заявке нет, вторая строка не отображается
  • Модель document-order: md / json
  • Структура таблицы для всех ролей и прав отображается одинаково
  • Записи в таблице отсортированы по убыванию по полю order.document.changedAt - по дате и времени последнего изменения заявки (поле в таблице не отображается)
  • При клике на строку открывается деталка заявки. Отображение деталки зависит от статуса заявки и роли пользователя
  • Пользователь с правом VIEW_ORDER
    • ролью CUSTOMER видит только "свои" заявки, у которых клиент order.document.customer связан с пользователем
    • ролью AGENT видит только "свои" заявки, у которых агент order.contract.document.agent - соответствуют пользователю
    • ролью PARTNER видит только заявки от "своих" клиентов (у которых в карточке указан тот же партнёр, с которым связан пользователь-партнёр)
  • Пользователь с правом VIEW_ORDER_ALL видят все заявки
  • Фильтры отображаются только пользователю с правом USE_ORDER_FILTER
  • Кнопка Создать заявку отображается только пользователю с правом SUBMIT_ORDER. Инициализирует процесс создания заявки
  • Окно отображения пустого списка аналогично окну Нет ни одного клиента

Выбор заявок#

Для пользователей с правом USE_ORDER_MULTISELECT в списке заявок первой колонкой отображается чекбокс, которым отмечаются строки для дальнейшей обработки при массовых операциях.

При клике на чекбокс в заголовке (макет):

  • Если до клика в заголовке выбраны не Все строки (только часть или ни одной), то выбираются Все строки (устанавливается чекбокс). В заголовке чекбокс img_64.png
  • Если до клика уже выбраны Все строки , то выбор со всех строк снимается. В заголовке чекбокс img_63.png

При установке чекбокаса в строке:

  • Если после установки/снятия выбраны все строки, то в заголовке чекбокс img_64.png
  • Если после установки/снятия выбраны не все строки, то в заголовке чекбокс img_62.png
  • Если после установки/снятия не выбрано ни одной строки, то в заголовке чекбокс img_63.png

Если выбрана хотя бы одна строка, под списком отображается панель:

  • Панель фиксируется при скролле
  • На панели отображается количество выбранных строк
  • при выборе/отмене выбора строки, счетчик обновляется

На нижней панели отображается кнопка с выпадающим списком кнопок для запуска массовых операций над заявками

Поиск по вхождению введенного значения в атрибутах:

  • номер order.document.number
  • клиент:
    • для заявок от юрлиц: order.document.customer.company.fullName
    • для заявок от физлиц/ИП order.document.customer.person.fio
  • ИНН клиента
    • для заявок от юрлиц: order.document.customer.company.inn
    • для заявок от физлиц/ИП order.document.customer.person.inn
  • Очищение строки поиска сбрасывает фильтр по Номеру и Клиенту заявки.

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

  • Отображается только пользователю с правом USE_ORDER_FILTER

  • Кнопки Применить и Сбросить доступны если панели было изменено значение хотя бы в одном поле

  • Фильтры применяются при нажатии на кнопку Применить
  • При нажатии Сбросить:
    • все значения фильтров очищаются
    • быстрый поиск остается
    • панель фильтров закрывается
    • строки в таблице сразу фильтруются.

Макет

По заявке#

  • Тип - выбор из списка: Экспорт/Импорт. Поиск по order.direction

  • Период создания - поиск по вхождению даты заявки в указанный в фильтре период (включительно указанные даты).

    • дата заявки - значение order.submittedAt, а при его отсутствии - order.document.createdAt
    • если указано только начало периода, то система ищет заявки у которых даты заявки >= указанному значению
    • если указано только окончание периода, то система ищет заявки у которых даты заявки <= указанному значению
    • если любая дата некорректная — подсвечиваем поле, не пишем текст ошибки.
    • eсли в диапазоне дат дата конца меньше даты начала, система подсвечивает оба поля, пишет под ними ошибку Первая дата должна быть меньше или равна второй
    • если есть ошибки в веденных датах, система не применяет фильтр.
    • минимальное значение даты 01.01.1900
    • максимальное значение даты 31.12.2100
  • Статус - мультиселект, поиск по выбранным статусам заявки в order.status. Статусная модель

  • Агент - мультиселект, поиск по выбранному агенту в order.contract.document.agent

    • выбор из списка всех агентов
    • В выпадашке отображаются agent.fullName
  • Исполнитель - мультиселект из списка сотрудников с ролями CONTRACTOR и SENIOR_CONTRACTOR

    • первым пунктом в списке отображается Не назначен. Отображается в автокомплите так же как и остальные пункты (находится при поиске, не отображается, если введенное не содержится части из Не назначен)
    • поиск по пользователям выбранных сотрудников в order.document.userEmployee
  • Партнер - мультиселект из списка партнеров. Поиск по клиентам с указанными партнерами.

  • Комплаенс офицер - мультиселект из списка сотрудников с ролью COMPLIANCE и SENIOR_COMPLIANCE.

    • первым пунктом в списке отображается Не назначен. Отображается в автокомплите так же как и остальные пункты (находится при поиске, не отображается, если введенное не содержится части из Не назначен)
    • поиск по назначенному Комплаенс офицеру в order.userCompliance
  • Есть новые сообщения

  • если значение = true, фильтрует заявки у которых есть непрочитанные сообщения для роли текущего пользователя, для роли CONTRACTOR поиск непрочитанных выполняется только если пользователь назначен ответственным за темы в переписке, и только в темах где он является ответственным
  • если значение = false, фильтр не применяется

По платежу#

  • Сумма Платежа - поиск по вхождению суммы заявки order.amountOperatingCostCounterpartyCurrency в указанный промежуток (включительно указанные суммы).

    • если указано только сумма От, то система ищет заявки у которых order.amountOperatingCostCounterpartyCurrency >= указанному значению
    • если указано только сумма До, то система ищет заявки у которых order.amountOperatingCostCounterpartyCurrency <= указанному значению
    • Если сумма До меньше чем сумма От, система подсвечивает оба поля, пишет под ними ошибку Первая сумма не может быть больше второй
    • если есть ошибки в веденных суммах, система не применяет фильтр
    • минимальное значение - 0,00
    • максимальное значение - 99 999 999 999,99
  • Валюта - мультиселект из локального справочника валют. поиск по выбранным валютам в order.currencyCounterparty.

  • Получатель - инпут, поиск по вхождению в order.counterparty.name

  • Банк SWIFT - поиск по order.payment.bank

    • плейсхолдер Введите SWIFT или название
    • пользователь вводит в поле код SWIFT, название банка или их часть
    • система отображает подсказку для выбора банка из локального справочника SWIFT. Отображаются банки у которых код SWIFT или название содержат введённое значение
    • пользователь выбирает из предложенного списка нужный банк
    • система подставляет и отображает в поле фильтра наименование выбранного банка swift.name
    • заявки фильтруются по совпадению выбранного банка и значения в order.payment.bank
  • Банк РФ - поиск по order.payment.bankCustomer

    • плейсхолдер Название, Бик или SWIFT
    • пользователь вводит в поле БИК, или код SWIFT, или название банка, или их часть
    • система отображает подсказку для выбора банка из локального справочника Банков РФ. Отображаются банки у которых код SWIFT, БИК или название содержат введённое значение
    • пользователь выбирает из предложенного списка нужный банк
    • система подставляет и отображает в поле фильтра наименование выбранного банка bank.name
    • заявки фильтруются по совпадению выбранного банка и значения в order.payment.bankCustomer
  • Номер счета - инпут, поиск по вхождению в order.payment.accountNumber.

  • Назначение - инпут, поиск по вхождению в order.payment.purpose.

Инвойс, контракт#

  • Тип продукта - поиск по вхождению в order.additionalInfo.productType или в order.additionalInfo.productTypeOther

  • дата инвойса/контракта - поиск по совпадению значения в order.additionalInfo.documentDate.

    • минимальное значение даты 01.01.1900
    • максимальное значение даты 31.12.2100
  • номер инвойса/контракта - поиск по вхождению в order.additionalInfo.documentNum или в одну из строк order.additionalInfo.documents[number]

По документам#

  • Есть - поиск заявок в которых есть указанные файлы
    • мультиселект из списка:
      • Акт-отчет - по наличию файлов в группе Акт-отчет в импортных и в экспортных заявках
      • Документы к отправке субагенту - по наличию файлов в группе Документы к отправке субагенту только в импортных заявках
      • Инвойс - по наличию файлов в группе Инвойс в экспортных заявках или Инвойс-поручение в импортных заявках
      • Подтверждающие документы - по наличию файлов в группе Подтверждающие документы в импортных и в экспортных заявках
      • Поручение - по наличию файлов в группе Поручение только в экспортных заявках
      • Поручение субагенту - по наличию файлов в группе Поручение субагенту только в импортных заявках
      • Прочее - по наличию файлов в группе Прочее только в импортных заявках
  • Нет - поиск заявок в которых нет указанных файлов
    • мультиселект, аналогична полю Есть

По комиссии#

  • Ниже предельного значения ставки -
    • если значение = true, фильтрует заявки у которых заполнено order.isBelowCost = true.
    • если значение = false, фильтр на order.isBelowCost не накладывается

По рекламации#

  • Активная

    • если значение = true, фильтрует заявки у которых есть рекламации в стусе отличном от CLOSED.
    • если значение = false, фильтр по статусу рекламаций не накладывается
  • Претензия

    • если значение = true, фильтрует заявки у которых есть рекламации с признаком isClaim = true.
    • если значение = false, фильтр по признаку рекламаций не накладывается
  • Если включены и Активные и Претензия, то отображаются только заявки в которых есть "Активные претензии"

  • В чипсах в списке заявок для фильтров по рекламации отображается:
    • если выбрана только "Активная", то Рекламация: Активная
    • если выбрана только "Претензия", то Рекламация: Претензия
    • если выбраны обе "Претензия", то Рекламация: Активная + 1

По клиенту#

  • Приоритетный
    • если значение = true, фильтрует заявки у которых у клиента установлен признак isPriority = true.
    • если значение = false, фильтр по признаку приоритетного клиента не накладывается

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

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

img_3.png

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

Выгрузка списка заявок в Excel#

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

  • отображается пользователю с правом EXPORT_ORDER_LIST
  • активная если в списке есть строки
  • При нажатии на кнопку пользователем, система:
    • отображает лоадер на кнопке, делает кнопку недоступной
    • формирует excel-файл
    • если произошла техническая ошибка, показывает баннер технической ошибки над списком заявок
    • сохраняет сформированный excel-файл на устройство пользователя, возвращает кнопку в активное состояние.

Наполнение файла#

  • В реестр выгружаются заявки, соответствующие текущему фильтру в списке заявок
  • В файле две закладки:
    • ИМПОРТ - содержит список заявок на отправку денег
    • ЭКСПОРТ - содержит список заявок на получение денег
  • Название поелй и выгружаемые атрибуты см. в файле
  • Если в результате применения фильтра один из типов заявок отсутствует, то закладка выгружается пустой, на ней только первая строка с заголовком
  • Если в результате применения фильтра заявки отсутствуют, то файл выгружается пустой, на обеих закладках только первая строка с заголовком

Состояние "Нет ни одной заявки"#

Если в базе еще нет ни одной заявки, вместо таблицы отображается страница Заявок пока нет с кнопкой Создать заявку. Поведение кнопки такое же, как у аналогичной кнопки в таблице заявок.

Копка создать заявку#

Видна только при наличии у пользователя права SUBMIT_ORDER. Инициализирует процесс создания заявки

Полный набор макетов

Все макеты и состояния по ссылке Макеты Figma: Список заявок