СОРМ

Для полной интеграции СОРМ, просьба обращаться к Дмитрию Б. aka Банан

+79115096089, +79215480279 (ТГ/WhatsApp/Звонок)

Внимание! Критическая уязвимость...

Использование копии биллинговой системы с датой обновления ДО 16.03.2024, черевато взломом.

До этой даты присутствует критическая уязвимость системы, которая перешла ещё с Abills

22.08.2026 (Версия биллинга - 'RU 26.08.22')

Наименование модуляСписок изменений/исправлений/добавлений

Система

SELF_URL корректно учитывает порт запроса (X-Forwarded-Port или SERVER_PORT), если HTTP_HOST пришёл без порта (после обновления nginx fastcgi_params), в nginx должно быть настроено следующее


location ~* \.cgi|pm$ {
	....
	fastcgi_param HTTP_HOST $host:$server_port;
	....
}



Если $db не передан, но есть параметры подключения в конфигурации — выполняется подключение через ACP::SQL->connect.





21.08.2026 (Версия биллинга - 'RU 26.08.21')

Наименование модуляСписок изменений/исправлений/добавлений

Серверы доступа

MikroTik: доступ по API используется только при недоступности SSH и только при явно заданных параметрах API/порта

Карточка абонента

Исправлена серверная нормализация дат FROM_DATE/TO_DATE для приостановки услуг и расчёта компенсаций


Поддерживаются форматы YYYY-MM-DD, DD.MM.YYYY и MM.DD.YYYY, в БД/логике используется YYYY-MM-DD


Устранено предупреждение Use of uninitialized value $FROM_M в Service_control.pm

Система

Добавлена серверная нормализация дат при записи в БД (DATE/DATETIME/TIMESTAMP и поля *_DATE)


При значениях вида DD.MM.YYYY/MM.DD.YYYY сохраняется YYYY-MM-DD (и время, если было передано)


Путь к логу SQL ошибок приведён к $base_dir/var/log/SQL/sql_errors


