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

Список наборов индивидуальных ставок#

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

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

Точки входа#

  • пункт Справочники -> Индивидуальные ставки в меню приложения. Отображается пользователю с правами

Интерфейс#

Макет

Таблица Наборов индивидуальных ставок#

individualRateSet.schema.json

Поле таблицы Атрибут объекта
Дата individualRateSet.notValidBefore, individualRateSet.notValidAfter. Если даты не указаны, отображается -
Партнер individualRateSet.partner.name
Клиент Для ФЛ: individualRateSet.customer.person.fio,
Для ИП: ИП {individualRateSet.customer.person.fio}
для ЮЛ:individualRateSet.customer.сompany.mame
Область действия individualRateSet.scope
Статус individualRateSet.status
  • таблица отображается с пагинацией
  • Записи в таблице отсортированы по убыванию по полю individualRateSet.changeAt (последние измененные наборы сверху)
  • пользователи с правом VIEW_INDIVIDUAL_RATE_ALL - видят все записи
  • пользователи с правом VIEW_INDIVIDUAL_RATE
    • с ролью AGENT - видят только "свои" записи (в которых individualRateSet.agent совпадает со связанным с пользователем агентом)
    • с ролью PARNTER - видят только "свои" записи (в которых individualRateSet.partner совпадает со связанным с пользователем партнером)

Фильтрация записей#

При вводе значения система фильтрует наборы по вхождению введенного значения в - ИНН individualRateSet.customer.company.inn, individualRateSet.customer.person.inn - Название individualRateSet.customer.company.fullName - ФИО individualRateSet.customer.person.fio

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

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

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

    • активна если заполнено хотя бы одно поле панели фильтров
    • При нажатии:
      • если в полях указаны некорректные значения (например некорректный формат даты), фильтр не применяется, поле подсвечивается
      • панель скрывается
      • список фильтруется в соответствии с заданными значениями фильтров
      • над таблицей отображаются чипсы с применёнными фильтрами
      • на кнопе вызова панели фильтров отображается индикатор
  • Область действия

    • выбор из списка: Одна заявка/Все заявки. Поиск по individualRateSet.scope
  • Агент

    • мультиселект из справочника агентов
    • Исполнитель, наблюдатель, комплаенс офицер, партнер могут выбрать любого агента
    • Агент может выбрать только себя
    • Поиск по individualRateSet.agent
  • Партнер

    • мультиселект из справочника партнеров
    • Исполнитель, наблюдатель, комплаенс офицер, агент могут выбрать любого партнера
    • Партнер может выбрать только себя
    • Поиск по individualRateSet.partner
  • Статус

    • мультиселект из всех возможных статусов запросов от клиента и от партнёра
    • фильтр по статусам
    • для статусов APPROVED, ACTIVE, EXPIRED при фильтрации так же учитываются даты, указанные в условиях отображения статуса
  • Период Дата начала

    • поиск по вхождению notValidBefore в указанный в фильтре период (включительно указанные даты).
    • если указано только начало периода, то система ищет запросы у которых notValidBefore >= указанному значению
    • если указано только окончание периода, то система ищет запросы у которых notValidBefore <= указанному значению
    • если любая дата некорректная — подсвечиваем поле, не пишем текст ошибки.
    • eсли в диапазоне дат дата конца меньше даты начала, система подсвечивает оба поля, пишет под ними ошибку Первая дата должна быть меньше или равна второй
    • если есть ошибки в веденных датах, система не применяет фильтр.
    • минимальное значение даты 01.01.1900
    • максимальное значение даты 31.12.2100
    • если указана хотя бы одна дата, то запросы, в которых это поле не заполнено, не выбираются системой
  • Период Дата окончания

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

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

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

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

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

Макет

Если в индивидуальных ставках еще нет ни одной записи, вместо таблицы отображается страница "Индивидуальных ставок пока нет" с кнопкой добавления.

Добавление Набора индивидуальных ставок#

Просмотр и редактирование Набора индивидуальных ставок#

Выгрузка реестра индивидуальных ставок#

  • Кнопка Выгрузить
  • отображается пользователю с правом EXPORT_INDIVIDUAL_RATE_LIST
  • активная если в списке есть строки
  • При нажатии на кнопку пользователем, система:
    • отображает лоадер на кнопке, делает кнопку недоступной
    • формирует excel-файл
    • если произошла техническая ошибка, показывает баннер технической ошибки над списком запросов
    • сохраняет сформированный excel-файл на устройство пользователя, возвращает кнопку в активное состояние.
    • нгазвание скачиваемого файла Индивидуальные ставкаи {{текщая дата}}.xlsx

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

  • В реестр выгружаются запросы, соответствующие текущему фильтру в списке запросов
  • Страница в excel защищена от редактирования, кроме колонки Дата окончания
  • В Exсel можно менять ширину колонок и высоту строк
  • Название полей и выгружаемые атрибуты:
