@@ -24,7 +24,7 @@ type INN struct {
2424// Validate check to valid inn from input string.
2525// example: input format is 7707083893
2626func Validate (inn string ) (bool , error ) {
27- if len (inn ) != lengthLegal && len (inn ) != lengthPhysical {
27+ if ! IsCompany (inn ) && ! IsEntrepreneur (inn ) {
2828 return false , & models.CommonError {
2929 Method : packageName ,
3030 Err : models .ErrInvalidLength ,
@@ -42,6 +42,25 @@ func Validate(inn string) (bool, error) {
4242 return hash11 (innArr ) == innArr [len (innArr )- 2 ] && hash12 (innArr ) == innArr [len (innArr )- 1 ], nil
4343}
4444
45+ // Generate generate random type inn string value.
46+ func Generate () string {
47+ if utils .RandomDigits (1 )% 2 == 1 {
48+ return GeneratePhysical ()
49+ }
50+
51+ return GenerateLegal ()
52+ }
53+
54+ // IsEntrepreneur check inn for Entrepreneur type
55+ func IsEntrepreneur (inn string ) bool {
56+ return len (inn ) == lengthPhysical
57+ }
58+
59+ // IsCompany check inn for Company type
60+ func IsCompany (inn string ) bool {
61+ return len (inn ) == lengthLegal
62+ }
63+
4564// GenerateLegal generate legal type inn string value.
4665func GenerateLegal () string {
4766 inn := strconv .FormatInt (utils .RandomDigits (9 ), 10 )
@@ -80,25 +99,6 @@ func transformInn(inn string) ([]int, error) {
8099 return innArr , nil
81100}
82101
83- // Generate generate random type inn string value.
84- func Generate () string {
85- if utils .RandomDigits (1 )% 2 == 1 {
86- return GeneratePhysical ()
87- }
88-
89- return GenerateLegal ()
90- }
91-
92- // IsEntrepreneur check inn for Entrepreneur type
93- func IsEntrepreneur (inn string ) bool {
94- return len (inn ) == lengthPhysical
95- }
96-
97- // IsCompany check inn for Company type
98- func IsCompany (inn string ) bool {
99- return len (inn ) == lengthLegal
100- }
101-
102102func hash10 (innArr []int ) int {
103103 return ((2 * innArr [0 ] + 4 * innArr [1 ] + 10 * innArr [2 ] + 3 * innArr [3 ] +
104104 5 * innArr [4 ] + 9 * innArr [5 ] + 4 * innArr [6 ] + 6 * innArr [7 ] + 8 * innArr [8 ]) % 11 ) % 10
0 commit comments