Skip to content

Commit 9e47a06

Browse files
committed
ref
1 parent d78431d commit 9e47a06

File tree

7 files changed

+224
-44
lines changed

7 files changed

+224
-44
lines changed

models/fts_data.go renamed to data/fts.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,35 @@
1-
package models
1+
package data
22

33
// TODO: trie
44
// root depart map[region]struct{
55
// Name: }map[]
66

77
type TaxDepart struct {
8-
Code int
98
Name string
10-
Branches map[string]TaxDepart
9+
Branches map[int]TaxDepart
1110
}
1211

13-
var SupportedTaxDepartment = map[string]string{
12+
var SupportedTaxDepartment = map[int]TaxDepart{
13+
0: TaxDepart{
14+
Name: "ФНС России",
15+
},
16+
1: TaxDepart{
17+
Name: "УФНС России по Республике Адыгея",
18+
Branches: map[int]TaxDepart{
19+
1: {
20+
Name: "Межрайонная инспекция Федеральной налоговой службы №2 по Республике Адыгея",
21+
},
22+
5: {
23+
Name: "Межрайонная инспекция Федеральной налоговой службы №1 по Республике Адыгея",
24+
},
25+
7: {
26+
Name: "Межрайонная инспекция Федеральной налоговой службы №3 по Республике Адыгея",
27+
},
28+
},
29+
},
30+
}
31+
32+
var SupportedTaxDepartmentTmp = map[string]string{
1433
"0000": "ФНС России",
1534
"0100": "УФНС России по Республике Адыгея",
1635
"0200": "УФНС России по Республике Башкортостан",

models/models.go renamed to data/models.go

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package models
1+
package data
22

33
import "github.com/sshaplygin/docs-code/utils"
44

@@ -8,6 +8,18 @@ const (
88

99
minSubjectCodeLength = 0
1010
maxSubjectCodeLength = 99
11+
12+
// Иные территории
13+
defaultSubjectStrCode = "99"
14+
defaultSubjectCode = 99
15+
)
16+
17+
// RegionTaxServiceNumber
18+
const (
19+
regionTaxServiceNumberLength = 2
20+
21+
minRegionTaxServiceNumberLength = 0
22+
maxRegionTaxServiceNumbereLength = 99
1123
)
1224

1325
// ConstitutionSubjectCode required length 2.
@@ -19,46 +31,46 @@ func (csc ConstitutionSubjectCode) IsValid() bool {
1931
return false
2032
}
2133

22-
_, ok := supportedSubjectsCodes[csc]
34+
_, ok := SupportedSubjectsCodes[csc]
2335
return ok
2436
}
2537

2638
func (csc ConstitutionSubjectCode) String() string {
27-
_, ok := supportedCountryCodes[cc]
39+
_, ok := SupportedSubjectsCodes[csc]
2840
if !ok {
29-
return RussiaCountryCode.String()
41+
return defaultSubjectStrCode
3042
}
3143

32-
return utils.StrCode(int(cc), countryCodeLength)
44+
return utils.StrCode(int(csc), subjectCodeLength)
3345
}
3446

3547
func (csc ConstitutionSubjectCode) GetName() string {
36-
codeName, ok := supportedCountryCodes[cc]
48+
codeName, ok := SupportedSubjectsCodes[csc]
3749
if !ok {
38-
return unspecifiedCountryCode
50+
return SupportedSubjectsCodes[defaultSubjectCode]
3951
}
4052

4153
return codeName
4254
}
4355

56+
func GenerateConstitutionSubjectCode() ConstitutionSubjectCode {
57+
return subjectsCodes[utils.Random(0, len(subjectsCodes)-1)]
58+
}
59+
4460
type RegionTaxServiceNumber int
4561

46-
func (rtn RegionTaxServiceNumber) IsValid() bool {
47-
if csc < minSubjectCodeLength || csc > maxSubjectCodeLength {
62+
func (rtsn RegionTaxServiceNumber) IsValid() bool {
63+
if rtsn < minRegionTaxServiceNumberLength || rtsn > maxRegionTaxServiceNumbereLength {
4864
return false
4965
}
5066

5167
_, ok := supportedSubjectsCodes[csc]
5268
return ok
5369
}
5470

55-
func (rtn RegionTaxServiceNumber) String() string {
56-
_, ok := supportedCountryCodes[cc]
57-
if !ok {
58-
return RussiaCountryCode.String()
59-
}
60-
61-
return utils.StrCode(int(cc), countryCodeLength)
71+
func (rtsn RegionTaxServiceNumber) String() string {
72+
// todo:
73+
return utils.StrCode(int(rtsn), regionTaxServiceNumberLength)
6274
}
6375

6476
const rootTaxServiceDepart = "0000"

data/subjects.go

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
package data
2+
3+
var subjectsCodes []ConstitutionSubjectCode
4+
5+
var SupportedSubjectsCodes = map[ConstitutionSubjectCode]string{
6+
1: "Республика Адыгея (Адыгея)",
7+
2: "Республика Башкортостан",
8+
3: "Республика Бурятия",
9+
4: "Республика Алтай",
10+
5: "Республика Дагестан",
11+
6: "Республика Ингушетия",
12+
7: "Кабардино-Балкарская Республика",
13+
8: "Республика Калмыкия",
14+
9: "Карачаево-Черкесская Республика",
15+
10: "Республика Карелия",
16+
11: "Республика Коми",
17+
12: "Республика Марий Эл",
18+
13: "Республика Мордовия",
19+
14: "Республика Саха (Якутия)",
20+
15: "Республика Северная Осетия - Алания",
21+
16: "Республика Татарстан (Татарстан)",
22+
17: "Республика Тыва",
23+
18: "Удмуртская Республика",
24+
19: "Республика Хакасия",
25+
20: "Чеченская Республика",
26+
21: "Чувашская Республика - Чувашия",
27+
22: "Алтайский край",
28+
23: "Краснодарский край",
29+
24: "Красноярский край",
30+
25: "Приморский край",
31+
26: "Ставропольский край",
32+
27: "Хабаровский край",
33+
28: "Амурская область",
34+
29: "Архангельская область",
35+
30: "Астраханская область",
36+
31: "Белгородская область",
37+
32: "Брянская область",
38+
33: "Владимирская область",
39+
34: "Волгоградская область",
40+
35: "Вологодская область",
41+
36: "Воронежская область",
42+
37: "Ивановская область",
43+
38: "Иркутская область",
44+
39: "Калининградская область",
45+
40: "Калужская область",
46+
41: "Камчатский край",
47+
42: "Кемеровская область",
48+
43: "Кировская область",
49+
44: "Костромская область",
50+
45: "Курганская область",
51+
46: "Курская область",
52+
47: "Ленинградская область",
53+
48: "Липецкая область",
54+
49: "Магаданская область",
55+
50: "Московская область",
56+
51: "Мурманская область",
57+
52: "Нижегородская область",
58+
53: "Новгородская область",
59+
54: "Новосибирская область",
60+
55: "Омская область",
61+
56: "Оренбургская область",
62+
57: "Орловская область",
63+
58: "Пензенская область",
64+
59: "Пермский край",
65+
60: "Псковская область",
66+
61: "Ростовская область",
67+
62: "Рязанская область",
68+
63: "Самарская область",
69+
64: "Саратовская область",
70+
65: "Сахалинская область",
71+
66: "Свердловская область",
72+
67: "Смоленская область",
73+
68: "Тамбовская область",
74+
69: "Тверская область",
75+
70: "Томская область",
76+
71: "Тульская область",
77+
72: "Тюменская область",
78+
73: "Ульяновская область",
79+
74: "Челябинская область",
80+
75: "Забайкальский край",
81+
76: "Ярославская область",
82+
77: "г. Москва",
83+
78: "г. Санкт-Петербург",
84+
79: "Еврейская автономная область",
85+
83: "Ненецкий автономный округ",
86+
86: "Ханты-Мансийский автономный округ - Югра",
87+
87: "Чукотский автономный округ",
88+
89: "Ямало-Ненецкий автономный округ",
89+
91: "Республика Крым",
90+
92: "г. Севастополь",
91+
99: "Иные территории, включая город и космодром Байконур",
92+
}
93+
94+
func init() {
95+
subjectsCodes = make([]ConstitutionSubjectCode, 0, len(SupportedSubjectsCodes))
96+
for code := range SupportedSubjectsCodes {
97+
subjectsCodes = append(subjectsCodes, code)
98+
}
99+
}

kpp/errors.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,16 @@ var (
88

99
// ErrRegistrationReasonCode invalid registration reason code
1010
ErrRegistrationReasonCode = errors.New("invalid registration reason code")
11+
12+
// ErrInvalidSubjectCode
13+
ErrInvalidSubjectCode = errors.New("")
14+
15+
// ErrInvalidRecorderCode
16+
ErrInvalidRecorderCode = errors.New("")
17+
18+
// ErrInvalidReasonCode
19+
ErrInvalidReasonCode = errors.New("")
20+
21+
// ErrInvalidSerialNumber
22+
ErrInvalidSerialNumber = errors.New("")
1123
)

kpp/models.go

Lines changed: 53 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"strings"
66

7+
"github.com/sshaplygin/docs-code/data"
78
"github.com/sshaplygin/docs-code/models"
89
"github.com/sshaplygin/docs-code/utils"
910
)
@@ -56,6 +57,51 @@ type (
5657
SerialNumber int
5758
)
5859

60+
func (rc RecorderCode) String() string {
61+
// TODO:
62+
return ""
63+
}
64+
65+
func (rc RecorderCode) IsValid() bool {
66+
// TODO:
67+
return false
68+
}
69+
70+
func GenerateRecorderCode() RecorderCode {
71+
// TODO:
72+
return 0
73+
}
74+
75+
func (rr RegistrationReason) String() string {
76+
// TODO:
77+
return ""
78+
}
79+
80+
func (rr RegistrationReason) IsValid() bool {
81+
// TODO:
82+
return false
83+
}
84+
85+
func GenerateRegistrationReason() RegistrationReason {
86+
// TODO:
87+
return ""
88+
}
89+
90+
func (sn SerialNumber) IsValid() bool {
91+
// TODO:
92+
return false
93+
}
94+
95+
func (sn SerialNumber) String() string {
96+
// TODO:
97+
return ""
98+
}
99+
100+
func GenerateSerialNumber() SerialNumber {
101+
// TODO:
102+
return 0
103+
}
104+
59105
func ParseKPP(kpp string) (*KPPStruct, error) {
60106
if len(kpp) != codeLength {
61107
return nil, &models.CommonError{
@@ -80,23 +126,23 @@ func ParseKPP(kpp string) (*KPPStruct, error) {
80126
}
81127

82128
return &KPPStruct{
83-
subjectCode: ConstitutionSubjectCode(utils.SliceToInt(subjectCodeArr)),
129+
subjectCode: data.ConstitutionSubjectCode(utils.SliceToInt(subjectCodeArr)),
84130
recorderCode: RecorderCode(utils.SliceToInt(recorderCodeArr)),
85131
reasonCode: RegistrationReason(kpp[4:6]),
86132
serialNumber: SerialNumber(utils.SliceToInt(servialNumberArr)),
87133
}, nil
88134
}
89135

90136
type KPPStruct struct {
91-
subjectCode models.ConstitutionSubjectCode
137+
subjectCode data.ConstitutionSubjectCode
92138
recorderCode RecorderCode
93139
reasonCode RegistrationReason
94140
serialNumber SerialNumber
95141
}
96142

97143
func NewKPP() *KPPStruct {
98144
return &KPPStruct{
99-
subjectCode: GenerateConstitutionSubjectCode(),
145+
subjectCode: data.GenerateConstitutionSubjectCode(),
100146
recorderCode: GenerateRecorderCode(),
101147
reasonCode: GenerateRegistrationReason(),
102148
serialNumber: GenerateSerialNumber(),
@@ -112,19 +158,19 @@ func (kpp *KPPStruct) IsValid() (bool, error) {
112158
}
113159

114160
if !kpp.subjectCode.IsValid() {
115-
return false, fmt.Errorf(validateErrorTmpl, ErrInvalidCountryCode, kpp.subjectCode)
161+
return false, fmt.Errorf(validateErrorTmpl, ErrInvalidSubjectCode, kpp.subjectCode)
116162
}
117163

118164
if !kpp.recorderCode.IsValid() {
119-
return false, fmt.Errorf(validateErrorTmpl, ErrInvalidTerritoryCode, kpp.recorderCode)
165+
return false, fmt.Errorf(validateErrorTmpl, ErrInvalidRecorderCode, kpp.recorderCode)
120166
}
121167

122168
if !kpp.reasonCode.IsValid() {
123-
return false, fmt.Errorf(validateErrorTmpl, ErrInvalidUnitConditionalNumber, kpp.reasonCode)
169+
return false, fmt.Errorf(validateErrorTmpl, ErrInvalidReasonCode, kpp.reasonCode)
124170
}
125171

126172
if !kpp.serialNumber.IsValid() {
127-
return false, fmt.Errorf(validateErrorTmpl, ErrInvalidLastAccountNumbers, kpp.serialNumber)
173+
return false, fmt.Errorf(validateErrorTmpl, ErrInvalidSerialNumber, kpp.serialNumber)
128174
}
129175

130176
return true, nil

models/subjects_data.go

Lines changed: 0 additions & 3 deletions
This file was deleted.

parser/subjects/main.go

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,24 +22,19 @@ func main() {
2222
doc, err := goquery.NewDocumentFromReader(file)
2323
checkErr(err)
2424

25-
// fmt.Println("var fisrtLevel = map[int]string{")
25+
var i int
26+
fmt.Println("var SupportedSubjectsCodes = map[ConstitutionSubjectCode]string{")
2627
doc.Find(".doc-table").Each(func(_ int, s *goquery.Selection) {
27-
// fmt.Println(s.Text())
2828
s.Find("td").Each(func(_ int, s *goquery.Selection) {
29-
// s.
30-
fmt.Println("->", strings.TrimSpace(s.Text()))
31-
// href, exists := s.Attr("href")
32-
// if !exists {
33-
// return
34-
// }
35-
36-
// parts := strings.Split(href, "/")
37-
// name := strings.Split(s.Text(), " - ")
38-
39-
// fmt.Println(parts[len(parts)-1]+":", `"`+strings.TrimSpace(excludeDigits(name[1]))+`",`)
29+
if i%2 == 0 {
30+
fmt.Println(strings.TrimSpace(s.Text()) + `: `)
31+
} else {
32+
fmt.Println(`"` + strings.TrimSpace(s.Text()) + `",`)
33+
}
34+
i++
4035
})
4136
})
42-
// fmt.Println("}")
37+
fmt.Println("}")
4338
}
4439

4540
func checkErr(e error) {

0 commit comments

Comments
 (0)