Jump to content
Калькуляторы

Вопрос спецам по Lanbilling'y переход с 1.9 до 2.0

@Andrei Ну я вам про них и говорил, собственно. php там не место, нужен xml с шаблоном + sql с запросами, concat и post по желанию.

А подключаемых отчетов уже много лет как нет.

Share this post


Link to post
Share on other sites
26 минут назад, dereiff сказал:

нужен xml с шаблоном + sql с запросами, concat и post по желанию.

Есть какое-то описание процесса? Дали ссылку вот на такое описание - https://www.lanbilling.ru/neworders.html

Много непонятного, часть ссылок битые, проще наверное взять что-то из комплекта поставки и пытаться его править.

Share this post


Link to post
Share on other sites
14 часов назад, Andrei сказал:

Есть какое-то описание процесса? Дали ссылку вот на такое описание - https://www.lanbilling.ru/neworders.html

Много непонятного, часть ссылок битые, проще наверное взять что-то из комплекта поставки и пытаться его править.

Это описание того, как редактировать xml. Попробуйте для начала почитать раздел "Шаблоны отчетных документов" из документации. Возможно тогда станет понятнее

Если кратко, то отчет в биллинге это XML, который в конечном итоге станет документов MS Word или MS Excel, в редком случае некоторые отчеты из поставки это html. Внутри себя XML содержит как минимум пару указателей (как вариант <!-- begin_services --> и <!-- end_services -->) между которыми описывается структура которая должна повторяться в итоговом документе, например - строка в таблице.  Аналогичные указатели есть в sql файле - он описывает как из БД выбирать данные и заполнять ими ту самую строку в таблице.

 

Share this post


Link to post
Share on other sites

В прошлых версиях биллинга рекомендовали все делать через API, теперь опять вернулись к тому, от чего ушли - к прямым sql-запросам. :)

Простейший отчет сделал

sql:


<!-- begin_services ---:begin_cursor:%amount%,%prom_date%,%number%,%FIO%,@dtfrom:select p.amount, p.prom_date, agr.number, concat(a.abonent_surname,' ',a.abonent_name,' ',a.abonent_patronymic) as FIO from promise_payments as p, agreements as agr, accounts as a where agr.agrm_id=p.agrm_id and agr.uid=a.uid and date(p.prom_date)>=@dtfrom and date(p.prom_date)<=@dtto;
<!-- end_services -->:end_cursor

Но в браузере результат красиво не отображается.

Попробовал сделать шаблон xsl и поставил ссылку на него из xml, но красивой таблицы так и не получилось

xml:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<?xml-stylesheet type='text/xsl' href='promise_payments.xsl'?>

<payments>

<!-- begin_services -->
<payment>
<amount>%amount%</amount>
<prom_date>%prom_date%</prom_date>
<number>%number%</number>
<FIO>%FIO%</FIO>
</payment>
<!-- end_services -->

</payments>

 

xsl:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<table border="1">
  <tr bgcolor="#CCCCCC">
    <td align="center"><strong>Сумма</strong></td>
    <td align="center"><strong>Дата</strong></td>
    <td align="center"><strong>Договор</strong></td>
    <td align="center"><strong>ФИО</strong></td>
  </tr>
  <xsl:for-each select="payments/payment">
  <tr bgcolor="#F5F5F5">
    <td><xsl:value-of select="amount"/></td>
    <td><xsl:value-of select="prom_date"/></td>
    <td><xsl:value-of select="number"/></td>
    <td><xsl:value-of select="FIO"/></td>
  </tr>
  </xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>

Share this post


Link to post
Share on other sites
18 часов назад, Andrei сказал:

В прошлых версиях биллинга рекомендовали все делать через API, теперь опять вернулись к тому, от чего ушли - к прямым sql-запросам. :)

Ничего не поменялось, хотите изменять данные или сопрягать информационные системы - используйте API. Шаблонные отчеты изначально делались через sql.

 

Если хотите отображение в браузере - рисуйте сразу html структуру, зачем xml? xml нужен если на выходе хотите получить MS Word или MS Excel документ

Share this post


Link to post
Share on other sites
11 часов назад, dereiff сказал:

Шаблонные отчеты изначально делались через sql.

У меня в прошлых версиях ЛБ пользовательские отчеты были на php через API.

 

11 часов назад, dereiff сказал:

Если хотите отображение в браузере - рисуйте сразу html структуру, зачем xml?

xml - типовая штука, на сколько я понял доку и примеры из комплекта поставки.

html тоже есть, видел, переделал, простейший рабочий вариант:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
<TITLE></TITLE>
</HEAD>

<BODY TEXT="#000000">
<table border="1">
<tr><td>Сумма</td><td>Дата</td><td>Договор</td><td>ФИО</td></tr>
<!-- begin_services --><tr><td>%amount%</td><td>%prom_date%</td><td>%number%</td><td align=left>%FIO%</td></tr>
<!-- end_services -->
</table>
</BODY>
</HTML>

