Перейти к содержимому

Согласование расходов сотрудников

Внутреннее приложение, через которое сотрудники подают заявки на возмещение расходов — командировки, представительские траты, мелкие закупки, — руководители их согласуют, а финансовая служба проверяет и передаёт в учёт. У каждого участника свой экран: сотрудник видит статус своих заявок, руководитель — очередь на решение, бухгалтер — одобренные расходы к проводке.

Без такого сервиса заявки приходят по почте, в мессенджере и в таблицах, и у финансовой службы нет единой очереди. Руководитель согласует расход, не зная, сколько команда уже потратила за месяц. Чеки теряются между подачей и проверкой, и при аудите их приходится искать. Возмещение ждёт неделю, потому что правила маршрута известны только одному человеку, а в конце месяца одобренные расходы вручную переносят в учётную систему. Сотрудник при этом не знает, на каком этапе его заявка и когда ждать денег.

  • Собирает все заявки в одну очередь. Заявитель и согласующие видят текущий статус, у кого заявка сейчас и сколько она ждёт.
  • Показывает траты команды рядом с заявкой. Согласующий видит, сколько подразделение уже израсходовало за период и какой остаток по статье, и решает с учётом бюджета.
  • Хранит чеки в карточке расхода. Файлы прикреплены к заявке, поэтому проверяющему и аудитору не нужно искать их в почте.
  • Применяет маршрут автоматически. Цепочка согласующих определяется суммой, подразделением и статьёй расхода; правила задаются один раз.
  • Ведёт историю решений. Подача, проверка, согласование и отказ с причиной видны в ленте заявки.
  • Без чека нет одобрения. Переход в статус «Одобрено» блокируется на сервере, пока к заявке не приложен документ. Исключения (например, суточные) оформляются отдельной категорией расхода.
  • Маршрут привязан к ролям, а не к людям. Если в правиле записан конкретный руководитель, после его увольнения или отпуска заявки встают. Правильная схема — роль «Руководитель подразделения» и заместитель на период отсутствия.
  • Дубли и дробление. Заявка с той же суммой, датой и заявителем в течение недели помечается как возможный дубль. Несколько заявок одной категории от одного человека за пару дней — признак обхода порога согласования; такие случаи показывают проверяющему.
  • Срок решения с эскалацией. Если согласующий не принял решение за несколько рабочих дней, заявка переходит заместителю или на следующий уровень. Конкретный срок — настройка, а не константа в коде.
  • Лимиты проверяют на сервере. Скрытая кнопка не мешает отправить запрос в обход интерфейса, поэтому проверка суммы и остатка бюджета выполняется в серверной операции.
  • Учётная система остаётся главной. Одобренные расходы передаются в ERP или бухгалтерию через API или файл выгрузки; сервис отвечает только за подачу и согласование. Если корпоративная карта или готовый сервис авансовых отчётов уже закрывает процесс, собственная разработка может не окупиться.
  • Персональные данные и реквизиты. Банковские реквизиты сотрудников для возмещения хранят в учётной системе, а не дублируют в приложении.

Промпты рассчитаны на AI-агента (Claude Code, Cursor и аналоги) в Laravel-проекте с установленным Filament 4.x. Отправляйте их по одному: каждый шаг даёт результат, который можно проверить до перехода к следующему.

Создай модели и миграции для согласования расходов: Department
(руководитель, заместитель), ExpenseCategory (справочник, признак «чек
обязателен»), ExpenseClaim (заявитель, подразделение, категория, сумма,
валюта, дата расхода, статус, текущий согласующий), ApprovalRule (порог
суммы, подразделение, категория, упорядоченный список ролей),
ApprovalStep (заявка, роль, исполнитель, решение, комментарий, время).
Добавь фабрики с демо-данными.
Сгенерируй Filament-ресурс для ExpenseClaim. Форма подачи содержит
категорию, сумму, дату, описание и загрузку чеков. Сотрудник видит
только свои заявки и может править их до отправки. В карточке покажи
ленту шагов согласования с решениями и комментариями.
Сделай сервис, который по ApprovalRule строит цепочку шагов при
отправке заявки. Добавь страницу «Мои согласования» с заявками, где
пользователь — текущий согласующий, и действиями «Одобрить» и
«Отклонить» с обязательной причиной отказа. Рядом с заявкой выведи
траты подразделения за месяц и остаток по статье.

Попробуйте одобрить заявку без чека в категории, где он обязателен, и убедитесь, что сервер отклоняет действие.

При отправке помечай возможные дубли (та же сумма, дата и заявитель за
семь дней) и серии заявок одной категории от одного сотрудника за 48
часов. Добавь фоновую задачу по расписанию: шаги без решения дольше
срока из конфига переходят заместителю, согласующий получает
уведомление в панели.
Настрой роли: сотрудник, согласующий, бухгалтер, администратор.
Бухгалтер видит одобренные заявки, отмечает их как проведённые и
выгружает в CSV для загрузки в учётную систему. Ограничение видимости
примени к таблицам, виджетам и экспорту.