diff --git a/pkg/schet/celi.go b/pkg/schet/celi.go index bad1d73..60bb9ce 100644 --- a/pkg/schet/celi.go +++ b/pkg/schet/celi.go @@ -8,6 +8,9 @@ const ( ЦельОПС = "ОПС" Цель1пр = "1пр" ЦельУСН = "УСН" + + КБК_ОПС = "18210202000011000160" + СрокУплаты_ОПС_префикс = "9.01." ) var ( diff --git a/pkg/schet/features/app.feature b/pkg/schet/features/app.feature index ab3185b..3bef989 100644 --- a/pkg/schet/features/app.feature +++ b/pkg/schet/features/app.feature @@ -134,3 +134,15 @@ То Цель "УСН" за 2 квартал достигнута: "-" То Цель "УСН" за 3 квартал достигнута: "-" То Цель "УСН" за 4 квартал достигнута: "-" + + Сценарий: Параметры ОПС: КБК и срок уплаты + Дано Год: 2024 + То КБК "ОПС": "18210202000011000160" + То Срок уплаты "ОПС": "9.01.2025" + + Сценарий: Параметры неизвестного: КБК и срок уплаты + Дано Год: 2024 + Дано Квартал: 1 + Дано Должна быть ошибка + То КБК "неизвестного": "" + То Срок уплаты "неизвестного": "" diff --git a/pkg/schet/init_test.go b/pkg/schet/init_test.go index 935338e..27978d4 100644 --- a/pkg/schet/init_test.go +++ b/pkg/schet/init_test.go @@ -30,6 +30,8 @@ func InitializeScenario(ctx *godog.ScenarioContext) { ctx.Step(`^Должна быть ошибка$`, должнаБытьОшибка) ctx.Step(`^Действие: "([^"]*)" за (\d+) квартал$`, действиеЗаКвартал) ctx.Step(`^Цель "([^"]*)" за (\d+) квартал достигнута: "([^"]*)"$`, цельЗаКварталДостигнута) + ctx.Step(`^КБК "([^"]*)": "([^"]*)"$`, кБК) + ctx.Step(`^Срок уплаты "([^"]*)": "([^"]*)"$`, срокУплаты) // ----------------------- ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) { diff --git a/pkg/schet/schet.go b/pkg/schet/schet.go index 22f183c..32a3a5a 100644 --- a/pkg/schet/schet.go +++ b/pkg/schet/schet.go @@ -1,5 +1,7 @@ package schet +import "fmt" + const ( КоличествоКварталов = 4 НомерПервогоКвартала = 1 @@ -101,3 +103,22 @@ func (g *Год) Вывести(out OutIface) error { g.out = out return out.Печать(g) } + +func (g *Год) КБК(цель string) (string, error) { + switch цель { + case ЦельОПС: + return КБК_ОПС, nil + } + return "", ErrНеизвестнаяЦель +} + +func (g *Год) СрокУплаты(цель string) (string, error) { + switch цель { + case ЦельОПС: + return g.срокУплаты_ОПС(), nil + } + return "", ErrНеизвестнаяЦель +} +func (g *Год) срокУплаты_ОПС() string { + return fmt.Sprintf("%v%v", СрокУплаты_ОПС_префикс, g.год+1) +} diff --git a/pkg/schet/schet_test.go b/pkg/schet/schet_test.go index 5fb9579..0633c19 100644 --- a/pkg/schet/schet_test.go +++ b/pkg/schet/schet_test.go @@ -115,3 +115,24 @@ func действиеЗаКвартал(цель string, квартал int) { func цельЗаКварталДостигнута(цель string, квартал int, достигнута string) { Ω(t.g.ЦельДостигнута(цель, квартал)).To(Be(Истина(достигнута)), "цельЗаКварталДостигнута: "+цель) } + +func кБК(цель, кбк string) { + k, err := t.g.КБК(цель) + if t.должнаБытьОшибка { + Err(err) + } else { + Ok(err) + } + + Ω(k).To(Be(кбк), "кбк: "+цель) +} +func срокУплаты(цель, дата string) { + d, err := t.g.СрокУплаты(цель) + if t.должнаБытьОшибка { + Err(err) + } else { + Ok(err) + } + + Ω(d).To(Be(дата), "срокУплаты: "+цель) +}