Заголовок таблицы с переменными @dtto и @dtfrom, которые передаются в скрипт, можно сделать добавив перед началом курсора в sql-файл псевдо-sql-запросы  вида:

%datefrom%:select @dtfrom
%dateto%:select @dtto

 

Ну и xml я так и не победил.
 

Share this post


Link to post
Share on other sites

Подскажите, а вот в ЛанБиллинге обычные тарифы с месячной арендой - для них списание 1-ого числа в 0:00

 

Неужели реально нельзя это поменять, чтобы списание было не ночью а днём ? Или ещё лучше например 3-его числа каждого месяца, напр в 10 утра ?

 

Share this post


Link to post
Share on other sites
5 часов назад, Urs_ak сказал:

Неужели реально нельзя это поменять, чтобы списание было не ночью а днём ? Или ещё лучше например 3-его числа каждого месяца, напр в 10 утра ?

ИМХО, это логика зашита в биллинг жестко и не меняется через настройки.

 

Вопрос про личный кабинет.

В /etc/lanbilling/phpclient/client/connection.ini есть настройки указателей на страницы, на которые абонент из личного кабинета будет перенаправляться при выборе определенного действия.
Например, если абонент хочет подключить себе телефон, то вот тут надо поправить url на свой:

[connection/telephony]
url = 'http://sencha.com'
description = 'Описание страницы подключения к телефонии'
text = 'Подключение к телефонии'


Вопрос - каким образом на эту стороннюю страницу передается текущий контекст из личного кабинета, например логин абонента, или его id в биллинге, или номер его договора?

Share this post


Link to post
Share on other sites
21 минуту назад, Andrei сказал:

ИМХО, это логика зашита в биллинг жестко и не меняется через настройки.

Жалко. Мой домашний провайдер списывает 7-ого числа, правда тоже ночью.

 

21 минуту назад, Andrei сказал:

Вопрос - каким образом на эту стороннюю страницу передается текущий контекст из личного кабинета, например логин абонента, или его id в биллинге, или номер его договора?

Я не знаю :)

А на самой странице через php $_SERVER['REMOTE_ADDR'] и далее запрос к mysql не катит ?

 

Мы вот начинающие пользователи LanBilling'а, уже хотим сделать чтобы абоненты сами себе тыкали "Обещанный платёж" на странице блокировки, без захода в ЛК

Share this post


Link to post
Share on other sites
4 часа назад, Urs_ak сказал:

А на самой странице через php $_SERVER['REMOTE_ADDR'] и далее запрос к mysql не катит ?

Это как?

 

4 часа назад, Urs_ak сказал:

уже хотим сделать чтобы абоненты сами себе тыкали "Обещанный платёж" на странице блокировки, без захода в ЛК

Определять абонента будете только по логину? Как будете потом подтверждать, что именно этот абонент сам себе назначил "Обещанный платеж", а не кто-то другой, узнавший логин абонента, загнал его баланс в минус?

Share this post


Link to post
Share on other sites
2 часа назад, Andrei сказал:

Это как?

Определять абонента будете только по логину? Как будете потом подтверждать, что именно этот абонент сам себе назначил "Обещанный платеж", а не кто-то другой, узнавший логин абонента, загнал его баланс в минус?

По IP абонента. У меня есть уже наброски.

 

Абонент заходит на веб-страничку в сети провайдера, соотв. мы узнаём в php из переменной $_SERVER['REMOTE_ADDR']  его адрес.

Далее мы коннектимся на php к базе и по ip получаем что хотим, например agrm_id (пример sql-запросау меня есть).

Далее мы вызываем из php, API ланбиллинга и кладём пользователю с agrp_id нужную сумму, сумму тоже берём по API. Как работать с API через php я недавно разобрался.

 

Ну вот  - пользователь видит на странице "дай денег" кнопку "Отложенный платёж (3 суток)", нажимает его и ему врубается интернет.

 

P.S. У нас мы сделали что у абонента ip не меняется, т.е. при блокировке тот же ip

Share this post


Link to post
Share on other sites
27 минут назад, Urs_ak сказал:

Абонент заходит на веб-страничку в сети провайдера, соотв. мы узнаём в php из переменной $_SERVER['REMOTE_ADDR']  его адрес.

Не наш случай, у нас есть НАТ.

Share this post


Link to post
Share on other sites

Зачем клиента гнать на внутренний сервис через НАТ? НАТ'у больше заняться нечем? :)

Share this post


Link to post
Share on other sites
14 часов назад, vop сказал:

Зачем клиента гнать на внутренний сервис через НАТ?

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

Share this post


Link to post
Share on other sites
9 hours ago, Andrei said:

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

Как бы уже вопрос не о том, но у вас клиенты с отрицательным балансом не могут авторизоваться? За что их так жестоко? :)

Share this post


Link to post
Share on other sites
4 часа назад, vop сказал:

у вас клиенты с отрицательным балансом не могут авторизоваться? За что их так жестоко? :)

