Казахстан Як я допомагав здати 100 форму податкової звітності

Моя знайома, бухгалтере, зателефонувала мені зі словами:

- Привіт Рінат! Ти ж захоплюєшся програмуванням! Я тут влаштувалася на нову роботу, в ТОВ-шку. Розібратися в цифрах. Я звичайно розберуся, за тиждень, але не факт що все буде правильно. Допоможи. Потрібно трохи автоматизувати перевірку вже зданих декларацій."

Я не довго думаючи вирішив допомогти, дівчина щось не погана, а іноді і корисна, в прикладному сенсі.

І ось тут на мене чекала засідка…Ремарка до статті: Усього буде 3 статті, 200 форма, 300 форма та облік рахунок фактур.

Системи автоматизації бухгалтерського обліку такі як 1С: Підприємство, демонструють ситуацію в цілому не пов'язуючи її зі зданими податковими деклараціями. Вони можуть створити файл для імпорту в діючі онлайн сервіси, але перевірити, чи правильно здана звітність не можуть.

Довелося вивчити ази бух обліку.

У нас у Казахстані з 2009 року податкові декларації можна подати в онлайн режимі. Є два варіанта:

Для ТОВ є кілька режимів оподаткування:

  • Загальновстановлений порядок оподаткування;
  • на основі спрощеної декларації;
  • Спеціальний податковий режим для юридичних.
Мені був потрібенЗагальновстановлений порядок оподаткування.

При цьому режимі здаються три основні види декларацій, здебільшого, так само як і в моєму випадку:

100 форма здається щорічно. 200 та 300 форми здаються раз на квартал.

Мені потрібно було дати зведену за 200 та 300 форм.

Першим діломя почав шукати API для доступу до онлайн-сервісів. На жаль в обслуговуючій портал компанії жодного API ніколи не існувало. Замкнена система. Можна запитати публічні дані про платника податків, але декларації, на жаль, не вийде.

Так як я не шукаю легких шляхів, вирішив досить відкритого пошуку.

Зайшов до «Кабінету платника податків» і вивантажив усі 200 форми для початку роботи.

допомагав
допомагав

У результаті одержав 5 декларацій за 2016 рік. 4 чергові та 1 додаткову. Декларації вивантажилися у форматі xml.

допомагав
форму

Основний елемент у цьомуxmlцеfno.

Тут потрібно виділити дві властивості:

Інші властивості мені не потрібні, тому що від них внутрішня структура не змінюється. Після перевірки всіх xml 200 форми, я виявив що вони мають два значення version, це «25» і «26». А formatversion тільки одне значення, «1».

Далі уточнивши у знайомої (далі замовник), яку саме інформацію їй потрібно з 200 форм я приступив до написання коду. До речі, замовник змінив початкове завдання, і замість однієї ТОО-шки попросив написати код для обліку декількох ТОО-шек.

Я вирішив зробити фільтрацію по ІІН/БІН та РНН. Вони закладені всередині xml:

Тих завдання по полях по яких потрібна зведена:

ІІН РНН Квартал Рік здачі (так, так Замовник вирішив якщо все вийде і за минулими періодами пройтися щоб все впорядкувати) Дата здачі звітності. ІСН(сума за декларацією) ОПВ(сума за декларацією) ОППВ(сума за декларацією) СП(сума за декларацією) СО(сума за декларацією) Вигляд декларації .

Для початку створюю елементи:

Вивчивши структуру подачі необхідних для зведеної даних за версіями 26 і 25, зрозумів, що саме в подачі цих данихрізниці немає.

Дані name поля
ІІНiin
РННrnn
Кварталperiod_quarter
Рік здачіperiod_year
Дата подання звітності.submit_date
ІСН(сума за декларацією)field_200_00_001_4
ОПВ(сума за декларацією)field_200_00_002_4 + field_200_00_004_4
ОППВ(сума за декларацією)field_200_00_003_4
СО(сума за декларацією)field_200_00_005_4 + field_200_00_006_4 + field_200_00_007_4
Вид декларації.field_200_00_008_4 + field_200_00_009_4
У результаті у мене вийшла функція, яка повертає об'єкт з усіма необхідними даними.

Далі з цим об'єктом можна робити все, що завгодно. Кому як подобається а я зробив невелику систему обліку зданих декларацій за 200 формами.