§01Модель данных
В actrix используется простая иерархия. Договор привязывается к объекту и к стороне (CLIENT или CONTRACTOR). На договор может приходить одна или несколько смет (для разных пакетов работ). На смету — один или несколько актов выполненных работ.
ОБЪЕКТ (ЖК Северный, к. 3)
└── ДОГОВОР клиентский ДГ-184
├── ДС-1, ДС-2, ДС-3 …
├── СМЕТА СМ-184/КЛ
│ ├── КОРРЕКТИРОВКА КР-09
│ └── АКТЫ КС-2 №1, №2, №3 …
└── СВЯЗЬ 1:N → ПОДРЯДНЫЕ СМЕТЫ
├── СМ-184/ПД-1 (Подрядчик А)
└── СМ-184/ПД-2 (Подрядчик Б)
Эта структура повторяется на подрядной стороне: подрядный договор → подрядная смета → подрядные акты. Связь между сторонами устанавливается на уровне смет (1:N), не на уровне договоров.
§02Зачем ДС — отдельная сущность
Распространённая ошибка — делать «версии договора»: внести правку, сохранить как v2, перевести смету на v2. На первый взгляд удобно. На деле — ломается история.
Доп. соглашение — это самостоятельный документ, у которого есть дата подписания, подписант, основания и собственный маршрут согласования. Если делать «версию договора», эти атрибуты приходится дублировать в договоре, а при отмене ДС — непонятно, какую версию считать актуальной.
В actrix ДС — дочерняя запись договора с собственным жизненным циклом. Договор остаётся неизменным после подписания. Условия договора в каждый момент времени — это «договор + все ДС в статусе APPROVED на эту дату».
§03Аналитика портфеля
Когда договоры привязаны к объектам, а сметы — к договорам, открываются срезы, которых нельзя получить из разрозненных Excel-файлов.
- По объекту: суммарная клиентская выручка, суммарная подрядная стоимость, маржа, прогресс. Видно, что «ЖК Северный приносит больше маржи, чем ЖК Южный».
- По клиенту: все договоры с одним заказчиком, средний срок согласования, доля проблемных корректировок. Видно, что «у этого клиента согласования зависают на 14 дней — надо включать ФинДира раньше».
- По подрядчику: его объём, его маржа, его соблюдение сроков. Видно, что «с Подрядчиком Б у нас в среднем 9% маржи, с Подрядчиком А — 14%».
- По периоду: что было закрыто за квартал, какая динамика. Видно, что «Q1 2026 закрыли с маржой 22%, Q4 2025 — с 26%».
§04Что проверяет система
На уровне привязки документов actrix следит за несколькими инвариантами.
- Сумма всех актов по договору не может превысить сумму договора с учётом всех ДС.
- Сторона договора и сторона смет на нём должны совпадать (нельзя на клиентский договор повесить подрядную смету).
- Объект договора и объект смет — должны совпадать.
- Сумма ДС не может уменьшить сумму договора ниже уже подписанных актов.
Эти проверки идут не на уровне UI, а в business-rules слое сервера. Никакая клиентская изобретательность не даст создать смету, которая нарушит инварианты.