Меню

Генератор данных компаний для проверки форм и KYB

Генератор данных компаний собирает согласованные реквизиты: название с правильным окончанием, регистрационный номер, налоговый идентификатор и юридическую форму. Разбираем поля, проверки и границы применения.

Опубликовано

  • тестовые данные
  • компании
  • разработка

Генератор данных компаний создаёт реквизиты юридического лица, устроенные по правилам конкретной юрисдикции: название с подходящим правовым окончанием, регистрационный номер, налоговый идентификатор, юридическую форму и адрес. Такие записи нужны командам, которые проверяют формы регистрации организаций, выставления счетов и подтверждения контрагентов, и не могут наполнять тестовое окружение сведениями реальных фирм. Трудность не в том, чтобы придумать название, а в том, чтобы все части записи относились к одной стране и не противоречили друг другу. Дальше разберём, из чего состоит такая запись, почему окончание названия зависит от юрисдикции и какие поля обязаны совпадать при проверке контрагента. В конце вы получите список случаев для собственной формы и ясное понимание, чего эти данные подтвердить не могут.

Из чего состоит запись о компании

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

Третья группа — юридическая форма в явном виде: общество с ограниченной ответственностью, акционерное общество, полное товарищество. Она не всегда выводится из названия, потому что в разных странах окончания используются по-разному и иногда допускают несколько форм. Четвёртая группа — адрес и контакты: страна, город, улица, индекс, телефон.

Все группы связаны между собой. Окончание названия должно соответствовать юрисдикции, налоговый номер — форме организации и стране, адрес — той же стране, что и всё остальное. Если собрать поля из разных источников, получится запись, которая выглядит правдоподобно и рассыпается на первой же проверке. Именно поэтому генератор берёт реквизиты из одной записи, а не составляет их из независимых списков.

Почему окончание названия зависит от юрисдикции?

Правовое окончание — это не украшение названия, а указание на форму организации, и в каждой стране оно своё. В Германии распространено общество с ограниченной ответственностью, во Франции и ряде романских юрисдикций — акционерное общество, в Малайзии — частная компания с ограниченной ответственностью, в Австралии — частная компания, в Соединённых Штатах — общество с ограниченной ответственностью, в Турции — акционерное общество. Полный перечень окончаний по странам собран в статье про окончания названий компаний.

Для тестов это важно по двум причинам. Во-первых, печатные формы и счета часто подставляют название организации целиком, и слишком длинное сочетание ломает вёрстку. Во-вторых, проверка ввода может отвергать окончания, которых она не знает, и тогда часть корректных названий не пройдёт.

Второй практический момент — сокращения. Многие окончания имеют краткую форму, и обе формы считаются допустимыми. Форма должна принимать оба варианта, а система сравнения — приводить их к единому виду, иначе одна и та же организация будет выглядеть как две разные.

Третий момент — буквы. В некоторых языках окончания содержат диакритические знаки, и форма, которая приводит всё к латинице без знаков, портит название. Это заметно только на достаточно полном наборе, поэтому такие значения обязательно должны быть в тестовых данных.

Как связаны регистрационный номер и налоговый идентификатор

Регистрационный номер присваивается организации при внесении в торговый реестр и обычно состоит из цифр, иногда с буквенным префиксом или разделителями. Длина и структура у каждой страны свои, и общего правила снова нет. Налоговый идентификатор присваивается отдельно и используется при расчётах; в некоторых странах он совпадает с регистрационным, в других отличается.

Из этого следует типичная ошибка: форма проверяет оба поля одним шаблоном. Если у страны налоговый номер короче регистрационного, второе поле будет отвергнуто без причины. О том, как устроены налоговые номера в разных странах, подробно рассказано в статье про форматы налоговых номеров.

Второе следствие — проверка контрольного знака. Во многих налоговых номерах последние цифры вычисляются по правилу, и произвольный набор цифр такой проверки не пройдёт. Значит, генератор должен считать контрольную сумму, иначе тестовые данные будут валиться на первом шаге валидации, и проверить остальную логику не получится.

Третье — форматирование. Налоговые номера часто записывают с разделителями, а иногда без. Все варианты означают одно и то же значение, и форма должна либо принимать их, либо явно приводить к единому виду. Проверка, которая сравнивает строки буквально, будет отвергать корректные записи.

Зачем в наборе нужны LEI и номер D-U-N-S?

Международный идентификатор участника финансовых операций предназначен для однозначного обозначения юридического лица в глобальных расчётах. Он имеет фиксированную длину и собственную контрольную сумму, а его знаки распределены между кодом местной системы нумерации и остальной частью. Логика проверки у него отличается и от налогового номера, и от регистрационного, поэтому его стоит выделить в отдельный случай.

Номер D-U-N-S, используемый для идентификации организаций в деловых справочниках, тоже состоит из фиксированного числа цифр и часто фигурирует в формах подтверждения контрагента. Как и остальные идентификаторы, он не выводится из названия компании и не проверяется без обращения к справочнику.

Нужны ли эти поля вашей форме, зависит от сценария. Для внутренней регистрации достаточно названия и налогового номера, а для процедур подтверждения контрагента международные идентификаторы становятся обязательными. Если поле есть в интерфейсе, оно должно быть в тестовом наборе, иначе поведение формы при его заполнении останется непроверенным. Разбор различий между этими идентификаторами есть в материале про идентификаторы организаций.

