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

Document Operations — універсальні бух. документи

Коли типові документи (Invoice, GoodsReceipt, Payment) не покривають потрібну господарську операцію — використовується універсальний багато-рядковий документ.


1. Призначення

DocumentOperation закриває сценарії: - Вручну ручні проводки бухгалтера (коригування, переоцінки, закриття) - Нестандартні операції, для яких немає спеціалізованого документа - Консолідація кількох операцій у один документ - Імпорт бух. рухів з інших систем (legacy, 1С)


2. Структура

DocumentOperation (заголовок)

  • number / date
  • organizationOrganization
  • description — пояснення операції
  • statusdraft / posted / marked
  • currencyCurrency (основна)
  • reference_document → GenericFK (необов'язково, якщо прив'язано до зовнішнього документа)

DocumentOperationLine (рядки)

Кожен рядок — одна проводка:

  • line_number — № рядка
  • business_operationBusinessOperation (необов'язково)
  • Якщо заповнено — debit_account / credit_account підтягуються автоматично
  • Якщо порожньо — вводяться вручну
  • debit_accountChartOfAccounts
  • credit_accountChartOfAccounts
  • amount — сума
  • currency_amount — сума у валюті документа (якщо != base)
  • description — пояснення рядка
  • analytics — JSON з аналітичними вимірами:
    {
      "client": 42,
      "contract": 10,
      "department": 3,
      "business_direction": "wholesale"
    }
    

3. Типові сценарії

A. Коригування залишку рахунку

Після інвентаризації / аудиту потрібно вручну виправити залишок:

Рядок 1: Дт 281 — Кт 947, 1 500 грн (надлишки товарів)

B. Закриття місяця

Перенесення доходів/витрат на результат:

Рядок 1: Дт 702 — Кт 791, 100 000 грн (закриття доходу)
Рядок 2: Дт 791 — Кт 902, 60 000 грн (списання собівартості)
Рядок 3: Дт 791 — Кт 441, 40 000 грн (прибуток → нерозподілений)

C. Курсові різниці

Переоцінка валютних залишків на кінець періоду:

Рядок 1: Дт 312 — Кт 714, 500 грн (позитивна курсова)

D. Нарахування резервів

Рядок 1: Дт 949 — Кт 38, 10 000 грн (резерв сумнівних боргів)

4. Валідація

При проведенні (post): 1. Перевірка балансу: сума дебетів = сума кредитів по кожному currency. 2. Перевірка leaf-accounts: debit_account.is_leaf == True. 3. Перевірка обов'язкових аналітик: якщо ChartOfAccounts.analytics_dimensions вимагає Client — має бути заповнено. 4. Перевірка періоду: дата не в замкненому періоді (якщо posting_lock_date у settings).

При успіху генеруються Posting записи (1:1 з DocumentOperationLine).


5. UI

  • Список: /essentials/transactions/document-operations
  • Форма: заголовок + підтаблиця рядків
  • Підказки: при виборі BusinessOperation — автопідстановка рахунків + попередження про аналітики
  • Копіювання: повторні операції (напр. щомісячне закриття)

6. Power-user features

Шаблони (Document Operation Templates)

План: збереження часто вживаних документів як шаблон із {{date}}, {{amount}} плейсхолдерами.

Імпорт з Excel

CSV/Excel import — пачка рядків у один документ, швидке введення.

Масове проведення / розпроведення

Фільтр по даті → bulk post / unpost.


🔮 Deferred / Ideas

Natural-language input (AI)

Мотивація: бухгалтер пише "нарахувати резерв 10000 від 281", система генерує проводки Чому відкладено: потрібна навчена LLM + класифікатор Trigger: достатня база прикладів (>1000 документів)

Approval workflow for large manual postings

Мотивація: ручні проводки > X грн — вимога головбуха Чому відкладено: workflow engine Trigger: корпоративний клієнт

Period closing wizard

Мотивація: помічник для закриття місяця (перевірки + автогенерація закриваючих операцій) Чому відкладено: потрібен чек-лист + генератор Trigger: стабільна база клієнтів з щомісячним закриттям

Audit trail with versioning

Мотивація: регулятор вимагає незмінні записи після закриття Чому відкладено: поточний AuditLog агностичний, потрібен immutable mode Trigger: аудит перевірка


Пов'язане