Taxer — это автоматизированный бухгалтер. На данный момент системой пользуются сотни тысяч Украинских предпринимателей. Это онлайн платформа, в которой Вы можете быстро и безопасно сдавать налоговую отчётность прямо в налоговую через интернет используя свою электронно-цифровую подпись. Интересный факт. Основатель нашей организации systems.ingello ранее работал в компании Таксер на позиции технического директора и принимал активное участие в разработке данного сервиса. В этой статье будет рассказано о некоторых публично-известных деталях автоматизации такого рода. Конечно, мы не будем затрагивать информацию, которая является корпоративно-ценной и конфиденциальной для таксера.

https://taxer.ua

Таксер - это крупнейший Украинский проект в сфере систематизации и автоматизации сдачи налоговой отчётности с использованием цифровой подписи. Им регулярно пользуются сотни тысяч украинский предпринимателей, предприятий, бухгалтеров и менеджеров. Компания взяла на себя задачу разобраться и упростить возможно одну из самых сложных и запутанных предметных областей и ей это удалось, таксер один из первых подобных сервисов в стране и на 2024 год - самый популярный и самый удобный. Сервис позволяет как в бесплатном режиме сдавать налоговую отчётность, так и в платном - где доступны средства автоматического заполнения документов, что существенно сокращает затраты по времени. Также содержатся инструменты для ведения бухгалтерия, календари, напоминалки, обширная база знаний. Компания отслеживает все изменения в украинском налоговом законодательстве и актуализирует свой сервис и информационную базу.

Если Вы сталкивались с автоматизацией в сфере государственных и административных структур — Вы знаете, какой это ад. Если не сталкивались — тогда, возможно, Вам приходилось работать с бухгалтерией и сдавать налоговые отчёты “вручную” — через эти бумажные формы и отделения ДФСУ. Так вот. Автоматизировать сдачу налоговой отчётности — в сотни раз труднее.

Дело в том, что API (или, точнее сказать, налоговые государственные шлюзы) работали и работают не достаточно стабильно, плохо продокументированы, используют непопулярные методы выдачи данных и валидации, часто работают контр-интуитивно с избыточными или недостаточными функциями. Правила часто меняются, иногда отчёты не принимаются и на это не даётся отчётливое описание причины, приходится выяснять это косвенными и креативными методами. Программисты на стороне государства могут выкатывать нове версии, не достоверно протестировав результат или не внеся это в соответствующую докумнентацию. Та документация, которая имеется — это отдельная и тоже сложная история, которая не покрывает всех потенциальных вопросов и проблем.

Сама система принятия налоговой отчётности — это многоэтапный процесс. Он включает в себя полностью автоматическую проверку, полу-автоматическую и проверку налоговым инспектором лично. Все эти этапы полны потенциальных ошибок с обеих сторон, и в этих условиях должен работать сервис, максимально скругляя углы этого заковырчастого флоу.

Конечно, самый тяжелый этап — это автоматический режим. Сам отчётный документ — это достаточно сложный объект (а точнее - группа объектов, аггрегат) с множеством взаимосвязанных свойств. Некоторые документы состоят из композита под-документов, состоящих из десятков блоков, каждый из которых состоит из форм-опросов. И таких документов даже самый обыкновенный предприниматель сдаёт несколько.

Чтобы сдать документ — он должен пройти достаточно сложную автоматическую проверку — валидацию. Сам документ представляет собой XML объект (нужно ли упомянуть, что это не самый популярный формат в современных программных интерфейсах). А валидация представляет собой XSD валидатор. Это тоже сложный вложенный XML объект, который декларирует правила, по которым отчёт будет проходить проверку. Некоторые правила декларативны. А некоторые описываются специальными регулярными выражениями, с которыми работать намного сложнее. Некоторые правила выдают достаточно чёткие и понятные ошибки при описании. Некоторые — косвенные ответы, которые требуют вручную заходить в документ и анализировать ошибку, иммитируя повторную проверку полу-ручными средствами.

Каждые изменения - как на стороне автоматизированной системы, так и на стороне налоговых шлюзов — влекут за собой необходимость вносить изменения, которые требуют внимательности и аналитики. Для того, чтобы системой пользовались сотни тысяч пользователей — она должна быть максимально-устойчива к такого рода изменениям и это являет собой дополнительные требования к архитектуре системы и стандартам программирования.

Построение такой архитектуры - это краеугольный камень стартапов. Стартап на ранних стадиях должен выкатить рабочую функциональность быстро и у него нет ни финансовых ни темпоральных ресурсов для того, чтобы сделать всё обдуманно и по стандартам. Но через время стартап становится регулярной, системной, прибыльной компанией и сталкивается с тем, что его софт также должен перейти на новый архитектурный уровень. Тут и появляется работа для архитектора - системный анализ, модульная декомпозиция, бережливый покомпонентный рефакторинг, устранение межмодульного эффекта ряби, обобщение дублирующейся функциональности, нормализация объектно-ориентированной модели, нормализация базы данных с сохранением целостности, построение рабочего потока в поставке и развёртывании новых версий, систематизация конфигурирования и многое многе другое. Специалистам есть чем заняться на стадии активного роста успешного стартапа.