HTML.pm: входные параметры дат (FROM_DATE/TO_DATE/DATE/*_DATE) нормализуются в YYYY-MM-DD до обработки в контроллерах

Авторизация абонента

Доработан rlm_perl.pl/Auth2.pm для совместимости с разными версиями FreeRADIUS и авторизации MSCHAP1/2

billd

Демон (-d): check_lines запускается даже без активной записи в billd_plugins_arg. Если check_lines уже задан в billd_plugins_arg, используется штатный планировщик





20.08.2026 (Версия биллинга - 'RU 26.08.20')

Наименование модуляСписок изменений/исправлений/добавлений

СОРМ 3 - (Unisorm)

В invalid_abonent_ids_map исправлены SQL-комментарии (MySQL # вместо --), чтобы запрос корректно выполнялся


invalid_abonent_ids_map теперь учитывает пробелы в обязательных полях (TRIM), чтобы абоненты с “пустыми” паспортными полями не попадали в abonent-persons


В invalid_abonent_ids_map добавлена блокировка абонентов без номера договора (в текущей записи и в истории), чтобы в abonents_* не появлялись исторические строки с пустым CONTRACT


invalid_abonent_ids_map теперь проверяет обязательные поля ФЛ/ЮЛ также в sorm_abonent_history, чтобы в CLEAN_EXPORT=1 не “протекали” исторические записи abonent-persons_* с пустыми IDENT_CARD_* и abonent-organizations_* без реквизитов


Проверка sorm_abonent_history в invalid_abonent_ids_map выполняется только по самой новой версии (max(version_id)), чтобы исправленный абонент начинал выгружаться

Серверы доступа

Уточнены названия/описания поля RADIUS Secret (двойное назначение: RADIUS secret и SNMP комьюнити для модуля Equipment), обновлены описания в легенде


При привязке NAS как OLT (Equipment: type_id=4) принудительно сохраняется NAS_TYPE=other (защита от автоподмены на epon/gpon)

Perl модули

Добавлен модуль Text::Autoformat


Из perl_modules_install.sh и perldeps.pl убраны некорректные строки установки Perl core-модулей/документации (Net/IO/Pod/Socket/Perl/perlfaq, а также less)


Net::Ping в perl_modules_install.sh устанавливается без прогонки тестов (cpanm --notest), чтобы не падать на типовых ограничениях окружения


Убран несуществующий модуль Netflow::Collector из perl_modules_install.sh и perldeps.pl (cpanm не может найти дистрибутив)





19.08.2026 (Версия биллинга - 'RU 26.08.19')

Наименование модуляСписок изменений/исправлений/добавлений

СОРМ 3 - (Unisorm)

Исправлено восстановление активного периода при возврате услуги из DELETED


Добавлен ремонт основной таблицы — для активных записей (DELETED=0)





18.08.2026 (Версия биллинга - 'RU 26.08.18')

Наименование модуляСписок изменений/исправлений/добавлений

СОРМ 3 - (Unisorm)

Платежи: если для банковского платежа нет названия банка, тип принудительно меняется с 80 на 86


Платежи типа 80: BANK_ACCOUNT/BANK_NAME берутся из payments.payer_* (если сохранены), иначе — из реквизитов компании; BANK_ADDRESS заполняется только из payments.payer_bank_address; если в итоге нет BANK_NAME — тип принудительно меняется на 86


Neos: dict-call-types_* — telco_id приведён к region_id, чтобы соответствовать dict-telcos_*


Neos: абоненты с ошибками (sorm_error_log) не выгружаются в файлы, включая режим CLEAN_EXPORT=1


Yakhont: исправлены источники полей для платежей (80/86), чтобы соответствовать данным staged-таблиц

Компании (Выписки из банка)

Извлекаются реквизиты банка плательщика (БИК/банк/счёт), адрес банка подтягивается по БИК через DaData (для платежей типа 80)


Реквизиты банка плательщика дополнительно фиксируются в paysys_log для последующей выгрузки


Нормализация кодировок (UTF-8/CP1251) и защита от "кракозябр" (моджибэйка UTF-8→latin1) при сохранении названия/адреса банка


При наличии БИК имя и адрес банка берётся из DaData (стандартизовано, корректная UTF-8) (если подключено) иначе пусто


Добавлена поддержка ВерсияФормата=1.01 и 1.02 (включая поле Плательщик1)


Убраны предупреждения uninitialized при формировании описания

Плагины

fix_payments_type_to_etalon.pl теперь переносит ID видов оплат не только в payments/paysys_log, но и в config (PAYSYS_*_PAYMENT_METHOD, MONEY_TRANSFER_PAYMENT_METHOD)





16.08.2026 (Версия биллинга - 'RU 26.08.16')

Наименование модуляСписок изменений/исправлений/добавлений

СОРМ 3 - (Unisorm)

Neos: обязательные поля проверяются и для удалённых абонентов; ошибки обязательных полей, таких абонентов, не засоряют вкладку «Явные ошибки»

Система

Виды оплат: селектор «Списания» корректно очищается через крестик, при сохранении в БД пишется 0

Paysys

Улучшено заполнение payment_kind_code в payments и paysys_log (fallback на paysys_connect/payments_type, дефолт 86)





15.08.2026 (Версия биллинга - 'RU 26.08.15')

Наименование модуляСписок изменений/исправлений/добавлений

СОРМ 3 - (Unisorm)

Neo-s: Исправлено поле standart файлв abonents

Система

Если не совсем правильно заполнены поля ФИО (отсутствует fio1) то кнопка сохранения желтеет, это НЕ ошибка, это приведение биллинга к правильному стандарту

========        ОБЯЗАТЕЛЬНО ЧИСТКА КЕШ/КУКИЕС!!!        =========

Internet

Группы тарифных планов теперь отображают правильное количество ТП

Iptv

Группы тарифных планов теперь отображают именно тарифы модуля ТВ

Abon

Добавлена вкладка групп тарифов по группам абонентов

Вид оплат

Добавлен универсальный скрипт приведения payments_type к эталону (1..11) с переносом ссылок payments/paysys_connect/extreceipts/config и обязательными backup-таблицами. Плагин лежит в /../../libexec/billd.plugins/fix_payments_type_to_etalon.pl





14.08.2026 (Версия биллинга - 'RU 26.08.14')

Наименование модуляСписок изменений/исправлений/добавлений

СОРМ 3 - (Unisorm)

Журнал выгрузок: оптимизированы выборки, добавлены индексы


Neos: суточная обязательная пачка подготавливается один раз в сутки


Справочник SUPPLEMENTARY_SERVICE (Neos): оптимизация выгрузки


Словарные hash'и: оптимизирован расчёт подписи таблиц

Система

Форма расписания: добавлена защита от пустой/битой даты


Серверная нормализация дат DD.MM.YYYY в расписании (если JS-нормализатор не сработал)


Нормализатор дат: при отправке формы нормализуются все поля (не только календарик), если значение похоже на DD.MM.YYYY


Нормализатор дат (DD.MM.YYYY -> YYYY-MM-DD): добавлена защита от сбоев и принудительная нормализация при любых отправках форм

========        ОБЯЗАТЕЛЬНО ЧИСТКА КЕШ/КУКИЕС!!!        =========

Доп. Услуги

Подключение тарифа: добавлена защита от пустой/битой даты


Подключение тарифа: восстановлена обработка 00.00.0000 и формата DD.MM.YYYY для даты


Подключение тарифа: исправлено условие добавления тарифа при "нулевой" дате (00.00.0000)


Карточка абонента: ссылка на тариф/услугу в списке подключенных услуг передаёт корректный ABON_ID





13.08.2026 (Версия биллинга - 'RU 26.08.13')

Наименование модуляСписок изменений/исправлений/добавлений

СОРМ 3 - (Unisorm)

Журнал выгрузок: причина автосинхронизации обязательных словарей теперь отражает vendor-правила (ежедневная обязательная пачка Neo-s)


Журнал выгрузок: устранено несоответствие причин/пояснений реальному решению экспортёра по обязательным словарям


Справочник SUPPLEMENTARY_SERVICE: добавлено принудительное восстановление локализованных имён перед выгрузкой dict-supplement-services


Справочник SUPPLEMENTARY_SERVICE: при отсутствии языка имя теперь восстанавливается из history (последнее "человеческое" значение), чтобы не застревать на Internet


Справочник SUPPLEMENTARY_SERVICE: самовосстановление "битой" активной версии в history (MODULE='' + MNEMONIC='Internet') по данным основной таблицы


Ядро/интерфейс: убран хардкод путей /usr/abills/* — пути теперь строятся относительно $base_dir/$libpath


SFTP: по умолчанию загрузка идёт в текущую папку ('.'), чтобы не пытаться писать в '/' и не получать Permission denied


Сетевые словари: служебные/тестовые/зарезервированные IPv4-сети (CGNAT, loopback, link-local, TEST-NET, 198.18/15, multicast, reserved) помечаются как "Внутренняя"

Компании

Импорт банковской выписки: код СОРМ берётся из payment_kind_code выбранного вида оплаты; если не задан — из COMPANY_BANK_STATEMENT_PAYMENT_KIND_CODE; иначе 80

Доп.Услуги (Abon)

Тарифные планы: добавлен флаг "Выгружать услугу в СОРМ" (abon_tariffs.sorm_export) для управления попаданием тарифа в справочник SUPPLEMENTARY_SERVICE

Paysys

Для "Перевод средств между абонентами" добавлен настраиваемый вид оплаты (вместо хардкода payments_type.id=7); настройка в веб-интерфейсе: Настройка → Финансы → Настройки ядра → Портал Абонента → Перевод средств между пользователями → Вид оплаты





12.08.2026 (Версия биллинга - 'RU 26.08.12')

Наименование модуляСписок изменений/исправлений/добавлений

СОРМ 3 - (Unisorm)

Журнал выгрузок: предпросмотр файлов стал schema-driven (берёт названия колонок/required из exporter %FIELDS), подсвечивает незаполненные обязательные поля, декодирует IPv4 (hex) и "очеловечивает" JSON (списки IP, адреса, данные линии)


Specteh: исправлена схема REGIONS (MNC имеет правильный номер колонки) и добавлены описания %FIELDS для корректного отображения колонок в предпросмотре


Справочник PAY_TYPE: исправлено формирование actual_to (не закрываем типы датой global_begin), чтобы корректно работала история видов оплат


Справочник видов оплат (PAY_TYPE): добавлено самовосстановление истории — исправляются записи с нулевой длительностью (actual_to <= actual_from), чтобы дата исключения не совпадала с датой добавления


Справочник SUPPLEMENTARY_SERVICE: список дополнительных услуг формируется по модулю Abon только для тарифов с включенным флагом "Выгружать в СОРМ"; изменения названия и включение/исключение ведутся через историю 


Справочник SUPPLEMENTARY_SERVICE: экспортёры выгружают полную историю периодов (включая исключённые сервисы с закрытым END_TIME)


Справочник SUPPLEMENTARY_SERVICE: устранено появление пустых строк в выгрузках (версии history без названия/описания больше не формируются и не выгружаются)


Справочник SUPPLEMENTARY_SERVICE: исключение услуги (снятие флага Abon) теперь закрывает период в history без создания нулевой версии BEGIN_TIME=END_TIME


Справочник SUPPLEMENTARY_SERVICE: добавлено самовосстановление окончания периода для исключённых услуг (DELETED=1) — END_TIME больше не остаётся "в будущем"


Сетевые словари (ip_plan/gateways/commutators): исправлено закрытие истории при исключении из выгрузки — больше не создаётся "удалённая" версия с END_TIME=global_ended, из-за чего выключенные записи выглядели актуальными до 2054


Сетевые словари (commutators): исправлен отбор — коммутаторы определяются только по флагу nas.sorm_commutator_export (без ошибочной привязки к IP-пулам), чтобы не происходило массовое ложное исключение из выгрузки


Сетевые словари (gateways): добавлена самовосстанавливающая логика закрытия "вечных" версий в history для уже удалённых записей (устраняет ситуацию, когда выключенный шлюз остаётся актуальным до 2049/2054)


Сетевые словари (gateways): инкрементальная синхронизация теперь учитывает SOURCE_NAS_ID при сравнении записей (исправляет ситуацию, когда в витрине "IP шлюзов" NAS ID оставался пустым и создавал ложное впечатление источника из ippools)


Сетевые словари (ip_plan): добавлена самовосстанавливающая логика закрытия "вечных" версий в history для уже удалённых записей (устраняет ситуацию, когда выключенная подсеть остаётся актуальной до 2049/2054 после CLEAN_EXPORT)


Экспортёры: для всех справочников добавлена защита от "нулевых" версий (BEGIN_TIME=END_TIME / actual_from=actual_to), чтобы не появлялись дубль-строки в выгрузке


Интерфейс справочников: добавлена вкладка "Виды оплат" (PAY_TYPE) с отображением всей истории периодов актуальности по данным sorm_pay_types


Интерфейс справочников: унифицированы колонки периодов для словарей (Начало действия / Дата окончания / Дата исключения)


Интерфейс справочников: вкладка "Шлюзы" дополнены NAS ID в биллинге, чтобы не путать IP шлюза (устройства) с gateway IP-пула


Интерфейс справочников: добавлена отдельная диагностическая вкладка "Шлюзы IP-пулов" (ippools.gateway), чтобы не путать gateway пула и IP шлюза/сервера доступа из NAS


Интерфейс справочников: (ip_plan/gateways/commutators): "Дата исключения" берётся из history (реальная дата закрытия), не отображается как "конец времени" 2049/2054


Интерфейс справочников: вкладка "Сервисы" (SUPPLEMENTARY_SERVICE) переведена в чисто информационный режим (без ручной синхронизации/удаления)


Добавлен "Быстрый отчёт": Unisorm:unisorm_quick_report (одна сводная плашка за сегодня: абоненты/юрлица/платежи/коммутаторы/шлюзы/IP план/сервисы...)

Система

"Виды оплат": добавлена колонка "Код типа платежа СОРМ" (payments_type.payment_kind_code) в табличной части

Доп.Услуги (Abon)

Тарифные планы: добавлен флаг "Выгружать услугу в СОРМ" (abon_tariffs.sorm_export) для управления попаданием тарифа в справочник SUPPLEMENTARY_SERVICE


Тарифные планы: восстановлена подсветка кнопки сохранения блока (кнопка становится "жёлтой" при наличии несохранённых изменений полей)

Paysys

Удалён быстрый отчёт Paysys:paysys_uah_exchange_rates (курс НБУ)


Быстрые отчёты: Paysys:paysys_kgs_exchange_rates заменён и переименован на Paysys:paysys_cbr_exchange_rates (курс ЦБ РФ, базовая валюта RUB)


Курс валют ЦБ РФ выводит "Покупка" и "Продажа" (расчёт через настраиваемый спред PAYSYS_CBR_SPREAD_PCT, по умолчанию 0%)


В отчёте курса ЦБ РФ суммы выводятся с символом рубля (₽), в заголовке отчёта показывается текущий спред (±PAYSYS_CBR_SPREAD_PCT%)


В настройках Paysys -> "Банковские реквизиты" добавлен параметр спреда (PAYSYS_CBR_SPREAD_PCT) для расчёта "Покупка/Продажа" в отчёте курса ЦБ РФ (по умолчанию 0%)

Профиль администратора

Быстрые отчёты сохраняются AJAX-режимом поштучно (изменение одного чекбокса не перезаписывает остальные настройки профиля)

Equipment

Исправлен быстрый отчёт Equipment:equipment_unreg_report — подгрузка моделей перенесена на Equipment::Models::*





11.08.2026 (Версия биллинга - 'RU 26.08.11')

Наименование модуляСписок изменений/исправлений/добавлений

СОРМ 3 - (Unisorm)

Справочники: устранено, возникающее в редчайших случаях, задвоение строк при CLEAN_EXPORT


Neo-s: dict-ip-numbering-plans пропускает “пустые” строки history (без сети/маски/описания), чтобы не попадали строки только с датами

Компании

Секция договора: AJAX-кнопка "Сохранить" работает в карточке компании через основной user_pi.js (без отдельного company-contract.js)

DaData

Селекторы подсказок (код подразделения/ИНН/БИК): улучшена кликабельность и поведение списка

ACP

Misc: form_purchase_module/_error_show/_message_show отправляют отчёт на support@ktk-39.ru (1 письмо / 10 минут) через стандартный Sender, с системной информацией в теле письма





10.08.2026 (Версия биллинга - 'RU 26.08.10')

Наименование модуляСписок изменений/исправлений/добавлений

СОРМ 3 - (Unisorm)

Журнал выгрузок: увеличен период хранения записей запусков/файлов/логов до 7 дней


Журнал выгрузок: добавлено восстановление списка файлов из каталога выгрузок, если записи журнала были очищены


Предпросмотр выгрузок: исправлено распознавание разделителя (TSV не ломается из-за запятых внутри JSON) и улучшена “гуманизация” JSON для Neo-s (логины/телефоны/адреса)


Ядро Unisorm: добавлена нормализация строк после mapper (undef → ''), чтобы REPLACE/INSERT не падали на NOT NULL полях (в т.ч. Specteh на IDENT_CARD_*)


Specteh: в выгрузке PAYMENTS поле ACCOUNT очищается (устаревшее поле, не заполняется)

Internet Мониторинг

Системные чекбоксы и массовые действия ZAP/HANGUP для online-сессий

Параметр в вебинтерфейсе:

Настройка>Системные настройки>Настройки ядра>Авторизация абонентов в сети Интернет>Общие настройки>Контроль Сессий>
Разрешить массовый HangUp/ZAP сессий в мониторинге Интернет

Параметр конфига:

$conf{INTERNET_MONITORING_BULK_ACTIONS}=1;


Массовый HANGUP ускорен (убран sleep 3 на каждую сессию, добавлен кэш NAS->info по NAS_ID, приведён вызов hangup, для массового режима уменьшен RADIUS timeout)

Equipment

C-data/QTECH: "Показать/Исправить конфигурацию ONU" использует учетные данные через ACP::Nas::Auth, что устраняет telnet-таймауты из-за неверной авторизации и работу при передаче NAS-параметров без NAS_INFO


ACP::Telnet: расширены шаблоны приглашений Login/Password (в т.ч. "Password(1-16 chars):")


ACP::Telnet: добавлена поддержка pager-подсказок ("press ENTER to next line..."), чтобы вывод профиля не зависал


"Показать/Исправить конфигурацию ONU" отображается в том же блоке (AJAX), без перехода на отдельную страницу


 



09.08.2026 (Версия биллинга - 'RU 26.08.09')

Наименование модуляСписок изменений/исправлений/добавлений

СОРМ 3 - (Unisorm)

В "Журнале выгрузок" отображение на экране переведено на последние 7 дней без ограничения полной истории


Добавлены подвкладки по типам выгружаемых справочников и просмотр содержимого сформированных файлов


Для всех экспортёров исправлена выгрузка supplementary services: в файл попадают только разрешённые в текущем списке сервисы при сохранении полной истории

Карточка абонента

Исправлена подмена списка IPTV-тарифов на Internet при смене тарифа через меню "Сервисы" в карточке абонента (JS-монитор обновлял не тот селектор TP_ID)

========        ОБЯЗАТЕЛЬНО ЧИСТКА КЕШ/КУКИЕС!!!        =========


 



06.08.2026 (Версия биллинга - 'RU 26.08.06')

Наименование модуляСписок изменений/исправлений/добавлений

СОРМ - Unisorm

Добавлен период охлаждения 24 часа для выгрузки IP-плана, шлюзов и коммутаторов


Справочник IP-плана теперь заполняется автоматически с привязкой к исходным IP pools


Справочник шлюзов теперь заполняется автоматически с привязкой к исходным серверам доступа


Справочник коммутаторов теперь заполняется автоматически с привязкой к исходным серверам доступа


Исправлена полная очистка справочника типов платежей при DESTROY_ALL_HISTORY=1


В журнале выгрузок скрыт технический шум и исправлен вывод дат


Во вкладке явных ошибок исключены отключенные и удалённые абоненты


Вкладка IP-плана перенесена сразу после вкладки коммутаторов


Обновление вызывает внеочередную выгрузку технических словарей

Карточка абонента

Исправлена загрузка JS в карточке абонента при переходах из списков и быстрых отчётов

========        ОБЯЗАТЕЛЬНО ЧИСТКА КЕШ/КУКИЕС!!!        =========

Equipment

Исправлена фатальная ошибка при некорректной структуре PON_LEVELS_ALERT

Сервера доступа

Исправлено сохранение переключателей выгрузки СОРМ в карточке NAS

Storage

Исправлен запуск storage_serial_info.pl из разных каталогов и чтение config.pl


 



04.08.2026 (Версия биллинга - 'RU 26.08.04')

Наименование модуляСписок изменений/исправлений/добавлений

backup

Исправлено создание бекапа, теперь таблицы сорма попадают в бекап и не ломаются

СОРМ - Unisorm

Исправлена проверка на дату регистрации абонента, теперь такие абоненты являются ошибочными


Усилине проверка на нулевую дату договора


Добавлена локализация ошибок НЕ выгрузки абонента


Добавлен "Журнал выгрузок" в СОРМ (данные за последние 3 дня, для анализа)



03.08.2026 (Версия биллинга - 'RU 26.08.03')

Наименование модуляСписок изменений/исправлений/добавлений

billd как сервис

Исправлено определение локера для pid файлов

СОРМ - Unisorm

Улучшено описание в консоли при запуске HELP=1


Теперь правильно определяет ответ на не правильный аргумент


Спецтехнологии, исправлено "Выгружать в будущее"



01.08.2026 (Версия биллинга - 'RU 26.08.01')

Наименование модуляСписок изменений/исправлений/добавлений

Склад

Исправлено списание, когда установка оборудования срывалась


Добавлен консольный плагин поиска проблемных партий/серийников/установок

Equipment 

QTECH - Добавлен возможность получить/исправить профиль onu

СОРМ - Unisorm

Добавлен параметр отключения создания tar.gz при создании архива


Добавлен параметр времени периодического сбора для демона billd


Добавлен параметр автоматической выгрузки на FTP/SFTP по заданному времени


Исправлена выгрузка abonents для вендора Neo-s


Исправлена дата в выгрузках Спецтехнологий


Переработана архивация выгрузок


Переработана отправка выгрузок


Исправлена ошибка zero column ipv6 для некоторых вендоров


 



  • Нет меток