Название поля Значение
id individualRateSet.id. после скрыто в excel
ИНН - для ЮЛ: customer.company.name
- для ФЛ/ИП: customer.company.inn
Название клиента Если клиент указан в individualRateSet.customer
- для ЮЛ: customer.company.name
- для ФЛ: customer.person.fio
- для ИП: ИП {customer.person.fio}
Всего договоров Общее количество договоров клиента с агентом individualRateSet.agent
Подписано договоров Количество договоров клиента с агентом individualRateSet.agent в статусе статус SIGNED
НЕТ - если нет договора
Агент individualRateSet.agent
Статус Согласно логике описанной запросах от клиента и запросах от партнера
Ставки в однй ячейке все строки individualRateSet.rates[]
- каждая строка c с новой строки
- формат строки {currencyCustomer; currency; country; minAmount - maxAmount; percent%; minimumRateThreshold}
- если какое-то из значений отсутствует, на его месте выводится прочерк
Область действия individualRateSet.scope
Дата начала individualRateSet.notValidBefore
Дата окончания individualRateSet.notValidAfter
Комментарий individualRateSet.comment

Загрузка даты окончания из файла#

Кнопка Установить дату окончания

Диалоговое окно загрузки#

Макет

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

  • Отображается если файл ещё не выбран
  • При нажатии на кнопку:
    • пользователь выбирает файл. Может выбрать только файлы XLSX, не более 10MB. Шаблон для загрузки - тот же файл, который выгрузил
    • система проверяет что файл соответствует формату и размеру.
      • если проверка не выполняется, система отображает ошибку (макет)
      • если возникала техническая ошибка, отображается баннер на диалоговом окне (макет)

Кнопка Удалить выбранный файл

  • Отображается если файл выбран
  • при нажатии на кнопку название выбранного файла скрывается, отображается кнопка Загрузить

Кнопка Отмена

  • активна всегда
  • при нажатии форма закрывается, данные из выбранного файла не сохраняются

Кнопка Сохранить

  • активна если выбранный файл прошёл проверки размера и формата (см. кнопку Загрузить), и система не обнаружила ошибки
  • при нажатии пользователем на кнопку, система:
    • во время обработки отображает лоадер на кнопке, все кнопки не активны, диалоговое окно закрыть нельзя
    • построчно выполняет проверки (тех строк, где дата изменилась относительно individualRateSet.noValidAfter). При нахождении первый ошибочной строки, показывает сообщение пользователю, все остальные строки не проверяет:
      • колонки id, ИНН, Дата окончания должны присутствовать в файле. Если проверка не выполняется, показывает сообщение: Формат файла не соответствует шаблону
      • в колонке id, ИНН значения должны быть заполнены. Если проверка не выполняется, показывает сообщение: Не заполенено поле {навзание поля}
      • в колонке id должны быть указаны значения, которые существуют в системе. Если проверка не выполняется, показывает сообщение: ИНН {ИНН}: не найден идентификатор запроса на индивидуальную ставку
      • в колонке Дата окончания дата должна быть либо пустой, либо соответствовать формату DD.MM.YYYY. Если проверка не выполняется, показывает сообщение: Неверный формат дат. Измените формат на ДД.ММ.ГГГГ
      • в колонке Дата окончания если дата указана, она должна быть больше чем individualRateSet.individualRateSet. Если проверка не выполняется, показывает сообщение: ИНН {ИНН}: Дата начала не может быть больше даты окончания
      • в колонке Дата окончания если дата указана, она должна быть больше или равна сегодня. Если проверка не выполняется, показывает сообщение: ИНН {ИНН}: Дата должна быть сегодня или позже
      • в колонке Дата окончания если дата не может быть очищена, т.е. её могут либо поменять, либо оставить без изменений. Если проверка не выполняется, показывает сообщение: ИНН {ИНН}: Дата окончания должна быть указана
      • Запрос должен иметь individualRateSet.scope = ALL_ORDERS. Если проверка не выполняется, показывает сообщение: ИНН {ИНН}: ставка должна иметь область действия "На все заявки"
      • Запрос должен быть в статусе APPROVED (сохраненное значение). Если проверка не выполняется, показывает сообщение: ИНН {ИНН}: ставка не согласована
      • Не должно быть для клиента пересекающегося по датам согласованного запроса на этого же агента. Если проверка не выполняется, показывает сообщение: ИНН {ИНН}: нельзя изменить ставку с датой начала {дата}, так как есть более поздняя утвержденная
      • Если в файле нет ни одной строки измененной датой или файл пустой, показывает сообщение: В файле нет данных для загрузки
    • для каждой строки из файла, находит запрос с указанным id
      • обновляет в нем дату окончания из файла
    • показывает обновленную таблицу запросов.
    • показывает оповещение Даты окончания ставок обновлены
    • загруженный файл система не сохраняет