Но даже если отвлечься от технических особенностей государственных сервисов и внутренней архитектуры сервиса, то и в самой предметной области бухгалтерии и отчётности вызовов хватает. Форм налоговой отчётности достаточно много. И даже это само по себе - уже большая проблема. В каждой форме, помимо выше-описанной валидации, зашита некоторая математика. Если по простому — Вы можете брать такие формы и заполнять их онлайн или вручную (на бумаге).

Например, учёт налога на добавленную стоимость (НДС) требует особого внимания из-за сложности расчётов и необходимости своевременного предоставления деклараций. Ошибки в расчётах или пропущенные сроки могут привести к серьёзным штрафам и дополнительным проверкам со стороны налоговых органов.

Расчёт заработной платы сотрудников также является сложной задачей. Он включает в себя не только начисление заработной платы, но и вычисление налогов, пенсионных и социальных взносов. Каждое из этих вычислений подчиняется своим правилам и ставкам, которые могут изменяться.

Если Вы таким занимались — то заметили, что есть множество правил, которые связывают поля ввода друг с другом, а множество необходимых для заполнения операций — это настоящая рутина, группа однотипных действий.

Также Вы могли заметить, что почти всю эту рутину можно сократить, т.к. все эти правила повторяются, иногда просто без видимого смысла дублируются, а это значит - могут выполняться автоматически, необходимо только знать некоторые базовые цифры для расчёта и данные о предприятии. Данные о предприятии или предпринимателе редко меняются. Данные о доходах\расходах меняются каждый учетный цикл. Но их не много. Вся суть платной версии онлайн-сервиса Таксер в том, что система снимает с Вас эту головную боль. Вы разово вводите данные о предприятии, а потом просто обновляете цифры (Ваши доходы\расходы\сотрудники и т.п.). Остальное Taxer сделает за Вас.


Технически это достигается воссозданием математики каждой из форм. И тут также есть большое пространство для инженерной мысли. Формы разные, но имеют множество общих знаменателей. И чем успешнее программист сможет создать полиморфную форму, которая инкапсулирует некоторые общие функции форм, чем успешнее программист сможет обобщить общую математику, вынося её за пределы конкретной формы и сокращая дублирование — тем меньше будет рутинной работы в отделе разработки и тем больше отдел разработки сможет сделать новых полезных функций для развития сервиса. Само собой, есть множество интересных технических нюансов, но мы не можем осветить их в данной статье.


Важно упомянуть о безопасности. Подсистема обмена документов в таксере во многом схожа с другими гос системами электронной подписи. Кстати, такими-же пользуются суды и частные банки. К таким подсистемам есть достаточно жестокие требования по шифрованию и безопасности как таковой. Первая проблема, с которой Вы столкнётесь, если разрабатываете онлайн-сервис с ЭЦП — это то, что Вы юридически не имеете право получать электронно цифровую подпись Вашего клиента через браузер и обрабатывать её на сервере. Это не законно. Потому различные сервисы придумывают более безопасные пути обработки. Кто-то делает сертифицированное браузерное приложение. Кто-то предлагает скачать специальное программное обеспечение. Задача проста — ЭЦП должно загрузиться и расшифроваться по специальному алгоритму НА КОМПЬЮТЕРЕ КЛИЕНТА. Например, Таксер использовал схему с Java апплетом. Проблемная сторона этого решения в том, что пользователь должен предварительно установить виртуальную машину Java на свой компьютер. И в этом процессе есть нюансы для разных операционных систем. Потому приходится создавать видео-инструкции по установке, ведь даже продвинутый пользователь тут может столкнуться с различными непонятками типа версионирования или переменных окружения.

После того как всё успешно установлено — процесс проще некуда. Вы просто открываете этот апплет, разработанный в таксере. Этот апплет по специальному алгоритму расшифрует данные Вашей ЭЦП. И синхронизируется с сервером таксер через специальный Gateway который разработан с помощью Node JS и устанавливает непрерывное (сокетное) соединение с Java апплетом. Это работает моментально, без всяких обновлений страниц, отправок форм и тому подобных неприятностей.

Конечно, это далеко не всё. Таксер — это сложнейший продукт с большой историей и множеством особенностей как архитектуры, так и инфраструктуры. Сервис постоянно развивается, добавляются новые функции а старые становятся лучше и удобнее. Всё это достигается сочетанием борьбы с гетерогенностью, высокой сложностью с помощью своевременной инженерной мысли. И конечно это годы непосильного труда различных специалистов — юристов, дизайнеров, программистов, архитекторов, системных администраторов и специалистов технической поддержки.


Если Вам нужно разработать сложный проект - запишитесь к нам на консультацию, у нас есть большой опыт в управлении и разработке. И мы занимаемся исключительно сложными системами много лет.

Ссылка на презентацию нашей компании - чуть ниже.

< ЗАКАЗАТЬ ПРОЕКТ >

Последние проекты

Последние комментарии

Теги

17 августа

Развивай навык, формализуй опыт, создавай продукт, автоматизируй труд