GLPI уже знает, сколько страниц напечатал каждый принтер. Не хватает одного шага: превратить это в счёт. «Счётчики печати», бесплатный модуль NexTool для GLPI 10, 11 и 12, берёт счётчики, которые инвентаризация уже собирает, рассчитывает стоимость страницы, лимит и превышение и закрывает каждый расчётный период без таблиц Excel.
Проблема
Компания, которая передаёт печать на аутсорсинг, обычно платит фиксированную сумму с лимитом страниц и отдельной ценой за каждую страницу сверх него. Каждый месяц кто-то записывает счётчик каждого принтера, вычитает показание прошлого месяца, суммирует парк и сверяет лимит. Это ручная работа с риском ошибок, а проверка счёта подрядчика откладывается до того момента, когда он уже оплачен.
GLPI собирает счётчик каждого принтера через сетевую инвентаризацию GLPI Agent и показывает ряд значений на вкладке Счётчики страниц принтера. Но о ценах, лимитах и расчётных периодах он ничего не знает. Самый известный плагин сообщества для этой задачи, Printercounters от Infotel, сам опрашивает устройства по SNMP; его последняя версия, 2.0.2, вышла в феврале 2025 года для GLPI 10, setup.php плагина допускает только версии ниже GLPI 11, а репозиторий переведён в архив.
Как работает «Счётчики печати»
Модуль никогда не обращается к принтеру: он читает то, что сохраняет штатная инвентаризация GLPI, одно показание на принтер в день, с накопительным счётчиком. Расход за период равен показанию на конец минус показание на начало, а не сумме ежедневных показаний, которая умножила бы счёт на число дней инвентаризации.
- Каскадная стоимость страницы. На вкладке Стоимость каждое правило относится к принтеру, модели или организации, с ценой Ч/Б и цветной страницы и сроком действия. Побеждает самое конкретное правило: правило принтера; если его нет, правило модели; иначе правило организации. Правило организации с отметкой Действует для дочерних организаций наследуется дочерними организациями.
- Контракты с общим лимитом. На вкладке Контракты задаются фиксированная сумма за период, включённые Ч/Б и цветные страницы, цена превышения, день закрытия и принтеры. День 1 означает календарный месяц; день 15 даёт периоды с 15-го числа по 14-е следующего месяца. Лимит относится ко всему парку, а не к каждому устройству: превышение считается от общей суммы.
- Автоматический пересчёт и закрытие. Показания пересчитываются каждые 6 часов, а при включённом Автоматическое закрытие (по умолчанию) просроченные периоды закрываются сами раз в день. На вкладке Биллинг можно нажать Пересчитать показания, открыть Детализация по принтерам и закрыть период вручную кнопкой Закрыть.
- Вкладка «Счётчики» в карточке принтера. Прямо в карточке: Ч/Б и цветные страницы за период, стоимость страницы, правило, из которого взята цена, сумма за период и контракт принтера или Вне контракта.
- Уведомления в колокольчике. Низкий уровень тонера, принтер без показаний, расход выше среднего, превышение лимита, пока период ещё открыт, и закрытие периода. Каждое уведомление ведёт к принтеру или на вкладку «Биллинг».
Два числа: сумма по принтеру и итог по контракту
Модуль считает две разные вещи. Первая: сумма по принтеру, то есть страницы за период, умноженные на стоимость страницы с вкладки «Стоимость». Она показывает, сколько стоит каждое устройство или отдел, и есть даже у принтера вне контракта.
Вторая: итог периода, то, что попадает в счёт по аутсорсингу: фиксированная сумма плюс превышение, рассчитанное по цене превышения из контракта, а не по таблице стоимости. Поэтому Итого на вкладке «Биллинг» не равно сумме по принтерам.
Пример: контракт с 10 000 включённых Ч/Б страниц, фиксированной суммой 1 500,00 и ценой превышения 0,08 за страницу. Если парк за период напечатал 12 500 Ч/Б страниц, превышение составит 2 500 страниц, то есть 200,00, а итог будет 1 700,00, независимо от того, какой принтер печатал.
Что происходит, если показание не такое, как ожидалось
Ошибочный счёт за печать почти всегда начинается со счётчика, который повёл себя необычно. Модуль обрабатывает каждый случай явно, а не подставляет ноль:
- Принтер без показаний за период. Он отображается как «нет показаний», а не как ноль страниц. Ноль означал бы, что принтер ничего не печатал; «нет показаний» означает, что это неизвестно.
- Инвентаризация началась в середине периода. Если показания до начала периода нет, точкой отсчёта становится первое показание внутри периода. Начать с нуля значило бы выставить в счёт всю историю устройства сразу.
- Счётчик пошёл назад. Сброс или замена устройства. Принтер помечается как «счётчик сброшен», и за период с него ничего не берётся, потому что реальный расход определить нельзя. Новое показание становится точкой отсчёта следующего периода.
- Цветное устройство сообщает только общий итог. Если устройство не разделяет Ч/Б и цвет, весь объём считается Ч/Б, и вкладка принтера предупреждает об этом.
Принтер без показаний или со сбросом помечает период как период с неполными данными, а в выписке внизу появляется предупреждение.
Выписка в CSV и проверка счёта подрядчика
Кнопка Скачать CSV на вкладке «Биллинг» формирует выписку за период, готовую для Excel: UTF-8 с корректными символами, точка с запятой как разделитель и десятичная запятая. Каждая строка соответствует принтеру: начальный и конечный счётчик Ч/Б и цвета, страницы, стоимость страницы, сумма и статус. Внизу указаны лимит, страницы, превышение, фиксированная сумма, сумма превышения и итог.
Для открытого периода выписка сразу пересчитывает показания и выходит как предварительная, ничего не сохраняя, со строкой о том, что значения ещё могут измениться. Закрытый период больше не меняется: лимит и цены копируются из контракта в момент закрытия, и последующая корректировка не переписывает уже выставленный счёт.
Чтобы проверить счёт подрядчика, сравните счётчики из выписки с его отчётом по каждому принтеру. Небольшое расхождение обычно связано с датой: модуль берёт последнее показание инвентаризации на конец периода, а подрядчик мог снять показание в другой день. Крупное расхождение чаще всего связано с принтером без показаний, со сбросом или с цветным устройством, посчитанным как Ч/Б.
Если вы меняете стоимость страницы, весь период считается по цене, действующей в его последний день. Начинайте действие новой цены с первого дня периода.
Симптом и вероятная причина
| Симптом | Вероятная причина |
|---|---|
| Суммы по принтерам равны нулю | На вкладке «Стоимость» нет правил: принтер показывает «правило стоимости не найдено». |
| На вкладке «Биллинг» нет периодов | Период создаётся только для активного контракта в пределах срока его действия. |
| Принтер с отметкой «нет показаний» | Инвентаризация не дошла до устройства. Проверьте вкладку «Счётчики страниц». |
| Период не закрывается сам | На вкладке «Настройки» выключено автоматическое закрытие, или не работают автоматические действия GLPI. |
| Уведомление о тонере не приходит | Принтер сообщает только «OK» без процентов, или у профиля нет права «Получать уведомления модуля». |
| Нет уведомлений о всплеске расхода | Уведомление сравнивает со средним по последним закрытым периодам, и их нужно не меньше 2. |
Как включить
- Обновите плагин NexTool до версии 6.49.0 или новее.
- В NexTool, в списке модулей, установите и включите «Счётчики печати».
- На вкладке «Стоимость» создайте хотя бы одно правило цены страницы для организации, модели или принтера.
- На вкладке «Контракты» укажите лимит, превышение, фиксированную сумму, день закрытия и принтеры контракта.
- На вкладке «Настройки» задайте пороги уведомлений: Низкий уровень тонера (%), по умолчанию 15; Счётчик не меняется (дней), по умолчанию 7; и Всплеск расхода (%), по умолчанию 50.
- В разделе Администрирование > Профили дайте каждому профилю только то, что ему нужно, например Просмотр биллинга, Закрыть расчётный период и Получать уведомления модуля.
Обязательное условие: GLPI Agent должен доставать до принтеров по SNMP. Если вкладка «Счётчики страниц» пуста, модулю тоже будет нечего выставлять в счёт.
Кому подходит
Компаниям, которые передают печать на аутсорсинг и хотят проверять счёт до оплаты; подрядчикам, которые сдают принтеры в аренду и выставляют счета за страницу; и ИТ-отделам, которые хотят знать, сколько печатает каждый отдел, и получать предупреждение до того, как закончится тонер.
Если организаций несколько, каждая меняет только свои правила стоимости и контракты; рекурсивные записи родительской организации видны в дочерних только для просмотра.
Совместимость
- GLPI: 10, 11 и 12, один и тот же пакет
- Тариф: бесплатно
- Плагин: NexTool 6.49.0 или новее
- Источник счётчиков: штатная инвентаризация GLPI через GLPI Agent
Следующий шаг
«Счётчики печати» входит в NexTool, экосистему модулей, которые расширяют GLPI без доработки кода. Все возможности описаны на странице модуля, а если нужна помощь с инвентаризацией принтеров, напишите команде.
Источники: Infotel, Printercounters 2.0.2 (GitHub); Infotel, setup.php плагина Printercounters (требования к версии GLPI).
Проверено командой NexTool Solutions.
Комментарии
Комментарии к этой публикации загружаются с GitHub (giscus). При загрузке ваш браузер подключается к GitHub, который получает ваш IP-адрес и может сохранять собственные файлы cookie.
Чтобы загружать их автоматически, включите функциональные файлы cookie