Нафиг. Сейчас сделано идеально, не надо тут ничего ломать.ZeM писал(а):Если у абонента отрицательный баланс -1000 и стоит Системная блокировка и попытаться повесить административную блокировку в ЛС с периодом действия то в Отчете - Блокировки видим что Административная дата начала и конца блокировки почти совпадают. Если баланс положительный то все нормально.
Предлагаю сделать примерно так, что если стоит системная блокировка галочку административная блокировка в ЛС сделать неактивно.
Опыт установки 5.3 на боевом сервере
Коллеги я затупил. Вообщем задача сделать ежедневные списания и чтобы абоненты в минус не уходили.
1. Настроил Политику списаний для всех типов блокировок одинаковую а именно

2. Создал тариф c услугой передача ip трафика

и

3. РП 1 месяц со списанием 7 раз в неделю

4. Создал абонента закинул ему 500 руб. Повесил ему тариф с новым РП. Ну и с него списалось так.
http://s48.radikal.ru/i119/1503/46/2357e4649c0c.jpg
Вопрос такой почему 5.49 ?
Я сильно полагал что при тарифе 500 формула такая. Что 500 кол.во дней в месяце / (31 в марте) = 16.12 в день списываться будет всего.
Точнее что не так?
P.S. Параметры flow_discount_per_period - 64
discount_barrier = 0.01
1. Настроил Политику списаний для всех типов блокировок одинаковую а именно

2. Создал тариф c услугой передача ip трафика

и

3. РП 1 месяц со списанием 7 раз в неделю

