Траты и работы
В разделе Траты и работы ведётся журнал покупок и услуг: сумма, дата, категории, комната, магазин (или исполнитель), способ оплаты и вложения.

Список и фильтры
Над таблицей — карточки сводки: итого, число записей, сумма покупок и сумма работ. Они считаются по текущим фильтрам (поиск, тип, категория, комната, магазин, период). Без фильтров — по всему проекту.
Список подгружается при прокрутке, без переключения страниц. Внизу видно, сколько записей уже показано из найденных.
На телефоне фильтры свёрнуты. Их открывает строка «Фильтры». Сверху — две крупные кнопки: Покупка (плюс) и Чек (QR). Работа и Excel остаются иконками рядом с фильтрами.
Сортировка идёт на сервере по всему списку (не только по уже подгруженным строкам). На компьютере — клик по заголовку колонки: дата, тип, название, категории, комната, где/кто, чек, сумма. Повторный клик меняет направление, третий возвращает сортировку по дате (сначала новые). На телефоне заголовков нет — в фильтрах список «Дата — сначала новые», «Сумма — по убыванию» и так далее.
Фильтры (без обязательной валидации):
| Фильтр | Назначение |
|---|---|
| Поиск по названию | Подстрока в названии траты |
| Тип | Покупка / работа |
| Категория, комната, магазин | Справочники текущего проекта |
| Период | Начальная и конечная дата |
Доступны выгрузка в Excel и действия «Добавить покупку», «Добавить работу», «Сканировать чек».
В таблице у строки только Удалить. Кнопок «Просмотр» и «Изменить» нет.
Карточка просмотра
Открывается кликом по названию или двойным кликом по строке. Сверху — Редактировать. После сохранения карточка открывается снова с обновлёнными данными.
В карточке те же поля, что и в форме. Если значение не задано, показывается «—».
| Поле | Покупка | Работа / услуга |
|---|---|---|
| Тип | Покупка | Работа / услуга |
| Название | Название | Что сделали |
| Исполнитель | — | да |
| Сумма, ₽ | да | да |
| Дата | Дата | Дата выполнения |
| Категории | несколько | несколько |
| Комната | да | да |
| Магазин / из списка | Магазин | Из списка |
| Количество / объём | Количество | Объём |
| Ед. изм. | да | да |
| Оплата | да | да |
| Заметки | да | да |
| Позиция сметы | если привязана | если привязана |
| Электронный чек | ссылка, если есть | ссылка, если есть |
| Вложения | чеки и фото | акты, фото, PDF |
Форма покупки или работы
Открывается кнопками Добавить покупку, Добавить работу или Редактировать в карточке просмотра. Та же форма доступна с Обзора.

Поля
| Поле | Обязательно | Тип | Правила |
|---|---|---|---|
| Тип | да | Покупка / Работа · услуга | Определяет подписи полей и значения по умолчанию |
| Название / Что сделали | да | Текст, до 250 символов | Сообщение: «Укажите название» |
| Исполнитель | да только для работы | Текст, до 200 символов | «Укажите мастера или бригаду» |
| Сумма, ₽ | да | Число | Больше 0 (в интерфейсе минимум 0,01). Копейки можно вводить через запятую или точку: 1,15 и 1.15 |
| Дата / Дата выполнения | да | Дата | Обязательна |
| Категории | нет | Несколько из справочника | Только категории текущего проекта. Можно выбрать несколько. Новую категорию можно создать прямо в поле: ввести название и нажать «Создать категорию» (достаточно названия) |
| Комната | нет | Выбор из справочника | Только комнаты проекта |
| Магазин / Из списка | нет | Выбор из справочника | Только магазины проекта. Новый магазин — так же, только название |
| Количество / Объём | нет | Число ≥ 0 | По умолчанию 1 |
| Ед. изм. | нет | Текст или список | Для работ: услуга, м², м.п., час, день, шт |
| Оплата | нет | Список | Карта, Наличные, Перевод, Другое. По умолчанию: карта (покупка), перевод (работа) |
| Заметки | нет | Многострочный текст | — |
| Прикрепить чеки и фото | нет | Файлы | JPG, PNG, WEBP, PDF до 15 МБ каждый |
Поведение при смене типа
При переключении на Работа / услуга:
- оплата → «Перевод»;
- единица → «услуга»;
- категория → первая, в названии которой есть «работ» или «услуг» (если такая есть и список категорий пуст);
- для исполнителя можно подставить название выбранного магазина, если поле пустое.
Связи со справочниками
Проект
├── Категории ←── Трата (несколько category_id через expense_categories)
├── Комнаты ←── Трата.room_id
├── Магазины ←── Трата.store_id
└── Сметы / позиции ←── Трата.estimate_item_id (через сверку или импорт чека)
- Списки категории / комнаты / магазина загружаются только для выбранного проекта в шапке.
- В форме траты категорию и магазин можно создать на месте по названию — они сразу появляются в справочнике проекта.
- У одной траты может быть несколько категорий. Сумма учитывается в каждой выбранной категории (фильтры и аналитика по категориям). Общая сумма проекта при этом не дублируется.
- Удаление категории, комнаты или магазина не удаляет траты: связь с этой категорией снимается, остальные категории остаются.
- Удаление траты удаляет её вложения с диска.
- После сохранения пересчитываются суммы проекта и агрегаты по справочникам.
Привязка к смете
В этой форме нет прямого поля «Позиция сметы». Привязку делают:
- в разделе Сметы (сверка / автопривязка);
- при импорте чека с автосвязью позиций.
Быстрый ввод по чеку
Кнопка Сканировать чек открывает сценарий QR — подробности в Сканирование чеков. Категории можно задать на весь чек и затем поправить у отдельных позиций.
