Договори (Contracts)¶
Документ, що регламентує взаємини організації та контрагента — умови оплати, валюту, специфікації тарифів.
1. Основні сутності¶
| Модель | Призначення |
|---|---|
Contract |
Договір між Organization та Client |
ContractSpecification |
Додаток до договору: тарифні лінії (ціни, маршрути, одиниці) |
2. Contract — ключові поля¶
- number — номер договору
- date — дата укладання
- organization →
Organization(наша сторона) - client →
Client(контрагент) - contract_type — enum:
supplier— постачання (ми купуємо)customer— збут (ми продаємо)service_in— послуги отримуємоservice_out— послуги надаємоtransport— транспортний договір (Fleet)agent— агентський- currency →
Currency(валюта договору) - vat_mode — enum:
with_vat,without_vat,reverse_charge - payment_days — дні відстрочення платежу
- credit_limit — ліміт заборгованості
- start_date / end_date — період дії
- auto_prolong — пролонгація
- status —
draft / active / expired / terminated - signatories — підписанти з обох сторін
3. ContractSpecification — тарифна лінія¶
Використовується переважно у транспортних договорах (Fleet) та договорах з прайс-листом:
- contract →
Contract - line_number — № лінії у специфікації
- description — опис тарифу
- item →
Item(якщо прив'язка до номенклатури) - distance_from / distance_to →
DistanceScaleLine(для Fleet — тариф за км) - route →
Route(Fleet — фіксований маршрут) - price — ціна / тариф
- unit →
Unit(км, т, м³, рейс) - vat_rate →
TaxRate - valid_from / valid_to — період дії
Приклад транспортного тарифу:
Договір #42 з ТОВ "Клієнт"
├── Spec 1: Київ → Львів, фура 20т, 18000 UAH/рейс
├── Spec 2: Київ → Одеса, фура 20т, 14000 UAH/рейс
└── Spec 3: понаднормовий простій, 500 UAH/год
4. Використання у документах¶
Кожен документ (Invoice, GoodsReceipt, Waybill, PurchaseInvoice) має FK на Contract:
- Автоматичне підтягування валюти, ПДВ-режиму, термінів оплати
- Перевірка credit_limit перед проведенням
- Розрахунок planned due_date на основі payment_days
- Підстановка тарифу зі ContractSpecification (для транспорту)
5. UI та API¶
Frontend:
- /essentials/reference/contracts — список + форма
- Підтаблиця specifications у формі договору
- Friendly filter: по контрагенту, типу, валюті, статусу
Backend:
- /api/v1/essentials/contracts/
- /api/v1/essentials/contract-specifications/
🔮 Deferred / Ideas¶
Contract templates + generation¶
Мотивація: менеджери створюють договори вручну, багато помилок Чому відкладено: потрібен шаблоноутворювач з плейсхолдерами Trigger: >100 договорів на місяць
Digital signing (Vchasno, DiiaSign)¶
Мотивація: ручна друк + кур'єр = втрата 3-5 днів на підписання Чому відкладено: різні провайдери підпису, варто узгодити Trigger: запит клієнта з великим обсягом B2B
Auto-prolongation workflow¶
Мотивація: договори з auto_prolong=True мають автоматично продовжуватись
Чому відкладено: потрібна задача у фоні (Celery) + сповіщення
Trigger: більше 20 договорів на пролонгацію
Contract performance dashboard¶
Мотивація: скільки зароблено/витрачено за договором, кредитний ліміт Чому відкладено: потрібна агрегація з кількох регістрів Trigger: запит фін. директора