package cli import ( "fmt" "my/schet/pkg/schet" ) type CLI struct { год *schet.Год } func NewCLI() *CLI { c := &CLI{} return c } func (c *CLI) Печать(год *schet.Год) error { c.год = год fmt.Printf("## Год: %v\n", c.год.Год()) fmt.Printf("* Доход за год: %v р.\n", c.год.Доход()) пр, err := c.год.ПроцентСверх300тр() if err != nil { fmt.Printf("1пр свыше 300тр: ошибка: %v\n", err) return err } fmt.Printf("* 1пр свыше 300тр: %v р.\n", пр) fmt.Printf("\n") err = c.распечататьКварталы() if err != nil { return err } return nil } func (c *CLI) распечататьКварталы() error { цели := c.год.Цели() for _, k := range цели.Кварталы { c.распечататьКвартал(k) } return nil } func (c *CLI) распечататьКвартал(k *schet.Квартал) error { fmt.Printf("### к%v\n", k.Номер()) fmt.Printf("* Доход: %v р.\n", k.Доход()) сделано := пометкаДляЦели(k.ЦельДостигнута(schet.ЦельОПС)) fmt.Printf("- [%v] ОПС: %v р.\n", сделано, k.ОПС.Сумма()) пр, err := k.ПроцентСверх300тр() if err != nil { fmt.Printf("- [ ] 1пр свыше 300тр: ошибка: %v\n", err) return err } сделано = пометкаДляЦели(k.ЦельДостигнута(schet.Цель1пр)) fmt.Printf("- [%v] 1пр свыше 300тр: %v р.\n", сделано, пр) сделано = пометкаДляЦели(k.ЦельДостигнута(schet.ЦельУСН)) fmt.Printf("- [%v] УСН: %v р.\n", сделано, k.УСН.Сумма()) fmt.Printf("\n") return nil } func пометкаДляЦели(b bool) string { if b { return "x" } return " " }