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

Сверка подписок

Рабочее место бухгалтера и финансового контролёра подписочного бизнеса. Сервис сопоставляет, что выставлено по каждой подписке в биллинге, что отражено в ERP и что фактически пришло на счёт, и у каждой подписки появляется один статус сверки.

Без такого сервиса счета и оплаты лежат в трёх системах, и статусы в них не совпадают. Каждый разбор начинается с выяснения, какие цифры окончательные. Несопоставленные операции копятся, пока кто-нибудь не запустит ручную проверку в неделю закрытия. Согласования исправлений ждут по неделе без понятного владельца, а разница между выставленным и полученным обнаруживается после закрытия книг.

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

  • Даёт каждой подписке статус сверки. Данные биллинга, ERP и банка соединяются, и подписка получает статус «Сверено», «Ожидает» или «Расхождение».
  • Сопоставляет автоматически. Счета и поступления связываются по идентификатору подписки, клиенту, сумме и периоду с настраиваемым допуском.
  • Ведёт очередь расхождений. Несопоставленные счета и платежи появляются ежедневно с возрастом и ответственным.
  • Проводит исправления через согласование. Списание разницы или ручная привязка платежа требуют решения с владельцем шага и сроком.
  • Следит за разницей выставленного и полученного. Расхождение по периоду видно постоянно, а при превышении порога приходит уведомление.
  • Разные идентификаторы — нормальная ситуация. Если биллинг и ERP нумеруют подписки по-разному, таблица соответствия хранится в приложении, а сопоставление может идти по сочетанию полей: клиент, сумма, период.
  • Частичные оплаты и допуски. Один счёт может закрываться двумя платежами, а комиссия провайдера создаёт небольшую разницу. Правила разбиения и допуск задаются в настройках, точное совпадение не требуется.
  • Возвраты и кредит-ноты — отрицательные строки. Их учитывают в сверке как отдельные записи, а не правят исходный счёт. Так история остаётся полной, а аудитор видит и исходную сумму, и корректировку.
  • Статус тоже устаревает. Позицию, которая не менялась больше недели, выводят на экран отдельно, а не прячут в отчёте.
  • Предзакрытие каждый день. Расхождения разбирают в течение месяца, тогда к закрытию остаются только новые.
  • Запуск параллельно с текущим процессом. Сначала сервис работает как проверка поверх таблиц, а от ручной сверки отказываются, когда цифры начинают сходиться. Биллинг, ERP и банк остаются главными системами.
  • Аудитору — доступ на чтение. Отдельная роль видит статусы и историю сверки без права изменений, а выгрузка отчёта ограничена так же, как экран.

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

Создай модели и миграции для сверки подписок: Subscription (клиент,
тариф, категория из справочника, идентификаторы в биллинге и ERP),
BillingInvoice (подписка, период, сумма, валюта, внешний id), LedgerEntry
(подписка, сумма, дата, внешний id в ERP), BankReceipt (сумма, дата,
плательщик, назначение), Match (счёт, связанные поступления и проводки,
разница, статус), ReconciliationRule (допуск в деньгах и процентах,
окно в днях). Добавь фабрики с демо-данными.
Сделай фоновые задачи по расписанию для загрузки счетов из биллинга,
проводок из ERP и банковских поступлений через API или импорт CSV.
Категорию подписки проверяй по справочнику при загрузке, повторная
загрузка той же записи не создаёт дубль. Время последней загрузки
каждого источника сохраняй и показывай в панели.
Сделай сервис сопоставления: связывай счёт с поступлениями и проводками
по подписке, клиенту, сумме и периоду с допуском из
ReconciliationRule, поддержи закрытие одного счёта несколькими
платежами и возвраты как отрицательные строки. Всё, что не
сопоставилось, помечай статусом «Расхождение».

Проверьте на демо-данных счёт, оплаченный двумя платежами с комиссией провайдера в пределах допуска: он должен получить статус «Сверено».

Сгенерируй Filament-ресурс для Match с вкладками по статусу, колонками
возраста и ответственного и фильтром «Не менялось больше 7 дней».
Добавь действия «Привязать платёж вручную» и «Списать разницу» с
обязательной причиной; оба проходят согласование контролёра со сроком
и уведомлением в панели.
Добавь виджеты доли сверенных подписок и разницы выставленного и
полученного за период с уведомлением при превышении порога. Настрой
роли: бухгалтер, контролёр, аудитор только на чтение. Добавь экспорт
отчёта о сверке с историей решений в CSV.