Конечно могут, им выдаются адреса из гостевой сети, из которой им показывают страницу "дай денег".

Share this post


Link to post
Share on other sites
19 hours ago, Andrei said:

Конечно могут, им выдаются адреса из гостевой сети, из которой им показывают страницу "дай денег".

Ясненько. Хотя, как по мне, игры с гостевыми сетями нужны исключительно в случае неизвестных клиентов. А если клиент у вас известен, и может быть идентифицирован, то не совсем понятно, зачем гостевые сети использовать. Например, возможность беспарольной кнопки "заплачу завтра" уже теряются (ведь пароль уже предъявлен при подключении).

 

Ну то уже каждый выбирает так, как ему лучше. :)

Share this post


Link to post
Share on other sites
2 часа назад, vop сказал:

А если клиент у вас известен, и может быть идентифицирован, то не совсем понятно, зачем гостевые сети использовать. Например, возможность беспарольной кнопки "заплачу завтра" уже теряются (ведь пароль уже предъявлен при подключении)

Возможность не теряется. В остальном - не понял логики.

Собственно хочется вернуться к заданному вопросу - добавлению в личный кабинет доп.интеграций. Не изучать же ради это Yii Framework. Я посмотрел бегло доки на него - вещь интересная, но на изучение уйдет куча времени и результат будет "из пушки по воробьям". Неужели никто ничего не допиливает в функционале личного кабинета?

Share this post


Link to post
Share on other sites
20.01.2020 17:14:28.632695 WARNING  LWP9006 [src/radius.cpp:2230] IP 10.10.15.39 is already used for vg_id = 0

Кто нибудь сталкивался с чем то подобным? Выдача адресов статическая, PPPoE.

 

Пока что наблюдается только на одной подсети. Гостевых сетей нет.

 

LANBilling 2.0 RADIUS DialUP 27.0 (May  7 2019 15:27:28) rev #e6b722cf

 

Edited by hsvt

Share this post


Link to post
Share on other sites

Что бы не создавать новую тему. Сейчас версия 1.9 hf4. Есть лицензия на 2 версию. Сейчас тихонечко переношу данные скриптами в 2.0.23. Вроде все тихонечко получается. И тут вопрос по телефонии. Используется у нас Астериск и Си2000. 1.9 Все хорошо загружает парсит корректно претензий нет. В 2.0 Там агент теперь LBphone. Перенес телефонный каталог с которым сейчас все хорошо работает и тарифы телефонии. Настроил перенес все учетные записи под этого агента. Настроил парсеры. (Подкрутил конфиг парсера астериска). Ну и попробовал загрузить телефонию. Из csv астериска всего 3 вызова. Файлы si2000 парсит с ошибками типа

Цитата

05.02.2020 23:19:19 WARNING LWP1807 [phonecalc.cpp:932:CalculateCall]   Call tel00420200122:1153 is not calculated. Cannot find vgroups for numbers, numfrom: XXXXXXXXXX[], numto: XXXXXXXXXXX[2-57-0-1-28] (Как я понял в квадратных скобках это транки)

Ну и входящие в исходящие переместил. Кто нибудь сталкивался с таким?

Цитата

 

LANBilling 2.0 Phone Agent build 23.1 (Jun 25 2019 10:23:50), rev #3b90596e

LANBilling 2.0 Core Server build 23.1 (Jun 25 2019 10:43:11), rev #3ed264ee

 

 

 

Share this post


Link to post
Share on other sites

Не находит учётки к кому привязаны номера/транки 

Share this post


Link to post
Share on other sites
22 часа назад, arhead сказал:

Сейчас версия 1.9 hf4. Есть лицензия на 2 версию. Сейчас тихонечко переношу данные скриптами в 2.0.23

Зачем же вы некрофилией занимаетесь? Возьмите вместо 2.0.23 актуальную версию.

Share this post


Link to post
Share on other sites
11 часов назад, alvisid сказал:

Не находит учётки к кому привязаны номера/транки 

Привязка есть. Он ругается где транк пустой или есть. В 1.9 Нормально же все в себя воспринимает.

1 час назад, dereiff сказал:

Зачем же вы некрофилией занимаетесь? Возьмите вместо 2.0.23 актуальную версию.

Успел только этот дистр урвать когда поддержка была

 

Share this post


Link to post
Share on other sites

Поддержка там стоит минимум - на время обновления она однозначно нужна. 

Share this post


Link to post
Share on other sites

Стоит 30я сборка ЛБ от 11.11.2019
Где теперь ЛБ хранит активные pppoe-сессии, юзеров авторизованных через радиус-агента?

mysql> select * from sessionsradius;
Empty set (0.00 sec)

Раньше проверял наличие дублирующихся и залипших сессий вот так:

select inet_ntoa( assigned_ip ), session_id, count(*) cnt  from sessionsradius group by assigned_ip having cnt > 1;

Теперь эта конструкция не работает.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now