Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
ref
  • Loading branch information
sshaplygin committed Jan 5, 2024
commit 9e47a063acd66a5facbcf53ec37fda9b08ec2ba7
27 changes: 23 additions & 4 deletions models/fts_data.go → data/fts.go
Original file line number Diff line number Diff line change
@@ -1,16 +1,35 @@
package models
package data

// TODO: trie
// root depart map[region]struct{
// Name: }map[]

type TaxDepart struct {
Code int
Name string
Branches map[string]TaxDepart
Branches map[int]TaxDepart
}

var SupportedTaxDepartment = map[string]string{
var SupportedTaxDepartment = map[int]TaxDepart{
0: TaxDepart{
Name: "ФНС России",
},
1: TaxDepart{
Name: "УФНС России по Республике Адыгея",
Branches: map[int]TaxDepart{
1: {
Name: "Межрайонная инспекция Федеральной налоговой службы №2 по Республике Адыгея",
},
5: {
Name: "Межрайонная инспекция Федеральной налоговой службы №1 по Республике Адыгея",
},
7: {
Name: "Межрайонная инспекция Федеральной налоговой службы №3 по Республике Адыгея",
},
},
},
}

var SupportedTaxDepartmentTmp = map[string]string{
"0000": "ФНС России",
"0100": "УФНС России по Республике Адыгея",
"0200": "УФНС России по Республике Башкортостан",
Expand Down
44 changes: 28 additions & 16 deletions models/models.go → data/models.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package models
package data

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

Expand All @@ -8,6 +8,18 @@ const (

minSubjectCodeLength = 0
maxSubjectCodeLength = 99

// Иные территории
defaultSubjectStrCode = "99"
defaultSubjectCode = 99
)

// RegionTaxServiceNumber
const (
regionTaxServiceNumberLength = 2

minRegionTaxServiceNumberLength = 0
maxRegionTaxServiceNumbereLength = 99
)

// ConstitutionSubjectCode required length 2.
Expand All @@ -19,46 +31,46 @@ func (csc ConstitutionSubjectCode) IsValid() bool {
return false
}

_, ok := supportedSubjectsCodes[csc]
_, ok := SupportedSubjectsCodes[csc]
return ok
}

func (csc ConstitutionSubjectCode) String() string {
_, ok := supportedCountryCodes[cc]
_, ok := SupportedSubjectsCodes[csc]
if !ok {
return RussiaCountryCode.String()
return defaultSubjectStrCode
}

return utils.StrCode(int(cc), countryCodeLength)
return utils.StrCode(int(csc), subjectCodeLength)
}

func (csc ConstitutionSubjectCode) GetName() string {
codeName, ok := supportedCountryCodes[cc]
codeName, ok := SupportedSubjectsCodes[csc]
if !ok {
return unspecifiedCountryCode
return SupportedSubjectsCodes[defaultSubjectCode]
}

return codeName
}

func GenerateConstitutionSubjectCode() ConstitutionSubjectCode {
return subjectsCodes[utils.Random(0, len(subjectsCodes)-1)]
}

type RegionTaxServiceNumber int

func (rtn RegionTaxServiceNumber) IsValid() bool {
if csc < minSubjectCodeLength || csc > maxSubjectCodeLength {
func (rtsn RegionTaxServiceNumber) IsValid() bool {
if rtsn < minRegionTaxServiceNumberLength || rtsn > maxRegionTaxServiceNumbereLength {
return false
}

_, ok := supportedSubjectsCodes[csc]
return ok
}

func (rtn RegionTaxServiceNumber) String() string {
_, ok := supportedCountryCodes[cc]
if !ok {
return RussiaCountryCode.String()
}

return utils.StrCode(int(cc), countryCodeLength)
func (rtsn RegionTaxServiceNumber) String() string {
// todo:
return utils.StrCode(int(rtsn), regionTaxServiceNumberLength)
}

const rootTaxServiceDepart = "0000"
Expand Down
99 changes: 99 additions & 0 deletions data/subjects.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
package data

var subjectsCodes []ConstitutionSubjectCode

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

func init() {
subjectsCodes = make([]ConstitutionSubjectCode, 0, len(SupportedSubjectsCodes))
for code := range SupportedSubjectsCodes {
subjectsCodes = append(subjectsCodes, code)
}
}
12 changes: 12 additions & 0 deletions kpp/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,16 @@ var (

// ErrRegistrationReasonCode invalid registration reason code
ErrRegistrationReasonCode = errors.New("invalid registration reason code")

// ErrInvalidSubjectCode
ErrInvalidSubjectCode = errors.New("")

// ErrInvalidRecorderCode
ErrInvalidRecorderCode = errors.New("")

// ErrInvalidReasonCode
ErrInvalidReasonCode = errors.New("")

// ErrInvalidSerialNumber
ErrInvalidSerialNumber = errors.New("")
)
60 changes: 53 additions & 7 deletions kpp/models.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"fmt"
"strings"

"github.com/sshaplygin/docs-code/data"
"github.com/sshaplygin/docs-code/models"
"github.com/sshaplygin/docs-code/utils"
)
Expand Down Expand Up @@ -56,6 +57,51 @@ type (
SerialNumber int
)

func (rc RecorderCode) String() string {
// TODO:
return ""
}

func (rc RecorderCode) IsValid() bool {
// TODO:
return false
}

func GenerateRecorderCode() RecorderCode {
// TODO:
return 0
}

func (rr RegistrationReason) String() string {
// TODO:
return ""
}

func (rr RegistrationReason) IsValid() bool {
// TODO:
return false
}

func GenerateRegistrationReason() RegistrationReason {
// TODO:
return ""
}

func (sn SerialNumber) IsValid() bool {
// TODO:
return false
}

func (sn SerialNumber) String() string {
// TODO:
return ""
}

func GenerateSerialNumber() SerialNumber {
// TODO:
return 0
}

func ParseKPP(kpp string) (*KPPStruct, error) {
if len(kpp) != codeLength {
return nil, &models.CommonError{
Expand All @@ -80,23 +126,23 @@ func ParseKPP(kpp string) (*KPPStruct, error) {
}

return &KPPStruct{
subjectCode: ConstitutionSubjectCode(utils.SliceToInt(subjectCodeArr)),
subjectCode: data.ConstitutionSubjectCode(utils.SliceToInt(subjectCodeArr)),
recorderCode: RecorderCode(utils.SliceToInt(recorderCodeArr)),
reasonCode: RegistrationReason(kpp[4:6]),
serialNumber: SerialNumber(utils.SliceToInt(servialNumberArr)),
}, nil
}

type KPPStruct struct {
subjectCode models.ConstitutionSubjectCode
subjectCode data.ConstitutionSubjectCode
recorderCode RecorderCode
reasonCode RegistrationReason
serialNumber SerialNumber
}

func NewKPP() *KPPStruct {
return &KPPStruct{
subjectCode: GenerateConstitutionSubjectCode(),
subjectCode: data.GenerateConstitutionSubjectCode(),
recorderCode: GenerateRecorderCode(),
reasonCode: GenerateRegistrationReason(),
serialNumber: GenerateSerialNumber(),
Expand All @@ -112,19 +158,19 @@ func (kpp *KPPStruct) IsValid() (bool, error) {
}

if !kpp.subjectCode.IsValid() {
return false, fmt.Errorf(validateErrorTmpl, ErrInvalidCountryCode, kpp.subjectCode)
return false, fmt.Errorf(validateErrorTmpl, ErrInvalidSubjectCode, kpp.subjectCode)
}

if !kpp.recorderCode.IsValid() {
return false, fmt.Errorf(validateErrorTmpl, ErrInvalidTerritoryCode, kpp.recorderCode)
return false, fmt.Errorf(validateErrorTmpl, ErrInvalidRecorderCode, kpp.recorderCode)
}

if !kpp.reasonCode.IsValid() {
return false, fmt.Errorf(validateErrorTmpl, ErrInvalidUnitConditionalNumber, kpp.reasonCode)
return false, fmt.Errorf(validateErrorTmpl, ErrInvalidReasonCode, kpp.reasonCode)
}

if !kpp.serialNumber.IsValid() {
return false, fmt.Errorf(validateErrorTmpl, ErrInvalidLastAccountNumbers, kpp.serialNumber)
return false, fmt.Errorf(validateErrorTmpl, ErrInvalidSerialNumber, kpp.serialNumber)
}

return true, nil
Expand Down
3 changes: 0 additions & 3 deletions models/subjects_data.go

This file was deleted.

23 changes: 9 additions & 14 deletions parser/subjects/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,24 +22,19 @@ func main() {
doc, err := goquery.NewDocumentFromReader(file)
checkErr(err)

// fmt.Println("var fisrtLevel = map[int]string{")
var i int
fmt.Println("var SupportedSubjectsCodes = map[ConstitutionSubjectCode]string{")
doc.Find(".doc-table").Each(func(_ int, s *goquery.Selection) {
// fmt.Println(s.Text())
s.Find("td").Each(func(_ int, s *goquery.Selection) {
// s.
fmt.Println("->", strings.TrimSpace(s.Text()))
// href, exists := s.Attr("href")
// if !exists {
// return
// }

// parts := strings.Split(href, "/")
// name := strings.Split(s.Text(), " - ")

// fmt.Println(parts[len(parts)-1]+":", `"`+strings.TrimSpace(excludeDigits(name[1]))+`",`)
if i%2 == 0 {
fmt.Println(strings.TrimSpace(s.Text()) + `: `)
} else {
fmt.Println(`"` + strings.TrimSpace(s.Text()) + `",`)
}
i++
})
})
// fmt.Println("}")
fmt.Println("}")
}

func checkErr(e error) {
Expand Down