На масштабе MSP биллинг ломается не в расчёте, а в учёте связей: машина сменила владельца, клиент передал офис другому подрядчику, у одного заказчика два юрлица с разными ставками. Модель должна отвечать на вопрос «чья это машина была в марте», а не только «чья она сейчас».
Держите единую модель
- Одна машина — один клиент в один момент времени. Разделять время по одной машине между двумя заказчиками задним числом нечем.
- Привязка делается при заведении машины в работу, а не при выставлении счёта. Это единственное правило, которое реально предотвращает разбор в конце месяца.
- Разные юрлица одного заказчика — разные клиенты со своими ставками и реквизитами, даже если люди там одни и те же.
- Свой внутренний парк — отдельная группа. Иначе собственная работа попадёт в клиентские отчёты.
Обрабатывайте исключения явно
Исключений на масштабе много, и каждое должно иметь заранее принятое правило — иначе решение принимается в спешке и по-разному в разные месяцы.
- Работа сверх договора: отдельная позиция в счёте с явным описанием, а не растворённая в общих часах.
- Срочные и ночные работы: если ставка отличается, это фиксируется до работы, а не после.
- Гарантийная переделка: не оплачивается и исключается из счёта — но остаётся в отчёте, чтобы клиент видел объём.
- Машина, переданная другому подрядчику: отвязать сразу, иначе чужие сессии попадут в ваш таймшит.
- Пилотные и тестовые машины: выделять отдельно, чтобы не тянуть их в счёт по инерции.
Используйте данные парка как проверку
Спорную строку проще всего закрыть контекстом: что происходило с машиной в это время. Оповещение о заполненном диске в тот же день или задача, выполненная на группе устройств, объясняют работу лучше любых слов. Поэтому мониторинг и биллинг полезно вести в одном месте — состав раздела описан на странице мониторинга парка.
Это же работает в обратную сторону: сессия без единого события на машине — повод самому проверить строку до того, как её увидит клиент.
Ежемесячный ритм
Не оставляйте всё на последний день. Рабочий цикл MSP выглядит так: еженедельно — разбор строк без клиента и привязка новых машин; в конце периода — проверка таймшита по каждому клиенту; затем формирование черновиков счетов и вычитка.
Формирование самого счёта и защита от споров разобраны в статье о счёте по фактическим сессиям, а доступность биллинга на тарифах — на странице учёта времени и биллинга поддержки.
Как считать устройство, которое обслуживалось неполный месяц?
По правилу, зафиксированному в договоре, а не по ситуации. Любой вариант — пропорционально, с округлением до месяца, по дате подключения — работает, если он один и тот же для всех клиентов. Проблемы начинаются не от выбранного правила, а от того, что в разных месяцах применяли разные.
Что делать с клиентом, который постоянно выходит за рамки договора?
Пересматривать договор, а не терпеть или спорить каждый месяц. Регулярное превышение — это не нарушение со стороны клиента, а признак того, что модель не соответствует его реальным потребностям. Разговор об этом один раз дешевле, чем неловкость при каждом счёте.