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

Фінансові рахунки та інфраструктура

Де зберігаються гроші, через які банки проходять платежі, якими податковими ставками оподатковуються операції.


1. Основні сутності

Модель Призначення
Cashbox Каса готівкових коштів
Bank Довідник банків-партнерів
SettlementAccount Розрахунковий рахунок (банківський / корпоративна картка)
TaxRate Ставки податків (ПДВ, податок на прибуток)

2. Cashbox — каса

Зберігає готівкові кошти з розбивкою по валютах: - code / name - organizationOrganization (касова належність) - currencyCurrency (може бути UAH / USD / EUR) - departmentDepartment (адміністративна, магазин, склад) - responsible_personPerson (касир) - opening_balance - is_active

Документи, що працюють з касою: - IncomingPayment (приходний касовий ордер) — cash type - OutgoingPayment (видатковий касовий ордер) — cash type

Регістр: CashJournal (агрегація рухів + залишки).


3. Bank — банк

Довідник банків-партнерів: - code / name / full_name - mfo — МФО банку - countryCountry - swift_code (для іноземних банків) - correspondent_account

Використовується як FK у SettlementAccount і ClientBankAccount.


4. SettlementAccount — розрахунковий рахунок

Банківський рахунок організації: - account_number (IBAN для України) - organizationOrganization - bankBank - currencyCurrency - account_type — enum: current (поточний), currency (валютний), card (корпоративна картка), loan (позиковий) - opening_balance - is_default — основний рахунок - is_active

Документи: - IncomingPayment / OutgoingPayment (тип bank) - Банківська виписка (імпорт через Bank Exchange)


5. TaxRate — податкова ставка

Ставки для автоматичного розрахунку податків:

Код Ставка Призначення
vat_20 20% Основна ставка ПДВ (Україна)
vat_7 7% Ліки, медвироби
vat_0 0% Експорт
vat_exempt Без ПДВ (звільнено)
vat_no Не платник ПДВ

Поля: - code / name - rate (decimal, %) - tax_type — enum: vat, income, military, excise - is_default (для нових товарів)

Детально — у VAT.


6. Інтеграції та сценарії

Платіжний сценарій (bank)

  1. Клієнт проводить платіж → оператор створює IncomingPayment (type=bank).
  2. Документ проводиться → Posting: Дт 311 ("Розрахунковий рахунок") — Кт 361 ("Розрахунки з покупцями").
  3. CashJournal отримує запис → залишок на SettlementAccount оновлюється.
  4. При наступній банківській виписці — співставлення (reconciliation).

Готівковий сценарій (cash)

  1. Отримано готівку → IncomingPayment (type=cash).
  2. Дт 301 ("Каса") — Кт 361.
  3. CashJournal оновлює баланс Cashbox.
  4. Ліміт каси — перевіряється окремо.

🔮 Deferred / Ideas

Cash limits & overlimit notifications

Мотивація: закон України обмежує залишок у касі на кінець дня Чому відкладено: потрібен workflow з керівниками для скидання на р/р Trigger: запит клієнта після податкової перевірки

Multi-currency cashbox with automatic conversion

Мотивація: каси в готелях / на митниці працюють з USD/EUR готівкою Чому відкладено: потрібен курс на момент операції (НБУ / комерційний) Trigger: перший клієнт з валютними касовими операціями

Bank API direct integration (Monobank, Privat24)

Мотивація: імпорт виписок у реальному часі, без .mt940 файлів Чому відкладено: кожен банк має свій API, потрібен адаптер Trigger: частіше 100 транзакцій/день через банк


Пов'язане