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

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

Особенности сабмита формы

  • пользователь может сохранить запрос, даже если он не заполнил все обязательные поля
  • при сохранении (и, опосредованно, при отправке, так как отправка тригерит сохранение) валидируются заполненные поля на соответстиве типам и паттернам.
  • при отправке запроса проверяется заполнены ли все обязательные поля

  • нельзя сохранить запрос, если в нем есть заполненные поля, чьё содержимое не отвечает требованиям
  • можно сохранить запрос, если в нем не заполнены обязательные поля
  • нельзя отправить запрос, если в нем не заполнены обязательные поля

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

Статусная модель определяется системой после первого сохранения по роли пользователя, создавшего запрос individualRateSet.createdByRole:

Интерфейс#

для роли PARTNER: Макет для роли CUSTOMER: Макет

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

для роли PARTNER: Аналогично ссылке возврата в деталке клиента для роли CUSTOMER: отсутствует

Мэппинг полей#

individualRateSet.schema.json

Действует для:
Атрибут объекта: individualRateSet.scope
  • выбор из вариантов:
    • ONE_ORDER - Для одной заявки. Текст подсказки: После перехода заявки в статус "Исполнение" запрос считается завершённым.
    • All_ORDER - На все заявки. Текст подсказки отсутствует.
  • значение по умолчанию ONE_ORDER
Агент
Атрибут объекта: individualRateSet.agent
  • обязательное
  • выбор из
    • для роли PARTNER - списка активных агентов.
    • для роли CUSTOMER - списка агентов с которыми у партнера есть договор в статусе SIGNED
  • В выпадашке отображаются agent.fullName
Партнер
Атрибут объекта: individualRateSet.partner
  • недоступно для редактирования
  • не отображается на форме создания
  • заполняется системой при сохранении
Дата начала
Атрибут объекта: individualRateSet.notValidBefore
  • дата
  • отображается и обязательная если individualRateSet.scope = ALL_ORDER
  • предзаполняется текущей датой
  • в выпадашке дни меньше текущего дня - неактивны
  • текст ошибки при сохранении:
    • если введенное значение < текущей даты: Дата должна быть сегодня или позже
    • если введенное значение > Даты окончания: Дата начала не может быть больше даты окончания
Дата окончания
Атрибут объекта: individualRateSet.notValidAfter
  • дата
  • необязательная
  • отображается если individualRateSet.scope = ALL_ORDER
  • в выпадашке дни меньше текущего дня - неактивны
  • текст ошибки при сохранении:
    • если значение введено и введенное значение < текущей даты: Дата должна быть сегодня или позже
    • если значение введено и введенное значение < Даты начала: Дата начала не может быть больше даты окончания
Название клиента
Атрибут объекта: individualRateSet.customer
  • обязательное
  • при создании запроса клиентом:
    • отображается только если пользователь связан с несколькими клиентами
    • в выпадашке отображается список активных клиентов, связанных с пользователем
  • при создании запроса партнером
    • отображается всегда
    • в выпадашке отображается список активных клиентов, в карточке которых указан партнер связанный с текущим пользователм
Совокупный объём в месяц
Атрибут объекта: individualRateSet.monthlyAmount
  • обязательное
  • инпут
  • число
  • минимальное значение - 0,01
  • максимальное значение - 99 999 999 999,99

  • разделитель групп разрядов - пробел

  • десятичный разделитель - запятая
  • 2 знака дробной части отображаются всегда:
    • если пользователь вводит целое число, система добавляет в поле ,00. Например: введено 123456, отображается 123 456,00
    • если пользователь вводит число одним заком поле запятой, система добавляет 0. Например: введено 123456,3, отображается 123 456,30
    • если пользователь вводит точку для разделения дробной части, система заменяет точку на запятую. Например: введено 123456.3, отображается 123 456,30
    • Ссылка на пример (в примере нет добавления ,00 )
  • при вставке в поле значения из буфера, значение вставляется только если его формат соответствует требованиям
Валюта
Атрибут объекта: individualRateSet.monthlyAmountCurrency
  • Обязательное
  • Предзаполнено значением USD
  • выбор из локального справочника валют, аналогично полям Валюта в заявке
Количество платежей в месяц
Атрибут объекта: individualRateSet.averageMonthlyCountPayment
  • обязательное
  • инпут
  • целое число
  • можно вводить только цифры
  • минимальное значение 1
  • максимальное значение 1000
  • текст ошибки при сохранении:
    • если значение оказано (можно сохранить пустое), но не соблюдается границы минимального и максимального значений: Укажите от 1 до 1 000.
Страны банков получателей
Атрибут объекта: individualRateSet.countries
  • обязательное
  • мультиселект, из справочника стран
Валюты конечных платежей
Атрибут объекта: individualRateSet.currencies
  • обязательное
  • мультиселект, из справочника валют
  • сортировка в выпадашке как в заявке в поле Валюта
Комментарий:
Атрибут объекта: individualRateSet.comment
  • не обязательное
  • текст
  • максимальная длина 2000 символов. При вводе текста:
    • под полем отображается счетчик n/2000
    • для длинных текстов поле расширяется
  • можно вводить любые символы