4. Создал абонента закинул ему 500 руб. Повесил ему тариф с новым РП. Ну и с него списалось так.
http://s48.radikal.ru/i119/1503/46/2357e4649c0c.jpg
Вопрос такой почему 5.49 ?
Я сильно полагал что при тарифе 500 формула такая. Что 500 кол.во дней в месяце / (31 в марте) = 16.12 в день списываться будет всего.
Точнее что не так?
P.S. Параметры flow_discount_per_period - 64
discount_barrier = 0.01
подскажите
что за прикол с DHCP (биллинг up12)
почему выдаёт такую маленькую аренду? => expired='1427121306',updated='1427121291'
и у абонента в "DHCP аренда" данные не появляются.
что за прикол с DHCP (биллинг up12)
Код: Выделить всё
Mar 23 17:34:51 ?Debug : ac67f700 DBConnection_mysql: <0x198e310> SQL SELECT query: SELECT id,ip,expired,updated,client_id,binding_id,flags FROM dhcp_leases WHERE mac='34:08:04:29:70:2d' ORDER BY id
Mar 23 17:34:51 ?Debug : ac67f700 DBConnection_mysql: <0x198e310> SQL SELECT query: 1 rows in 0.001 sec
Mar 23 17:34:51 Info : ac67f700 packet log: DISCOVER from 34:08:04:29:70:2d relay-agent-info 0102001502040a041101
Mar 23 17:34:51 ?Debug : ac67f700 DHCP_Server: got DHCPDISCOVER packet
Mar 23 17:34:51 ?Debug : ac67f700 BindingManager: binding #42156 OK
Mar 23 17:34:51 ?Debug : ac67f700 DBConnection_mysql: <0x198e310> SQL SELECT query: SELECT mac FROM dhcp_leases WHERE ip='168038761' AND (expired>'1427121291' OR flags='1')
Mar 23 17:34:51 ?Debug : ac67f700 DBConnection_mysql: <0x198e310> SQL SELECT query: 0 rows in 0.000 sec
Mar 23 17:34:51 ?Debug : ac67f700 LeaseManager: static_offer: IP 10.4.17.105 for MAC 34:08:04:29:70:2d; switch #4; port #21; VLAN #0
Mar 23 17:34:51 ?Debug : ac67f700 DBConnection_mysql: <0x198e310> SQL query: UPDATE dhcp_leases SET ip='168038761',client_id='microsof-b3fa82',binding_id='42156',expired='1427121306',updated='1427121291',flags='0' WHERE id='1212'
Mar 23 17:34:51 ?Debug : ac67f700 DBConnection_mysql: <0x198e310> SQL query takes 0.018 sec
Mar 23 17:34:51 ?Debug : ac67f700 DHCP_Server: offered IP 10.4.17.105 from the pool ID 4
Mar 23 17:34:51 ?Debug : ac67f700 DHCP_Server: sending OFFER of 10.4.17.105 to 34:08:04:29:70:2d
Mar 23 17:34:51 ?Debug : ac67f700 DHCP_Server: sending reply to relay 10.4.17.1:67
DHCP packet header
op: 2
htype: 1
hlen: 6
hops: 0
xid: 162432ea
secs: 0
flags: 32768
ciaddr: 0.0.0.0
yiaddr: 10.4.17.105
siaddr: 10.0.10.50
giaddr: 10.4.17.1
chaddr: 34:08:04:29:70:2d
sname:
file:
option [dhcp-message-type]: 02
option [dhcp-server-identifier]: 10.0.10.50
option [dhcp-lease-time]: 12800
option [routers]: 10.4.17.126
option [subnet-mask]: 255.255.255.128
option [domain-name-servers]: 212.98.160.65;194.158.206.206
option [routers]: 10.4.17.126
option [routers]: 10.4.17.126
option [relay-agent-info]: 0102001502040a041101
Mar 23 17:34:51 Info : ac67f700 packet log: OFFER to 34:08:04:29:70:2d offered IP 10.4.17.105
и у абонента в "DHCP аренда" данные не появляются.
Нормально работало, только после перезапуски ядра слетал флаг "пересчитывать абон.плату" в периодической связки, что приводило к списанию абон.платы за весь месяц. У нас был скрипт который контролировал этот флаг и переподключал услугу если он был сброшен. Зато для юзеров было всё просто и понятно при подключении сервисной связки.serjk писал(а):Добавление сервисной связки вне текущего расчетного периода никогда не работало корректно, в 5.3 (возможно, и раньше) с целью предотвращения непредсказуемых последствий этого действия оно было запрещено.banec писал(а):тем более в 5.3 уже сломали всё с периодами больше расчетного.
А вот в 5.3 чтобы дать абоненту бесплатный период теперь приходится изобретать различные костыли.
Неужели так сложно было пофиксить этот баг что вы просто выбросили весь функционал?
Последний раз редактировалось forgotten Пт мар 27, 2015 09:15, всего редактировалось 1 раз.
Есть подозрение, что в api.xml неактуальное описание функции rpcf_set_radius_attr (0x10100). Никак не получается заставить её работать, да и судя по логам добавления атрибута из админки, переменные передаются несколько иные.
Может кто-нибудь дать верное проверенное xml-описание этой функции для 5.3.-002 upd 16?
Может кто-нибудь дать верное проверенное xml-описание этой функции для 5.3.-002 upd 16?
Проверил, есть ошибка. В цикле, после описания параметра usage_flags, добавьте аналогичный параметр expire_date (дата автоматического удаления атрибута)
Код: Выделить всё
<function name="rpcf_set_radius_attr" id="0x10100">
<input>
<integer name="sid" />
<integer name="st" />
<integer name="cnt" />
<for name="i" from="0" count="cnt">
<integer name="vendor" array_index="i" />
<integer name="attr" array_index="i" />
<integer name="usage_flags" array_index="i" />
<integer name="expire_date" array_index="i" default="2000000000"/>
<integer name="param1" array_index="i" />
<if variable="param1" value="1" condition="eq">
<string name="cval" array_index="i" />
</if>
<if variable="param1" value="2" condition="eq">
<integer name="ival" array_index="i" />
</if>
<if variable="param1" value="3" condition="eq">
<string name="val" array_index="i" />
</if>
</for>
</input>
<output/>
</function>
Код: Выделить всё
FLAG_ACCESS_ACCEPT = 1,
FLAG_ACCESS_REJECT = 2,
FLAG_DISCONNECT_REQUEST = 4,
FLAG_COA_REQUEST = 8,
FLAG_REPLACE_ATTR = 16,
FLAG_ENABLE_SCRIPTING = 32,
FLAG_REMOVE_ATTR = 64
С учетом всё большей конкуренции - этот функционал просто необходим.serjk писал(а):Функционалом это сложно назвать, скорее багом. Для корректной реализации требуется определенный объем работы и тестирования. Раз функционал оказался востребован - реализуем в 5.3-003 (если будет возможность слить эти изменения в ветку 5.3-002 - войдет в один из будущих апдейтов)
ЗЫ Вообще нужно внедрять системы лояльности для абонентов. Так что бы выгодно отличался ваш биллинг от конкурентов подумайте о внедрения такого функционала.
Было бы здорово если вы доделаете функционал установки коэффициента стоимости в сервисных связках. Нужна возможность точно указать на какой период действует этот коэффициент. Сейчас при изменении коэффициента перерасчет делается в конце текущего расчётного периода, а это не очень удобно. Скидка обычно даётся на будущие расчетные периоды, а не на текущий. И контролировать абонентов со скидкой тяжело, поэтому нужно добавить время окончания действия скидки.serjk писал(а):Функционалом это сложно назвать, скорее багом. Для корректной реализации требуется определенный объем работы и тестирования. Раз функционал оказался востребован - реализуем в 5.3-003 (если будет возможность слить эти изменения в ветку 5.3-002 - войдет в один из будущих апдейтов)
Этот функционал вполне может заменить время начала действия сервисной связки.