Skip to content

Commit 3fd534a

Browse files
committed
add: validate registraion reason in kpp
1 parent 8a8624c commit 3fd534a

File tree

7 files changed

+85
-13
lines changed

7 files changed

+85
-13
lines changed

errors.go

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,36 @@ package ru_doc_code
33
import "errors"
44

55
var (
6-
ErrInvalidINNLength = errors.New("invalid inn length")
7-
ErrInvalidBIKLength = errors.New("invalid bik length")
8-
ErrInvalidKPPLength = errors.New("invalid kpp length")
9-
ErrInvalidOGRNLength = errors.New("invalid ogrn length")
6+
// ErrInvalidINNLength
7+
ErrInvalidINNLength = errors.New("invalid inn length")
8+
9+
// ErrInvalidBIKLength
10+
ErrInvalidBIKLength = errors.New("invalid bik length")
11+
12+
// ErrInvalidKPPLength
13+
ErrInvalidKPPLength = errors.New("invalid kpp length")
14+
15+
// ErrInvalidOGRNLength
16+
ErrInvalidOGRNLength = errors.New("invalid ogrn length")
17+
18+
// ErrInvalidOGRNIPLength
1019
ErrInvalidOGRNIPLength = errors.New("invalid ogrinp length")
11-
ErrInvalidSNILSLength = errors.New("invalid snils length")
1220

21+
// ErrInvalidSNILSLength
22+
ErrInvalidSNILSLength = errors.New("invalid snils length")
23+
24+
// ErrInvalidFormattedSNILSLength
1325
ErrInvalidFormattedSNILSLength = errors.New("invalid formatted snils length")
1426

27+
// ErrInvalidRegistrationReasonCode
28+
ErrInvalidRegistrationReasonCode = errors.New("invalid registration reason code")
29+
30+
// ErrInvalidValue
1531
ErrInvalidValue = errors.New("invalid code value")
1632

33+
// ErrInvalidBIKCountryCode
1734
ErrInvalidBIKCountryCode = errors.New("invalid bik country code")
1835

36+
// ErrNotImplemented
1937
ErrNotImplemented = errors.New("method does not implemented")
2038
)

inn/inn.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ const (
1212
lengthPhysical = 12
1313
)
1414

15+
type INN struct {
16+
Code ru_doc_code.TaxRegionCode
17+
SerialNumber ru_doc_code.SerialNumber
18+
Hash10 uint
19+
Hash11 uint
20+
Hash12 uint
21+
}
22+
1523
// Validate check to valid inn from input string.
1624
// example: input format is 7707083893
1725
func Validate(inn string) (bool, error) {

kpp/kpp.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
package kpp
22

3-
import ru_doc_code "github.com/mrfoe7/ru-doc-code"
3+
import (
4+
ru_doc_code "github.com/mrfoe7/ru-doc-code"
5+
)
6+
7+
type KPP struct {
8+
Code ru_doc_code.TaxRegionCode
9+
Reason ru_doc_code.ReasionRegistration
10+
SerialNumber ru_doc_code.SerialNumber
11+
}
412

513
// Validate check to valid KPP format
614
// example: input format is 773643301
@@ -14,5 +22,12 @@ func Validate(kpp string) (bool, error) {
1422
return false, err
1523
}
1624

25+
// todo: validate tax region/office ru_doc_code.TaxRegionCode(kpp[:4])
26+
27+
_, ok := ru_doc_code.SupportedRegistrationReasionSet[ru_doc_code.RegistrationReasionCode(kpp[4:6])]
28+
if !ok {
29+
return false, ru_doc_code.ErrInvalidRegistrationReasonCode
30+
}
31+
1732
return true, nil
1833
}

kpp/kpp_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,24 @@ func TestValidate(t *testing.T) {
7171
assert.Equal(t, true, errors.Is(test.Error, err), test.Code)
7272
}
7373
})
74+
75+
t.Run("invalid refistration reason code", func(t *testing.T) {
76+
testCases := []ru_doc_code.TestCodeCase{
77+
{
78+
Code: "773643301",
79+
Error: ru_doc_code.ErrInvalidRegistrationReasonCode,
80+
IsValid: false,
81+
},
82+
{
83+
Code: "773642301",
84+
Error: nil,
85+
IsValid: true,
86+
},
87+
}
88+
for _, test := range testCases {
89+
isValid, err := Validate(test.Code)
90+
assert.Equal(t, isValid, test.IsValid, test.Code)
91+
assert.Equal(t, true, errors.Is(test.Error, err), test.Code)
92+
}
93+
})
7494
}

models.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package ru_doc_code
22

3+
type SerialNumber string
4+
35
type TaxRegionCode string
46

7+
type RegistrationReasionCode string
8+
59
type TaxOffice struct {
610
RegionCode TaxRegionCode
711
OfficeName string
@@ -13,14 +17,17 @@ type TaxDepartment struct {
1317
}
1418

1519
type ReasionRegistration struct {
16-
Code ReasionRegistrationCode
20+
Code RegistrationReasionCode
1721
Description string
1822
}
1923

20-
type ReasionRegistrationCode string
21-
2224
var (
23-
SupportedTaxDepartamenstSet = map[TaxRegionCode]string{
25+
SupportedTaxOfficesSet = map[TaxRegionCode]string{
26+
"": "",
27+
}
28+
29+
SupportedTaxDepartmensSet = map[TaxRegionCode]string{
30+
"0000": "ФНС России",
2431
"0100": "УФНС России по Республике Адыгея",
2532
"0200": "УФНС России по Республике Башкортостан",
2633
"0400": "Управление ФНС России по Республике Алтай",
@@ -127,7 +134,7 @@ var (
127134
"9998": "ФНС России (Р)",
128135
}
129136

130-
SupportedReasionRegistrationSet = map[ReasionRegistrationCode]string{
137+
SupportedRegistrationReasionSet = map[RegistrationReasionCode]string{
131138
"01": "Постановка на учет в налоговом органе российской организации в качестве налогоплательщика по месту ее нахождения",
132139
"02": "Постановка на учет налогоплательщика - российской организации по месту нахождения ее филиала, исполняющего обязанности организации по уплате налогов и сборов",
133140
"03": "Постановка на учет налогоплательщика - российской организации по месту нахождения ее филиала, не исполняющего обязанности организации по уплате налогов и сборов",

okato/okato.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package okato
22

3+
import ru_doc_code "github.com/mrfoe7/ru-doc-code"
4+
35
// Validate check to valid OKATO format
46
// example: input format is 17205000000
57
func Validate() (bool, error) {
6-
return false, ErrNotImplemented
8+
return false, ru_doc_code.ErrNotImplemented
79
}

oktmo/oktmo.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package oktmo
22

3+
import ru_doc_code "github.com/mrfoe7/ru-doc-code"
4+
35
// Validate check to valid OKTMO format
46
// example: input format is 17605101
57
func Validate() (bool, error) {
6-
return false, ErrNotImplemented
8+
return false, ru_doc_code.ErrNotImplemented
79
}

0 commit comments

Comments
 (0)