Блок "Саммари"#

Комментарий агента
Атрибут объекта: individualRateSet.notApprovalComment
  • Макет
  • Блок отображается если в поле есть значение
Название компании клиента
Атрибут объекта в зависимости от типа клиента:
  • для ЮЛ - individualRateSet.customer.company.fullName
  • для ФЛ - individualRateSet.customer.person.fio
  • для ИП - ИП {individualRateSet.customer.person.fio}

Отображается только в сохраненном запросе

ИНН
Атрибут объекта в зависимости от типа клиента:
  • для ЮЛ - individualRateSet.customer.company.inn
  • для ФЛ/ИП - individualRateSet.customer.person.inn

Отображается только в сохраненном запросе

Запрос отправлен
Атрибут объекта: individualRateSet.sentAt
  • При заявке от партнера заполняется при переходе на статус DRAFT-CONTRACTOR_VERIFICATION
  • При заявке от клиента заполняется при переходе на статус DRAFT-AGENT_APPROVAL

Не отображается, если не заполнен

Статус ознакомления партнером
Атрибут объекта: individualRateSet.reviewedByPartner

если false - Партнёр не ознакомлен, выделен цветом если true -Партнёр ознакомлен

Таблица ставок#

Поле таблицы Атрибут объекта
Валюта отправителя individualRateSet.rates[].currencyCustomer
Валюта получателя individualRateSet.rates[].currency
Страна банка получателя individualRateSet.rates[].country, выводим country.englishName
Сумма individualRateSet.rates[].minAmount - individualRateSet.rates[].maxAmount
Ставка individualRateSet.rates[].percent
Минимальная комиссия individualRateSet.rates[].minimumRateThreshold

Сортировка по полям:

  • Валюта отправителя (по алфавиту),
  • потом по Валюта получателя (по алфавиту),
  • потом по Cтрана банка получателя (по алфавиту по country.englishName)
  • потом по Сумма (minAmount, по возрастанию)

Добавление ставки#

  • Кнопка + Добавить
    • отображается
      • в режиме добавления запроса
      • в режиме просмотра и редактирования если пользователь в текущем статусе запроса может редактировать запрос (описано в individual_rate_set_partner.json)
    • активна в
      • в режиме добавления запроса
      • в режиме редактирования запроса
  • При нажатии на кнопку + Добавить, открывается модальное окно с полями для ввода
  • модалка не закрывается по клику на фон (только крестиком или кнопками Отменить, Добавить)
Валюта отправителя
Атрибут объекта: individualRateSet.rates[].currencyCustomer
  • не обязательное
  • выбор из локального справочника валют, аналогично полям Валюта в заявке
  • хинт на поле (отображается когда поле в фокусе): Если валюта не выбрана, ставка будет применятся ко всем валютам
Валюта получателя
Атрибут объекта: individualRateSet.rates[].currency
  • необязательное
  • выбор из локального справочника валют, аналогично полям Валюта в заявке
  • хинт на поле (отображается когда поле в фокусе): Если валюта не выбрана, ставка будет применятся ко всем валютам
Страна банка получателя
Атрибут объекта: individualRateSet.rates[].country
  • необязательное
  • работа поля аналогична полю Страна (order.counterparty.country) в заявке
  • хинт на поле (отображается когда поле в фокусе): Если страна не выбрана, ставка будет применятся ко всем странам
Сумма от
Атрибут объекта: individualRateSet.rates[].minAmount
  • обязательное
  • инпут
  • число
  • минимальное значение - 0,01
  • максимальное значение - 99 999 999 999,99

  • разделитель групп разрядов - пробел

  • десятичный разделитель - запятая
  • 2 знака дробной части отображаются всегда:
    • если пользователь вводит целое число, система добавляет в поле ,00. Например: введено 123456, отображается 123 456,00
    • если пользователь вводит число одним заком поле запятой, система добавляет 0. Например: введено 123456,3, отображается 123 456,30
    • если пользователь вводит точку для разделения дробной части, система заменяет точку на запятую. Например: введено 123456.3, отображается 123 456,30
    • Ссылка на пример (в примере нет добавления ,00 )
  • при вставке в поле значения из буфера, значение вставляется только если его формат соответствует требованиям
  • не может быть больше "Суммы до"
  • диапазоны сумм не могут пересекаться в рамках валюты и страны в одном запросе
Сумма до
Атрибут объекта: individualRateSet.rates[].maxAmount
  • обязательное
  • инпут
  • число
  • минимальное значение - 0,01
  • максимальное значение - 99 999 999 999,99
  • разделитель групп разрядов - пробел
  • десятичный разделитель - запятая
  • 2 знака дробной части отображаются всегда:
    • если пользователь вводит целое число, система добавляет в поле ,00. Например: введено 123456, отображается 123 456,00
    • если пользователь вводит число одним заком поле запятой, система добавляет 0. Например: введено 123456,3, отображается 123 456,30
    • если пользователь вводит точку для разделения дробной части, система заменяет точку на запятую. Например: введено 123456.3, отображается 123 456,30
    • Ссылка на пример (в примере нет добавления ,00 )
  • при вставке в поле значения из буфера, значение вставляется только если его формат соответствует требованиям