Какие поля должны совпадать при проверке контрагента

Первая связка — страна и налоговый номер. Формат номера зависит от страны регистрации, и подмена одного из полей должна обнаруживаться. Вторая связка — страна и правовое окончание названия: если в записи указана одна юрисдикция, а окончание принадлежит другой, проверка обязана это заметить.

Третья связка — адрес и страна регистрации. В большинстве случаев они совпадают, но законно расходятся, когда у организации есть представительство в другой стране. Из-за этого проверка не должна быть категоричной: расхождение — повод показать предупреждение, а не отказ.

Четвёртая связка — юридическая форма и налоговый номер. Форма влияет на порядок присвоения номера в некоторых странах, и проверка, которая это знает, ловит часть подделок данных. Пятая связка — дата регистрации и возраст организации: значение в будущем или слишком раннее должно вызывать вопросы.

Шестая связка, которую часто забывают, — согласованность названий внутри набора. Если в тестовом наборе у двух разных организаций одинаковое название, проверка уникальности будет срабатывать на пустом месте. Генератор должен выдавать различимые названия, а если уникальность намеренно продублирована, это должно быть отмечено в самом наборе. Общий разбор процедур подтверждения приведён в статье про проверку контрагента.

Что проверить в форме для юридических лиц?

Начните с полей названия. Форма должна принимать длинные названия с окончанием, сокращённые формы и варианты с диакритикой. Отдельно проверьте ограничение на длину: слишком короткое поле обрежет часть корректных названий, а сообщение об ошибке об этом не скажет.

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

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

После этого проверьте отображение и печатные формы. Название организации попадает в счёт, в договор и в электронное письмо, где ширина ограничена. Длинное название с полным окончанием ломает вёрстку чаще, чем кажется, и заметить это можно только на достаточно длинных значениях.

И последнее — проверьте, как форма ведёт себя при повторном вводе той же организации. Дублирование контрагента — реальная проблема, и правило сопоставления стоит испытать на записях, которые различаются только формой записи названия или разделителями в номере.

Почему в наборе нужны разные юридические формы?

Форма организации влияет не только на окончание названия, но и на набор обязательных полей. У общества с ограниченной ответственностью и у акционерного общества различаются сведения об учредителях, о капитале и о порядке принятия решений, и форма подтверждения контрагента запрашивает разные данные в зависимости от выбранного варианта.

Отсюда первое требование к тестовому набору: в нём должны быть представлены хотя бы два-три типа организации, а не один. На однотипных данных ветвление логики останется непроверенным, и дефект проявится только у живого пользователя, который выбрал другую форму и не увидел нужных полей.

Второе требование касается филиалов и представительств. Они не являются отдельными организациями, но имеют собственные идентификаторы и адреса, и порядок проверки для них отличается. Если ваша форма поддерживает такие случаи, добавьте их в набор отдельной группой.

Третье — организации, зарегистрированные в одной стране, но ведущие деятельность в другой. Это законная ситуация, и она проверяет, не путает ли система страну регистрации со страной налогового резидентства. Ошибка здесь встречается часто, потому что поля называются похоже, а означают разное.

Четвёртое — государственные и некоммерческие организации. У них свои формы и свои правила регистрации, и форма, которая знает только коммерческие варианты, отсечёт часть корректных записей. Если такие субъекты в вашей системе не встречаются, ограничение стоит выразить явно.

Наконец, отметьте в описании набора, какие сочетания страны и формы организации считаются допустимыми, а какие намеренно оставлены как негативные случаи. Без этой пометки следующий разработчик решит, что набор содержит ошибку, и исправит ровно то, что вы проверяли.

Границы: чего эти записи не подтверждают

Все реквизиты, которые выдаёт генератор данных для компаний, синтетические. Название, регистрационный номер, налоговый идентификатор и адрес построены по правилам выбранной страны и согласованы между собой, но за ними не стоит ни одна зарегистрированная организация.

Из этого следуют практические границы. Такую запись нельзя использовать как подтверждение существования контрагента, нельзя предъявлять как свои реквизиты и нельзя применять, чтобы выдать себя за действующую фирму. Проверка по торговому реестру или по справочнику организаций такую запись не подтвердит, потому что подтверждать нечего.

Назначение этих образцов — проверка ваших собственных форм, справочников, правил согласованности и тестовых окружений. Всё остальное лежит вне задачи, и об этом стоит написать прямо в документации проекта, чтобы у новых участников команды не возникло соблазна применить набор иначе.

Что делать дальше

Выпишите, какие страны и какие юридические формы поддерживает ваша форма, и составьте для каждой по одной положительной и нескольким отрицательным записям. Затем добавьте случаи с международными идентификаторами и записи с расхождением адреса и страны регистрации, чтобы увидеть, как система реагирует на пограничные ситуации. После этого сверьте свои ожидания с тем, что реально проверяет код, и зафиксируйте набор в репозитории вместе с описанием, какие поля считаются обязательными, — так тестовые данные перестанут зависеть от того, кто именно их придумал.

Читать дальше

Популярные инструменты и статьи о применении