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

Договори (Contracts)

Документ, що регламентує взаємини організації та контрагента — умови оплати, валюту, специфікації тарифів.


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

Модель Призначення
Contract Договір між Organization та Client
ContractSpecification Додаток до договору: тарифні лінії (ціни, маршрути, одиниці)

2. Contract — ключові поля

  • number — номер договору
  • date — дата укладання
  • organizationOrganization (наша сторона)
  • clientClient (контрагент)
  • contract_type — enum:
  • supplier — постачання (ми купуємо)
  • customer — збут (ми продаємо)
  • service_in — послуги отримуємо
  • service_out — послуги надаємо
  • transport — транспортний договір (Fleet)
  • agent — агентський
  • currencyCurrency (валюта договору)
  • vat_mode — enum: with_vat, without_vat, reverse_charge
  • payment_days — дні відстрочення платежу
  • credit_limit — ліміт заборгованості
  • start_date / end_date — період дії
  • auto_prolong — пролонгація
  • statusdraft / active / expired / terminated
  • signatories — підписанти з обох сторін

3. ContractSpecification — тарифна лінія

Використовується переважно у транспортних договорах (Fleet) та договорах з прайс-листом:

  • contractContract
  • line_number — № лінії у специфікації
  • description — опис тарифу
  • itemItem (якщо прив'язка до номенклатури)
  • distance_from / distance_toDistanceScaleLine (для Fleet — тариф за км)
  • routeRoute (Fleet — фіксований маршрут)
  • price — ціна / тариф
  • unitUnit (км, т, м³, рейс)
  • vat_rateTaxRate
  • 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: запит фін. директора


Пов'язане