Ставка, %
Атрибут объекта: individualRateSet.rates[].percent
  • значение

    • обязательное
    • инпут
    • число
    • минимальное значение - 0,0000
    • максимальное значение - 100

    • разделитель групп разрядов - пробел

    • десятичный разделитель - запятая
    • 4 знака дробной части отображаются всегда:
      • если пользователь вводит целое число, система добавляет в поле ,0000. Например: введено 123456, отображается 123 456,0000
      • если пользователь вводит число одним заком поле запятой, система добавляет 0. Например: введено 123456,3, отображается 123 456,3000
      • если пользователь вводит точку для разделения дробной части, система заменяет точку на запятую. Например: введено 123456.3000, отображается 123 456,3000
      • Ссылка на пример (в примере нет добавления ,00 )
    • при вставке в поле значения из буфера, значение вставляется только если его формат соответствует требованиям
Минимальная комиссия
Атрибут объекта: individualRateSet.rates[].minimumRateThreshold
  • обязательное
  • инпут
  • число
  • минимальное значение - 0,01
  • максимальное значение - 99 999 999 999,99

  • разделитель групп разрядов - пробел

  • десятичный разделитель - запятая
  • 2 знака дробной части отображаются всегда:
    • если пользователь вводит целое число, система добавляет в поле ,00. Например: введено 123456, отображается 123 456,00
    • если пользователь вводит число одним заком поле запятой, система добавляет 0. Например: введено 123456,3, отображается 123 456,30
    • если пользователь вводит точку для разделения дробной части, система заменяет точку на запятую. Например: введено 123456.3, отображается 123 456,30
    • Ссылка на пример (в примере нет добавления ,00 )
  • при вставке в поле значения из буфера, значение вставляется только если его формат соответствует требованиям

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

  • Активна всегда
  • При нажатии пользователем на кнопку, система:
    • закрывает окно без дополнительных подтверждений
    • запись не сохраняется в БД

Кнопка Добавить

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

Редактирование и удаление ставки#

Модалка редактирования открывается по клику на строке в режиме редактирования и создания запроса:

  • поля аналогичны полям при добавлении ставки
  • заполнены ранее сохраненными значениями
  • все поля доступны для редактирования
  • модалка не закрывается по клику на фон

Кнопка Удалить

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

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

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

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

Кнопка сохранения#

  • Отображается:

    • При создании запроса:
      • для роли PARTNER: отображается всегда
      • для роли CUSTOMER: отсутствует
    • При создании запроса: отображается только в режиме редактирования
  • Активна если пользователь внес изменения в хотя бы одно поле или строку ставок

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

Сохранение записи в БД#

Кроме полей, указанных пользователем:

При первом сохранении:

  • individualRateSet.createdByRole - роль пользователя, создавшего запрос
  • individualRateSet.status -
  • individualRateSet.customer:
    • если создано пользователем с ролью PARTNER - не заполняется
    • если создано пользователем с ролью CUSTOMER
      • в случае если пользователь связан с несколькими клиентами - ссылка на указанного пользователем клиента
      • в случае если пользователь связан с одним клиентом - ссылка на клиента связанного с пользователем (в этом случае пользователь не указывает клиента)
  • individualRateSet.partner:
    • если создано пользователем с ролью PARTNER - ссылка на партнера связанного с пользователем
    • если создано пользователем с ролью CUSTOMER - ссылка на партнера указанного в карточке клиента individualRateSet.customer

При каждом сохранении:

  • individualRateSet.changedAt - дата и время сохранения

Просмотр и редактирование запроса ставок#

Режим просмотра запроса ставок#

Режим редактирования запроса ставок#

Кнопка Редактировать в деталке запроса ставок

  • Отображается:
    • если роли доступно редактирование в текущем статусе (описано в individual_rate_set_partner.json)
    • если форма в режиме просмотра
  • При нажатии на кнопку:
    • поля становятся доступными для изменения
    • строки становятся доступными для добавления, редактирования, удаления.
    • отображаются кнопки Отменить и Сохранить:

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

  • отображается всегда
  • При нажатии:
    • сбрасывает внесенные изменения в поля и строки запроса ставок
    • переводит форму в режим просмотра

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

Удаление запроса ставок#

Кнопка Удалить

  • Отображается в форме просмотра запроса ставок:
    • в блоке кнопок транзишна
    • в форме создания запроса партнером и в статусе DRAFT
  • При нажатии пользователем на кнопку:
    • Система показывает диалоговое окно подтверждение
      • если пользователь не подтвердил, диалоговое окно закрывается, запрос ставок не удаляется. Конец сценария.
      • если пользователь подтвердил:
        • в форме создания:
          • система закрывает форму создания без сохранения,
          • показывает список запросов индивидуальных ставок
          • показывает оповещение Запрос индивидуальных ставок удалён
        • в статусе DRAFT:
          • система удаляет запрос ставок и все его строки из БД.
          • Закрывает форму
          • показывает список запросов индивидуальных ставок
          • показывает оповещение Запрос индивидуальных ставок удалён