Финансы и договоры
Свой шаблон договора в Word: загрузка и переменные
Загрузите собственный .docx-документ с placeholder'ами {{ student.full_name }}, {{ contract.number }} — Drivli автоматически подставит данные ученика, договора и реквизиты школы. На выходе DOCX или PDF.
Зачем свой шаблон
У каждой школы свой текст договора — выверенный юристом, привычный директору, согласованный с местными требованиями. Конструктор документов даёт загрузить этот же ваш Word-файл в Drivli и автоматически подставлять в него данные ученика, договора и реквизитов школы при каждом формировании. Никаких системных PDF с чужим текстом — только ваш бланк.
Как сделать свой шаблон
- Откройте в Word ваш текущий договор оказания услуг.
- Найдите места где должны быть «живые» данные (ФИО ученика, номер договора, сумма, реквизиты школы) и замените их на placeholder'ы в двойных фигурных скобках:
ДОГОВОР № {{ contract.number }}
от {{ today }}
Автошкола «{{ school.name }}» (ИНН {{ school.inn }}, юридический адрес: {{ school.legal_address }}),
в лице директора {{ school.director_full_name }} (далее — Школа), и
{{ student.full_name }}, паспорт {{ student.passport }} (далее — Ученик),
заключили настоящий договор:
1. Стоимость обучения: {{ contract.total_rub }} ₽ ({{ contract.total_rub_words }}).- Сохраните как .docx (Файл → Сохранить как → Word Document).
Как загрузить
- В Drivli откройте 📄 Документы в сайдбаре (раздел директора).
- Жмите «Загрузить новый шаблон» → выберите файл, категорию (Договор / Согласие / Заявление / Квитанция / Договор с инструктором / Договор с сотрудником / Свободный документ / Отчёт), название.
- Опционально — отметьте «Сделать шаблоном по умолчанию для этой категории».
Как использовать
После загрузки кнопка «📄 Сформировать» появляется в трёх местах:
- В /finance/contracts: форма «Новый договор» имеет обязательный селектор шаблона. После создания договора автоматически скачивается DOCX/PDF с подставленными данными.
- В /instructors и /employees: форма создания — опциональный селектор шаблона + поле «Номер договора». Если выбрали — после создания инструктора/сотрудника скачается договор.
- В карточке ученика — кнопка «📄 Документ по шаблону» формирует согласия, заявления, квитанции на конкретного ученика.
- В /reports — секция «📄 Кастомные отчёты по шаблонам» с пикером периода.
Справочник переменных
В каждой категории доступны разные поля. В разделе «Документы» рядом с категорией есть кнопка с её названием — открывает «Справочник переменных», где видно весь список с примерами. Самые частые:
- Школа:
{{ school.name }},{{ school.legal_name }},{{ school.inn }},{{ school.ogrn }},{{ school.legal_address }},{{ school.license_number }},{{ school.director_full_name }},{{ school.phone }} - Ученик:
{{ student.full_name }},{{ student.passport }},{{ student.address }},{{ student.category }},{{ student.medical_cert_number }} - Договор:
{{ contract.number }},{{ contract.signed_on }},{{ contract.total_rub }},{{ contract.total_rub_words }}(сумма прописью),{{ contract.paid_rub }},{{ contract.debt_rub }} - Инструктор:
{{ instructor.full_name }},{{ instructor.categories }},{{ instructor.hourly_rate_rub }},{{ instructor.hourly_rate_words }} - Сотрудник:
{{ employee.full_name }},{{ employee.email }},{{ employee.role_label }}(на русском) - Сегодня:
{{ today }}(11.05.2026),{{ today_long }}(11 мая 2026 г.)
Циклы для отчётов
В шаблонах категории «Отчёт» доступны коллекции с Jinja-циклами:
УЧЕНИКИ С ЗАДОЛЖЕННОСТЬЮ:
{% for s in students %}{% if s.debt_rub %}
• {{ s.full_name }} ({{ s.category }}) — долг {{ s.debt_rub }} ₽
{% endif %}{% endfor %}
ИНСТРУКТОРЫ И ИХ ЧАСЫ ЗА ПЕРИОД:
{% for i in instructors %}
{{ loop.index }}. {{ i.full_name }} — {{ i.hours }} ч, к выплате {{ i.payout_rub }} ₽
{% endfor %}Доступные коллекции: students, instructors, payments, lessons, плюс итоги в totals.* и период period_from / period_to.
Лимиты по тарифам
- Стандарт: 3 шаблона
- Профи: 5 шаблонов
- VIP: безлимит
Регуляторные документы (журнал учёта вождения для ГИБДД, чек-лист Ростехнадзора) остаются системными — школа их не меняет, чтобы не сломать формат, который ждёт инспектор.
Если что-то не подставилось
Самая частая причина — опечатка в имени переменной. {{ stuent.full_name }} (без буквы «d») не упадёт, но и не подставится. Drivli при загрузке шаблона валидирует только что файл открывается как .docx; имена переменных он проверяет в момент рендера. Если в шаблоне неизвестная переменная — увидите 400 с детальным сообщением «Невалидная переменная в шаблоне: …».