Деталка запроса индивидуальных ставок#
Особенности сабмита формы
- пользователь может сохранить запрос, даже если он не заполнил все обязательные поля
- при сохранении (и, опосредованно, при отправке, так как отправка тригерит сохранение) валидируются заполненные поля на соответстиве типам и паттернам.
- при отправке запроса проверяется заполнены ли все обязательные поля
- нельзя сохранить запрос, если в нем есть заполненные поля, чьё содержимое не отвечает требованиям
- можно сохранить запрос, если в нем не заполнены обязательные поля
- нельзя отправить запрос, если в нем не заполнены обязательные поля
Статусы запроса индивидуальных ставок#
Статусная модель определяется системой после первого сохранения по роли пользователя, создавшего запрос individualRateSet.createdByRole:
- для роли PARTNER: individual_rate_set_partner.json
- для роли CUSTOMER: individual_rate_set_customer.json
Интерфейс#
для роли PARTNER: Макет для роли CUSTOMER: Макет
Ссылка возврата на список запросов индивидуальных ставок#
для роли PARTNER: Аналогично ссылке возврата в деталке клиента для роли CUSTOMER: отсутствует
Мэппинг полей#
- Действует для:
- Атрибут объекта:
individualRateSet.scope
- выбор из вариантов:
ONE_ORDER-Для одной заявки. Текст подсказки:После перехода заявки в статус "Исполнение" запрос считается завершённым.All_ORDER-На все заявки. Текст подсказки отсутствует.
- значение по умолчанию
ONE_ORDER
- Агент
- Атрибут объекта:
individualRateSet.agent
- обязательное
- выбор из
- В выпадашке отображаются
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)
- если пользователь вводит целое число, система добавляет в поле
- при вставке в поле значения из буфера, значение вставляется только если его формат соответствует требованиям
Кнопка Отменить
- Активна всегда
- При нажатии пользователем на кнопку, система:
- закрывает окно без дополнительных подтверждений
- запись не сохраняется в БД
Кнопка Добавить
- Активна если изменено значение хотя бы одного поля
- при нажатии пользователем на кнопку, система:
- выполняет проверку, что обязательные поля заполнены. Если проверка не выполняется:
- подсвечивает незаполненные поля
- окно не закрывает, запись не сохраняет
- выполняет проверку, что
Сумма от<=Сумма до. Если проверка не выполняется:- под
Сумма ототображает текст ошибкиПервая сумма не может быть больше второй - окно не закрывает, запись не сохраняет
- под
- выполняет проверку, что диапазон сумм
Сумма отиСумма доне пересекается в рамках валюты отправителя, валюты получателя и страны в одном запросе. Если проверка не выполняется:- под
Сумма ототображает текст ошибкиДиапазон сумм пересекается с существующим - окно не закрывает, запись не сохраняет
- под
- закрывает окно,
- показывает обновленную форму запроса ставок
- выполняет проверку, что обязательные поля заполнены. Если проверка не выполняется:
Редактирование и удаление ставки#
Модалка редактирования открывается по клику на строке в режиме редактирования и создания запроса:
- поля аналогичны полям при добавлении ставки
- заполнены ранее сохраненными значениями
- все поля доступны для редактирования
- модалка не закрывается по клику на фон
Кнопка Удалить
- активна всегда
- При нажатии пользователем на кнопку, система:
- закрывает окно без дополнительных подтверждений
- удаляет строку из БД
- закрывает модалку
- показывает обновленную форму запроса ставок
Кнопка Отменить
- аналогична кнопке
Отменитьпри добавлении ставки
Кнопка Сохранить
- аналогична кнопке
Добавитьпри добавлении ставки
Сохранение запроса индивидуальных ставок#
Кнопка сохранения#
-
Отображается:
- При создании запроса:
- При создании запроса: отображается только в режиме редактирования
-
Активна если пользователь внес изменения в хотя бы одно поле или строку ставок
- В процессе сохранения на кнопке отображается лоадер, все поля и кнопки формы не активны
- При нажатии пользователем на кнопку, система:
- Выполняет проверку (см. описание соответствующего статуса)
- сохраняет запрос индивидуальных ставок в БД вместе со строками запроса
- переводит форму в режим просмотра.
- показывает оповещение
Сохранение записи в БД#
Кроме полей, указанных пользователем:
При первом сохранении:
individualRateSet.createdByRole- роль пользователя, создавшего запросindividualRateSet.status-- если создано пользователем с ролью PARTNER - при сохранении по нажатию кнопки
Сохранить-DRAFT - если создано пользователем с ролью CUSTOMER - см. отправку запроса клиентом
- если создано пользователем с ролью PARTNER - при сохранении по нажатию кнопки
individualRateSet.customer:- если создано пользователем с ролью PARTNER - не заполняется
- если создано пользователем с ролью CUSTOMER
- в случае если пользователь связан с несколькими клиентами - ссылка на указанного пользователем клиента
- в случае если пользователь связан с одним клиентом - ссылка на клиента связанного с пользователем (в этом случае пользователь не указывает клиента)
individualRateSet.partner:
При каждом сохранении:
individualRateSet.changedAt- дата и время сохранения
Просмотр и редактирование запроса ставок#
Режим просмотра запроса ставок#
- Деталка запроса ставок открывается в режиме просмотра:
- по клику на строке в списке запросов ставок
- поля не доступны для изменения
- Отображаются кнопки
Редактировать(см. режим редактирования запроса ставок})Удалить(см. удаление запроса ставок})
Режим редактирования запроса ставок#
Кнопка Редактировать в деталке запроса ставок
- Отображается:
- если роли доступно редактирование в текущем статусе (описано в individual_rate_set_partner.json)
- если форма в режиме просмотра
- При нажатии на кнопку:
- поля становятся доступными для изменения
- строки становятся доступными для добавления, редактирования, удаления.
- отображаются кнопки
ОтменитьиСохранить:
Кнопка Отменить
- отображается всегда
- При нажатии:
- сбрасывает внесенные изменения в поля и строки запроса ставок
- переводит форму в режим просмотра
Кнопка Сохранить
Удаление запроса ставок#
Кнопка Удалить
- Отображается в форме просмотра запроса ставок:
- в блоке кнопок транзишна
- в форме создания запроса партнером и в статусе
DRAFT
- При нажатии пользователем на кнопку:
- Система показывает диалоговое окно подтверждение
- если пользователь не подтвердил, диалоговое окно закрывается, запрос ставок не удаляется. Конец сценария.
- если пользователь подтвердил:
- в форме создания:
- система закрывает форму создания без сохранения,
- показывает список запросов индивидуальных ставок
- показывает оповещение
Запрос индивидуальных ставок удалён
- в статусе
DRAFT:- система удаляет запрос ставок и все его строки из БД.
- Закрывает форму
- показывает список запросов индивидуальных ставок
- показывает оповещение
Запрос индивидуальных ставок удалён
- в форме создания:
- Система показывает диалоговое окно подтверждение