Перейти до змісту

План рахунків та бізнес-операції

Як побудована бухгалтерська система DOP: plan of accounts + типові проводки (operations) → автоматична генерація Posting при проведенні документів.


1. Сутності

Модель Призначення
ChartOfAccounts План рахунків (ієрархічний, European PCG)
BusinessOperation Типова господарська операція (шаблон проводок)
DocumentOperation + DocumentOperationLine Універсальний бух. документ — document-operations
Posting Фактичний запис у бух. книгу (дебет / кредит)

2. ChartOfAccounts — план рахунків

Ієрархічний довідник (HierarchicalMasterDataModel) за European PCG (класи 1–7):

Клас 1. Необоротні активи
├── 10. Основні засоби
│   ├── 101. Земля
│   ├── 104. Машини та обладнання
│   └── 105. Транспортні засоби
└── 13. Знос

Клас 2. Запаси
├── 201. Сировина
├── 203. Паливо
└── 281. Товари

Клас 3. Грошові кошти та розрахунки
├── 301. Каса у нац. валюті
├── 311. Поточні рахунки в нац. валюті
├── 361. Розрахунки з покупцями
├── 631. Розрахунки з постачальниками
└── 641. Розрахунки за податками (ПДВ)

Клас 7. Доходи
├── 701. Дохід від реалізації товарів
├── 702. Дохід від реалізації готової продукції
└── 703. Дохід від надання послуг

...

Детально — у accounting-plan.

Поля

  • code — числовий код (101, 281, 311)
  • name / full_name
  • parentChartOfAccounts (для субрахунків)
  • account_type — enum: asset / liability / equity / income / expense / off_balance
  • is_leaf — чи використовується безпосередньо (leaf account)
  • currency_control — вимагає валютного обліку
  • analytics_dimensions — які аналітичні виміри обов'язкові (напр. [Client, Contract] для 361)

3. BusinessOperation — типова операція

42+ типових господарських операцій, кожна — шаблон проводок.

Структура

  • code / name (напр. sales_goods, purchase_services, vat_credit)
  • description
  • debit_accountChartOfAccounts (напр. 361)
  • credit_accountChartOfAccounts (напр. 702)
  • vat_debit_accountChartOfAccounts (напр. 704)
  • vat_credit_accountChartOfAccounts (напр. 641)
  • vat_mode — enum: with_vat / without_vat / reverse_charge
  • analytics_required — обов'язкові виміри
  • document_types — для яких документів застосовна (Invoice, GoodsReceipt тощо)

Приклади (топ-10 операцій)

Код Опис Дт Кт
sales_goods Реалізація товарів 361 702
sales_goods_vat ПДВ зобов'язання з реалізації 361 641
purchase_goods Придбання товарів 281 631
purchase_goods_vat ПДВ кредит при придбанні 641 631
cash_incoming Надходження готівки від клієнта 301 361
bank_incoming Надходження на р/р 311 361
bank_outgoing_supplier Оплата постачальнику 631 311
writeoff_damaged Списання пошкодженого товару 947 281
salary_accrual Нарахування зарплати 91/92/93 661
salary_payment Виплата зарплати 661 301/311

Повний перелік — у backend/essentials/management/commands/init_accounting_data.py.


4. Автоматична генерація проводок

При проведенні документа (напр. Invoice): 1. Система визначає тип документа + контекст (з ПДВ чи ні, валюта). 2. Знаходить відповідні BusinessOperation (напр. sales_goods + sales_goods_vat). 3. Генерує Posting записи:

Дт 361 — Кт 702 (сума без ПДВ)
Дт 361 — Кт 641 (сума ПДВ)
4. Аналітичні виміри (Client, Contract, BusinessDirection) додаються з документа.

Це заміна 1С-субконто — замість жорсткої прив'язки до типу рахунку, аналітика зберігається у Posting.dimensions (JSON або FK).

Детально — у accounting architecture.


5. Налаштування

Ініціалізація плану рахунків:

python manage.py init_accounting_data

Створює: - План рахунків (European PCG, 80+ позицій) - 42+ BusinessOperation - Базові TaxRate (vat_20, vat_7, vat_0, vat_exempt, vat_no)


🔮 Deferred / Ideas

IFRS / GAAP mode switch

Мотивація: для експортних компаній — звіти в IFRS Чому відкладено: потрібен паралельний план рахунків + reclassification Trigger: клієнт зі звітністю у банк / аудитор

Custom operations per tenant

Мотивація: клієнти зі специфічними галузями мають свої операції Чому відкладено: зараз BusinessOperation — глобальний. Треба per-tenant Trigger: перший клієнт зі специфічними потребами

Visual posting debugger

Мотивація: бухгалтерам складно зрозуміти, чому згенерувались такі проводки Чому відкладено: потрібен UI PostingExplainer Trigger: support-тикети про незрозумілі проводки


Пов'язане