Процесс создания нового клиента#
Пользователи процесса#
- пользователь с ролью CONTRACTOR.
- пользователь с ролью PARTNER.
Предусловия#
У роли пользователя есть право INVITE_CUSTOMER
Точки входа#
Кнопка "Добавить" в таблице клиентов
Варианты завершения#
В системе создан новый клиент.
Процесс#
Общий вид#
| # | Шаг |
|---|---|
| 1 | Пользователь заполняет поля формы, нажимает кнопку Сохранить. |
| 2 | Система проверяет заполненные поля. |
| 2а | Если есть ошибки, система показывает сообщение об ошибке. Процесс останавливается. |
| 3 | Система выполняет проверку наличия дубликата клиента в базе. |
| 3а | Если в базе есть аналогичный клиент, система показывает сообщение об ошибке. Процесс останавливается. |
| 4 | Система создает нового клиента, показывает форму просмотра Клиента на закладке "Пользователи" |
Особенности процесса#
- Формы для физлица, ИП, юрлица отличаются.
- для юрлиц указываются реквизиты компании и подписант
- для физлиц и ИП — данные физлица
- для ИП указывается ОГРНИП
- Для клиента нужно выбрать страну резидентства: РФ, Беларусь, Казахстан или "Другая страна"
- Если указано резиденство РФ, используется упрощенный ввод реквизитов через Dadata. Пользователь вводит ИНН, ОГРН или название компании (для ИП: ФИО, ИНН, ОГРНИП), а система возвращает варианты. После выбора подходящего, форма заполняется реквизитами из дадаты.
Использование сервисов Dadata для автозаполнения атрибутов#
Система должна быть dadata-независимой
-
Если дадата сломалась или вышли за лимит, у пользовтаеля должна быть возможность заполнить поле.
-
Для некоторых полей справедливо правило: если в дадате нет нужного значения, а пользовтаель убежден, что оно правильное, у него должна быть возможность указать это значение.
Интерфейс#
Ссылка возврата на таблицу Клиенты#
При клике на ссылку "<- Клиенты", система показывает браузерный алерт с предупреждением о том что введенные значения не сохранятся. Если пользователь подтвердил действие, система показывает таблицу клиентов. В таблице сохраняется примененные фильтры и активная страница.
Поведение Dadata-полей при смене резидентства#
Часть Dadata-подсказок работает при выборе России в качестве страны резидентства.
Если пользователь меняет страну и Dadata-подсказки прекращают работать, введенные значения не должны теряться. Общий принцип использование подсказок такой:
- Пользователь что-то вводит
- Система отправляет запрос в дадату
- Дадата возвращает подсказки
- Система отображает подсказки
- Пользователь выбирает одну из них
- Система заполняет одно или несколько полей на форме.
Если, после этого, пользователь поменял страну резидентства и дадата-подсказки больше не работают, поля остаются заполненными. Их можно отредактировать или очистить совсем.
Пример
- Пользователь выбирает страну резиденства Россия.
- В поле Компания начинает вводить ИНН. Система отправляет запрос в дадату, получает подсказки и показывает пользователю.
- Пользователь выбирает подходящую компанию.
- Система заносит ее название, ИНН, КПП, ОГРН, ФИО и Должность представителя в соответствующие поля на форме.
- Пользователь меняет страну резиденства на Коста-Рику.
- Значения в полях Компания, ИНН, КПП и ОГРН не меняются
- Пользователь переходит в поле Компания и меняет текст. Поле ведет себя как обычный инпут.
Мэппинг полей из ответа Dadata и полей клиента#
При заполнении данных ЮЛ (в ответе type = LEGAL), система отправляет запрос в дадату при вводе текста в поле "Компания"
При заполнении данных ИП (в ответе type = INDIVIDUAL), система отправляет запрос в дадату при вводе текста в поле "Индивидуальный предприниматель"
Общее для ЮЛ и ИП:
- ИНН:
data.inn - ОГРН/ОГРНИП:
data.ogrn - Адрес:
data.address.value
Для ЮЛ
- Название:
value - КПП:
data.kpp -
Фио представителя:
data.managment.name(приходит одной строкой ФИО, разделить на три поляФамилия,Имя,Отчество) -
Должность руководителя
data.managment.post:- Если полученная в ответе должность есть в справочнике должностей (сравниваем полное совпадение текста без учета регистра), то
система сохраняет её в клиента
customer.representative.title.titleId.name - Если полученная в ответе должность отсутствует, то в
customer.representative.title.titleId.nameсистема сохраняет какДругая, а полученную в ответе записывает вcustomer.representative.title.titleDetails.name - Если в ответе должность отсутствует (пустой или отсутствует
data.managment.post), должность в клиенте остается пустой.
- Если полученная в ответе должность есть в справочнике должностей (сравниваем полное совпадение текста без учета регистра), то
система сохраняет её в клиента
Для ИП
- ФИО:
data.fio.surnamedata.fio.namedata.fio.patronymic
Юрлицо#
- Резидентство
- Атрибут объекта:
company.taxResidence. Записывается код страны из справочника.
- Обязательно к заполнению.
- Варианты выбора Россия, Беларусь, Казахстан, Другое. При выборе вариант Другое, появляется селект с вариантами из справочника стран.
- Компания
- Атрибут объекта:
company.fullName.
- Обязательно к заполнению.
- Максимальная длина 500 символов.
- Подсказка Дадата, если Резидентство = Россия. Работает на ввод названия, ИНН, КПП или ОГРН. Ищет только по организациям. Когда пользователь выберет подходящий вариант, заполняет поля Компания, Юридический адрес, ИНН, КПП, ОГРН, ФИО и Должность представителя
- Юридический адрес
- Атрибут объекта:
company.addressRegistration.
- Обязательно к заполнению.
- Максимальная длина 250 символов.
- Подсказка Дадата, если Резидентство = Россия
- Индекс в строке адреса система не отображет (как в примере Дадата), но отдельно сохраняет в БД для возможности вывода в ПФ.
- Юридический адрес на английском
- Атрибут объекта:
company.addressRegistrationEnglish.
- Обязательно к заполнению.
- Максимальная длина 250 символов.
- Заполняется вручную пользователем.
- Можно вводить любые символы, кроме кириллицы
- ИНН
- Атрибут объекта:
company.inn.
- Обязательно к заполнению.
- Резиденство = Россия: строго 10 цифр
- Резиденство ≠ Россия: цифры до 15 знаков.
- КПП
- Атрибут объекта:
company.kpp.
- Обязательно к заполнению.
- Строго 9 цифр
- ОГРН
- Атрибут объекта:
company.ogrn.
- Резиденство = Россия: обязательно к заполнению, строго 13 цифр
- Резиденство ≠ Россия: не обязательно к заполнению, цифры до 15 знаков.
- Название компании на английском
- Атрибут объекта:
company.fullNameEnglish.
- Обязательно к заполнению.
- Максимальная длина 500 символов
- Можно вводить любые символы, кроме кириллицы.
- Email для договора
- Атрибут объекта:
customer.email
- Необязательно к заполнению
- Максимальная длина 255 символов
- Значение E-mail соответствует паттерну указанному в модели
- Если значение не соответствует паттерну, под полем E-mail отображается сообщение об ошибке: Некорректный e-mail
- Партнёр
- Атрибут объекта:
customer.partner
- Выбор из локального справочника
- Обязательно к заполнению.
- отображается если есть право VIEW_PARTNER_IN_CUSTOMER
- Приоритетный клиент
- Атрибут объекта:
customer.isPriority
- по умолчанию = false
Группа полей Расчетный счет#
- Макет
- Один расчетный счет = пара заполненных полей Номер счета и в каком банке открыт
- Может быть указано до 5 расчетных счетов (5 пар
Номер счета+Банк) - Хотя бы один Расчетный счет должен быть обязательно указан
- По умолчанию, при создании клиента, отображается одна группа полей
Номер счета+Банк(один расчетный счет) - Кнопка
Добавитьдобавляет еще одну группу полей (Номер счета+Банк) - Если на форме больше 1 группы полей, то возле каждой группы отображается кнопка
Удалить - Кнопка
Удалить– убирает группу полей с формы (Номер счета+Банк), физическое удаление в БД вместе с сабминов всей карточки клиента - В режиме просмотра кнопки
ДобавитьиУдалитьне отображаются
- Номер счета
- Атрибут объекта:
company.bankAccount.number.
- Обязательно к заполнению.
- Маска ввода и максимальная длина - строго 20 цифр
- Банк
- Атрибут объекта:
company.bankAccount.bank.
- Обязательно к заполнению.
- Максимальная длина 250 символов.
- Выбор из локального справочника российских банков.
Группа полей Подписант#
- Фамилия
- Атрибут объекта:
customer.representative.fio.lastName
- Обязательно к заполнению.
- Максимальная длина: 50 символов.
- Маска ввода: русские и латинские буквы, пробелы, дефисы.
- Имя
- Атрибут объекта:
customer.representative.fio.firstName
- Обязательно к заполнению.
- Максимальная длина: 50 символов.
- Маска ввода: русские и латинские буквы, пробелы, дефисы.
- Отчество
- Атрибут объекта:
customer.representative.fio.patronymic
- Необязательно к заполнению.
- Максимальная длина: 50 символов.
- Маска ввода: русские и латинские буквы, пробелы, дефисы.
- Фамилия в родительном падеже
- Атрибут объекта:
customer.representative.fioGenitiveCase.lastName
- Обязательно к заполнению.
- Маска ввода: русские и латинские буквы, пробелы, дефисы.
- Максимальная длина: 50 символов.
- Заполняется системой автоматически после изменения значения в поле
Фамилия(после ухода с поля и только если пользователь изменил значение, а не просто "встал в него и вышел") значением введенной Фамилии в родительном падеже - Может быть изменено пользователем
- плейсхолдер поля - константа
Иванова
- Имя в родительном падеже
- Атрибут объекта:
customer.representative.fioGenitiveCase.firstName
- Обязательно к заполнению.
- Маска ввода: русские и латинские буквы, пробелы, дефисы.
- Максимальная длина: 50 символов.
- Заполняется системой автоматически после изменения значения в поле
Имя(после ухода с поля и только если пользователь изменил значение, а не просто "встал в него и вышел") значением введенного Имени в родительном падеже - Может быть изменено пользователем
- плейсхолдер поля - константа
Ивана
- Отчество в родительном падеже
- Атрибут объекта:
customer.representative.fioGenitiveCase.patronymic
- Не обязательно к заполнению.
- Маска ввода: русские и латинские буквы, пробелы, дефисы.
- Максимальная длина: 50 символов.
- Заполняется системой автоматически после изменения значения в поле
Отчество(после ухода с поля и только если пользователь изменил значение, а не просто "встал в него и вышел") значением введенного Отчества в родительном падеже - Может быть изменено пользователем
- плейсхолдер поля - константа
Ивановича
- Фамилия на английском языке
- Атрибут объекта:
customer.representative.fioEnglish.lastName
- Обязательно к заполнению.
- Маска ввода: латинские буквы, пробелы, дефисы.
- Максимальная длина: 50 символов.
- Заполняется системой автоматически после изменения значения в поле
Фамилия(после ухода с поля и только если пользователь изменил значение, а не просто "встал в него и вышел") значением введенной Фамилии транслитерацией на английском. Специальных требований к правилам транслитерации нет. - Может быть изменено пользователем
- плейсхолдер поля - константа
Ivanov
- Имя на английском языке
- Атрибут объекта:
customer.representative.fioEnglish.firstName
- Обязательно к заполнению.
- Маска ввода: латинские буквы, пробелы, дефисы.
- Максимальная длина: 50 символов.
- Заполняется системой автоматически после изменения значения в поле
Имя(после ухода с поля и только если пользователь изменил значение, а не просто "встал в него и вышел") значением введенного Имени транслитерацией на английском. Специальных требований к правилам транслитерации нет. - Может быть изменено пользователем
- плейсхолдер поля - константа
Ivan
- Отчество на английском языке
- Атрибут объекта:
customer.representative.fioEnglish.patronymic
- Не обязательно к заполнению.
- Маска ввода: латинские буквы, пробелы, дефисы.
- Максимальная длина: 50 символов.
- Заполняется системой автоматически после изменения значения в поле
Отчествозначением введенного Отчества транслитерацией на английском. Специальных требований к правилам транслитерации нет. - Может быть изменено пользователем
- плейсхолдер поля - константа
Ivanovich
- Должность (выбор из справочника)
- Атрибут объекта:
customer.representative.title.titleId.name
- обязательное
- выбор из локального справочника должностей:
- пользователь вводит название должности или её часть
- отображается подсказку для выбора должности из локального справочника должностей. Отображаются список всех должностей у которых название содержит введенное значение. Первой строкой в списке отображается значение
Другая - пользователь выбирает нужное значение, система отображает в поле название выбранной должности
title.name - если в списке нужное значение отсутствует, пользователь выбирает значение
Другая. - при выборе значения
Другоеотображается три дополнительных поля для ручного ввода должностиcustomer.representative.title.titleDetails
- Если было выбрано
Другоеи пользователь заполнил поля ручного ввода (см. ниже описание полейДолжность,Должность в родительном падеже,Должность на английском), а потом перевыбрал должность из списка, то заполненные поля не очищаются до сохранения клиента в системе и при повторно выбореДругая, в полях отображаются ранее заполненные значения. При сохранении клиента с указанным значением отличным отДругое, заполненные вручную поля должности не сохраняются.
- Должность (инпут)
- Атрибут объекта:
customer.representative.title.titleDetails.name
- Обязательное.
- инпут, русские и латинские буквы, пробелы, дефисы, цифры
- Максимальная длина: 250 символов.
- Должность в родительном падеже
- Атрибут объекта:
customer.representative.title.titleDetails.genitiveCase
- Обязательное.
- инпут, русские и латинские буквы, пробелы, дефисы, цифры
- Максимальная длина: 250 символов.
- Должность на английском
- Атрибут объекта:
customer.representative.title.titleDetails.englishName
- Обязательное.
- инпут, латинские буквы, пробелы, дефисы, цифры
- Максимальная длина: 250 символов.
- Основание полномочий
- Атрибут объекта:
customer.representative.actionBasis.type
Обязательно к заполнению. Код из справочника.
Группа полей Доверенность#
При выборе варианта "Доверенность", на форме появляются поля
Если пользователь выбрал "Доверенность", указал номер и дату окончания действия доверенности и поменял основание полномочий на любое другое, например "Устав" или "Другое" , поля скрываются, но не очищаются.
Если выбрано не "Доверенность", значения полей Номер и Дата окончания не сабмитятся на бэк.
Другое
При выборе варианта "Другое", на форме появяются поля
Если пользователь выбрал "Другое", указал названия на русском и английском языках и поменял основание полномочий на любое другое, например "Устав" или "Доверенность", поля скрываются, но не очищаются.
Если выбрано не "Другое", значения полей русского и английского названий не сабмитятся на бэк.
- Номер доверенности
- Атрибут объекта:
customer.representative.actionBasis.number
- Обязательно к заполнению, если Основание полномочий = "Доверенность".
- Дата окончания действия доверенности
- Атрибут объекта:
customer.representative.actionBasis.notValidAfter.
- Обязательно к заполнению, если Основание полномочий = "Доверенность".
- Дата не может быть меньше сегодняшнего дня.
- Название документа
- Атрибут объекта:
customer.representative.actionBasis.name.
- Обязательно к заполнению, если Основание полномочий = "Другое".
- Название документа на английском
- Атрибут объекта:
customer.representative.actionBasis.nameEnglish.
- Обязательно к заполнению, если Основание полномочий = "Другое".
- Можно вводить любые символы, кроме кириллицы.
- Срок действия документа
- Атрибут объекта:
customer.representative.actionBasis.notValidAfter.
- Не обязательно к заполнению.
- Дата не может быть меньше сегодняшнего дня.
- Тип подписания
- Атрибут объекта:
customer.signingType
- выбор значения из вариантов
SIMPLE_ELECTRONIC: Простая электронная подпись. Выбрано по умолчанию.HANDWRITTEN: Ручкой
- Тип договора
- Атрибут объекта:
customer.defaultContractDirection
- выбор значения из вариантов
Import: Импорт. Выбрано по умолчанию.Export: Экспорт
Группа полей Плательщики#
- Клиент может указать параметры плательщика в заявке
- Атрибут объекта:
customer.canRequestSubsidiary
- по умолчанию = false
- Приоритетные
- Атрибут объекта:
customer.prioritySubsidiaries[]
| Поле | Атрибут |
|---|---|
| Приоритетные | subsidiary.fullNameEnglish - название субагента |
| Статус | subsidiary.Status - статус субагента |
- сортировка по fullNameEnglish, по алфавиту
- Если нет строк таблицы Приоритетных плательщиков и у пользователя нет права на добавление,
вся группа
Приоритетныевместе с заголовком скрывается
Добавление приоритетного плательщика#
- Кнопка
+ Добавитьотображается- пользователю с правом EDIT_CUSTOMER_ALL
- активна в режимах приглашения и редактирования клиента
- При нажатии на кнопку
+ Добавить, открывается модальное окно с полями для ввода:
- Название
- Атрибут объекта:
customer.prioritySubsidiaries[].fullNameEnglish
- обязательное
- выбор из списка Плательщиков/Получателей, у которых
canUseInImport = truestatus = ACTIVEsubagent.status = ACTIVE(т.е. если субагент заблокирован, то связанных плательщиков не показываем в выпадашке)
Кнопка Отменить
- Активна всегда
- При нажатии пользователем на кнопку, система:
- закрывает окно без дополнительных подтверждений
- плательщик не сохраняется в БД
Кнопка Добавить
- Активна если заполнены обязательне поля
- При нажатии пользователем на кнопку, система:
- проверяет, существует ли у клинта выбранный плательщик.
- если существует, модалка не закрывается, поле подсвечивается и отображается сообщение о том что Плательщик уже добавлен
- закрывает окно,
- показывает обновленную таблицу
- в БД Запись сохраняется после сохранения карточки клиента (каждую отельную строку в БД не сохраняем)
- проверяет, существует ли у клинта выбранный плательщик.
Редактирование и удаление приоритетного плательщика#
- Редактирование строки - отсутствует. Можно только удалить и добавить.
- Кнопка удаления на каждой строке таблицы отображается
- пользователю с правом EDIT_CUSTOMER_ALL
- активна в режимах приглашения и редактирования клиента
- при нажатии:
- строка удаляется из списка
- в БД удаление выполняется только после сохранения карточки клиента (каждую отельную строку в БД не удаляем)
Физлицо#
- Резидентство
- Атрибут объекта:
person.taxResidence.
- Обязательно к заполнению.
- Логику работы см в форме приглашения юрлица.
- Фамилия
- Атрибут объекта:
person.fio.lastName
- Обязательно к заполнению. Маска ввода: русские и латинские буквы, пробелы, дефисы. Максимальная длина: 50 символов.
- Имя
Атрибут объекта:
person.fio.firstNameОбязательно к заполнению. Маска ввода: русские и латинские буквы, пробелы, дефисы. Максимальная длина: 50 символов.
- Отчество
Атрибут объекта:
person.fio.patronymicНеобязательно к заполнению. Маска ввода: русские и латинские буквы, пробелы, дефисы. Максимальная длина: 50 символов.
- Фамилия в дательном падеже
- Атрибут объекта:
person.fioDativeCase.lastName
- Обязательно к заполнению.
- Маска ввода: русские и латинские буквы, пробелы, дефисы.
- Максимальная длина: 50 символов.
- Заполняется системой автоматически после изменения значения в поле
Фамилия(после ухода с поля и только если пользователь изменил значение, а не просто "встал в него и вышел") значением введенной Фамилии в дательном падеже - Может быть изменено пользователем
- плейсхолдер поля - константа
Иванову
- Имя в дательном падеже
- Атрибут объекта:
person.fioDativeCase.firstName
- Обязательно к заполнению.
- Маска ввода: русские и латинские буквы, пробелы, дефисы.
- Максимальная длина: 50 символов.
- Заполняется системой автоматически после изменения значения в поле
Имя(после ухода с поля и только если пользователь изменил значение, а не просто "встал в него и вышел") значением введенного Имени в дательном падеже - Может быть изменено пользователем
- плейсхолдер поля - константа
Ивану
- Отчество в дательном падеже
- Атрибут объекта:
person.fioDativeCase.patronymic
- Не обязательно к заполнению.
- Маска ввода: русские и латинские буквы, пробелы, дефисы.
- Максимальная длина: 50 символов.
- Заполняется системой автоматически после изменения значения в поле
Отчество(после ухода с поля и только если пользователь изменил значение, а не просто "встал в него и вышел") значением введенного Отчества в дательном падеже - Может быть изменено пользователем
- плейсхолдер поля - константа
Ивановичу
- Фамилия на английском языке
- Атрибут объекта:
person.fioEnglish.lastName
- Обязательно к заполнению.
- Маска ввода: латинские буквы, пробелы, дефисы.
- Максимальная длина: 50 символов.
- Заполняется системой автоматически после изменения значения в поле
Фамилия(после ухода с поля и только если пользователь изменил значение, а не просто "встал в него и вышел") значением введенной Фамилии транслитерацией на английском. Специальных требований к правилам транслитерации нет. - Может быть изменено пользователем
- плейсхолдер поля - константа
Ivanov
- Имя на английском языке
- Атрибут объекта:
person.fioEnglish.firstName
- Обязательно к заполнению.
- Маска ввода: латинские буквы, пробелы, дефисы.
- Максимальная длина: 50 символов.
- Заполняется системой автоматически после изменения значения в поле
Имя(после ухода с поля и только если пользователь изменил значение, а не просто "встал в него и вышел") значением введенного Имени транслитерацией на английском. Специальных требований к правилам транслитерации нет. - Может быть изменено пользователем
- плейсхолдер поля - константа
Ivan
- Отчество на английском языке
- Атрибут объекта:
person.fioEnglish.patronymic
- Не обязательно к заполнению.
- Маска ввода: латинские буквы, пробелы, дефисы.
- Максимальная длина: 50 символов.
- Заполняется системой автоматически после изменения значения в поле
Отчествозначением введенного Отчества транслитерацией на английском. Специальных требований к правилам транслитерации нет. - Может быть изменено пользователем
- плейсхолдер поля - константа
Ivanovich
- Адрес регистрации
- Атрибут объекта:
person.addressRegistration.
- Обязательно к заполнению.
- Максимальная длина 250 символов.
- Подсказка Дадата, если Резидентство = Россия.
- Индекс в строке адреса система не отображет (как в примере Дадата), но отдельно сохраняет в БД для возможности вывода в ПФ.
- Адрес регистрации на английском
- Атрибут объекта:
person.addressRegistrationEnglish.
- Обязательно к заполнению.
- Максимальная длина 250 символов.
- Заполняется вручную пользователем.
- Можно вводить любые символы, кроме кириллицы
- ИНН
Атрибут объекта:
person.inn.Обязательно к заполнению. Маска ввода: 12 цифр.
- E-mail, Номер телефона, Тип подписания, Приоритетный клиент, Партнёр
- аналогично ЮЛ
Группа полей Плательщики#
- аналогично ЮЛ
Группа полей Паспорт#
- Гражданство
- Атрибут объекта:
person.citizenship.
- Обязательно к заполнению.
- Код из справочника стран.
- В списке стран для выбора, ситема первой строкий показывает Россию, потом все в алфавитном порядке.
- Серия
- Атрибут объекта:
person.passport.series.
- Отображается только если страна гражданства Россия.
- Обязательно к заполнению.
- Маска ввода: 4 цифры.
- Номер
- Атрибут объекта:
person.passport.number.
- Обязательно к заполнению.
- Гражданство = Россия: строго 6 цифр
- Гражданство ≠ Россия: латинские буквы и цифры до 20 знаков.
- Дата выдачи
- Атрибут объекта:
person.passport.issueDate.
- Обязательно к заполнению.
- Не может быть значение в будущем.
- Минимальная дата 01.01.1900, календарь должен соответсвовать ручному воду.
- Место выдачи
- Атрибут объекта:
person.passport.issuedBy.
- Обязательно к заполнению, если страна гражданства Россия.
- Максимальная длина: 200 символов.
- Подсказка Дадата. При выборе значения заполняется поля Место выдачи и Код подразделения.
- Код подразделения
- Атрибут объекта:
person.passport.issueOrganizationCode.
- Отображается только если страна гражданства Россия.
- Обязательно к заполнению.
- Подсказка Дадата. При выборе значения заполняется поля Место выдачи и Код подразделения.
- Масска ввода в поле отсутствует, но введенное значение валидируем на соответсвие формату:
ddd-ddd, гдеd— цифра. - Если страна гражданства не Россия, отображаются только поля Номер, Дата выдачи, Место выдачи.
Группа Расчетный счет#
- Аналогично расчетному счету ЮЛ
- Номер счета
- Атрибут объекта:
person.bankAccount.accountNumber. - Банк
- Атрибут объекта:
person.bankAccount.bankName.
ИП#
Поля, маски и ограничения аналогичны форме приглашения физлица. Специфичные поля описаны после изображения.
- Индивидуальный предприниматель
- Атрибут объекта: отсутствует
Система отображает в поле конкатенированную строку из ИП {Фамилия} {Имя} {Отчество}
- отображается если резиденство - РФ.
- Обязательно к заполнению.
- Максимальная длина 500 символов.
- Подсказка Дадата, если Резидентство = Россия. Работает на ввод ФИО, ИНН или ОГРНИП. Ищет только по ИП. Когда пользователь выберет подходящий вариант, заполняет поля: Фамилия, Имя, Отчество адрес, ИНН, ОГРНИП, Индивидуальный предприниматель
При изменении полей Фамилия, Имя, Отчество вручную пользователем, поле Индивидуальный предприниматель обновляется.
При открытии клиента на просмотр/редактирование, в поле отображается конкатенированная строка.
- ОГРНИП
Атрибут объекта:
person.ogrnip.- Резиденство = Россия: обязательно к заполнению, маска ввода: строго 15 цифр
- Резиденство ≠ Россия: необязательно к заполнению, маска ввода: цифры до 20 знаков.
Полный набор макетов
Все макеты и состояния по ссылке Макеты Figma: Пригласить клиента
Сабмит формы#
Лоадер на кнопке, все поля на форме в readonly
Проверка статуса компании в DADATA#
- Система выполняет запрос в дадату по ИНН клиента (запрос тот же что и для подсказок дададты).
- Из всех полученных вариантов подбирает запись с такими же как у клиента:
- для ЮЛ: ИНН
data.innи КППdata.kpp - для ИП: ИНН
data.inn
- для ЮЛ: ИНН
- Проверяет в ответе значение статуса
data.state.status, и если значение неACTIVE, не сохраняет клиента, показывает сообщение об ошибке в зависимости от значения статуса:- LIQUIDATING:
В процессе ликвидации - LIQUIDATED
- для ЮЛ:
Ликвидирована - для ИП:
Ликвидирован
- для ЮЛ:
- BANKRUPT:
В процессе банкротства - REORGANIZING
В процессе реорганизации, с последующей ликвидацией
- LIQUIDATING:
Проверка наличия клиента в базе#
@startuml
skinparam ConditionEndStyle hline
start
if (Тип\nклиента) is (ФЛ или ИП) then
if (В БД есть клиент\n**ФЛ** с таким ИНН) is (да) then
:это дубль;
else (НЕТ)
:это не дубль;
endif
else (ЮЛ)
if (В БД есть клиент\n**ЮЛ** с таким ИНН и КПП) is (да) then
:это дубль;
else (НЕТ)
:это не дубль;
endif
endif
end
@enduml
Если проверка на дубли показала что пользователь пытается создать дублирующего клиента, система отображает сообщение об ошибке под полем ИНН или E-MAIL
Создание объектов#
@startuml
skinparam ConditionEndStyle hline
start
:Создать объект Customer;
if (Тип\nклиента) is (ФЛ или ИП) then
:Создать объект Person;
else (ЮЛ)
:Создать объект Company;
endif
end
@enduml
customer
type: из выбранного варианта в меню "Пригласить клиента".status: ACTIVEemail: из поля на форме.partner: из поля на форме.- если создает приглашение пользователь с ролю PARTNER, в
partnerзаписывается партнер связанный с текущим пользователем.
- если создает приглашение пользователь с ролю PARTNER, в
createdBy:user.idпользователя, создавшего клиента
company и person
Маппинг атрибутов company и person на поля формы описан в разделе Интерфейс
Журнал событий#
Система создает два события аудита

