Смена стоимости услуги

Технические вопросы по UTM 5.0
Ответить
rem_lex
Сообщения: 5
Зарегистрирован: Чт июн 04, 2009 15:11

Смена стоимости услуги

Сообщение rem_lex »

Тема поднималась не раз, поиском по форуму и гуглом пользоваться умею =)
Как изменить стоимость в тарифной связке я знаю, вопрос в другом, после ручного изменения стоимости в БД, после перезапуска ядра происходит доначисление абонплаты всем пользователям, как этого избежать? Т.е. нужно что бы новая стоимость тарифа снималась только в новом расчетно периоде. Версия ядра: 5.2.1-008.

Аватара пользователя
Magnum72
Сообщения: 1947
Зарегистрирован: Чт сен 22, 2005 06:54
Контактная информация:

Re: Смена стоимости услуги

Сообщение Magnum72 »

rem_lex писал(а):Тема поднималась не раз, поиском по форуму и гуглом пользоваться умею =)
Как изменить стоимость в тарифной связке я знаю, вопрос в другом, после ручного изменения стоимости в БД, после перезапуска ядра происходит доначисление абонплаты всем пользователям, как этого избежать? Т.е. нужно что бы новая стоимость тарифа снималась только в новом расчетно периоде. Версия ядра: 5.2.1-008.
Без костылей никак, есть варианты:

1) Отключить услугу и заново ее подключить с датой начала последняя секунда текущего РП (или в тех версиях где возможно первая секунда нового РП)

2) Поставить коэффициент = 0 и потом поменять стоимость (для новых версий биллинга)

3) Дождаться начала нового РП и изменить стоимость.

rem_lex
Сообщения: 5
Зарегистрирован: Чт июн 04, 2009 15:11

Re: Смена стоимости услуги

Сообщение rem_lex »

если честно, чет я не понял смысла таких манипуляций
Magnum72 писал(а): 1) Отключить услугу и заново ее подключить с датой начала последняя секунда текущего РП (или в тех версиях где возможно первая секунда нового РП)
отключение и повторное подключение услуги, даже тем же РП приведет к повторному снятию АП в любом случаи же
Magnum72 писал(а):2) Поставить коэффициент = 0 и потом поменять стоимость (для новых версий биллинга)
судя по тому что не нашел у себя никаких коэффициентов, версия не та, или не там смотрел, что за коэффициенты и где они находятся?
Magnum72 писал(а):3) Дождаться начала нового РП и изменить стоимость.
не вариант, тариф подключен нескольким тысячам пользователей у каждого свой РП, т.е. они все равномерно размазаны по месяцу

а нет по случаю какого-нибудь хака в ядре, отключающего этот перерасчет, судя по ченжлогу это появилось где-то в 5.2.1-006

может у кого есть опыть, есть идея попробовать заблокировать счета и перезапустить ядро, при какой блокировке не будет списываться?

Shiva
Сообщения: 131
Зарегистрирован: Пт авг 28, 2009 12:39
Откуда: Россия, Тверь

Сообщение Shiva »

Поменять на тариф с другой услугой...

Аватара пользователя
Magnum72
Сообщения: 1947
Зарегистрирован: Чт сен 22, 2005 06:54
Контактная информация:

Re: Смена стоимости услуги

Сообщение Magnum72 »

rem_lex писал(а):если честно, чет я не понял смысла таких манипуляций
Magnum72 писал(а): 1) Отключить услугу и заново ее подключить с датой начала последняя секунда текущего РП (или в тех версиях где возможно первая секунда нового РП)
отключение и повторное подключение услуги, даже тем же РП приведет к повторному снятию АП в любом случаи же
Magnum72 писал(а):2) Поставить коэффициент = 0 и потом поменять стоимость (для новых версий биллинга)
судя по тому что не нашел у себя никаких коэффициентов, версия не та, или не там смотрел, что за коэффициенты и где они находятся?
Magnum72 писал(а):3) Дождаться начала нового РП и изменить стоимость.
не вариант, тариф подключен нескольким тысячам пользователей у каждого свой РП, т.е. они все равномерно размазаны по месяцу

а нет по случаю какого-нибудь хака в ядре, отключающего этот перерасчет, судя по ченжлогу это появилось где-то в 5.2.1-006

может у кого есть опыть, есть идея попробовать заблокировать счета и перезапустить ядро, при какой блокировке не будет списываться?

1) Если в момент подключения поставить галочку "Перерасчет АП то ничего не спишется"

2) Да появилось в следующей версии биллинга

3) У тя получается около 30 расчетных периодов? Каждый день править свой РП не вариант?

Есть вариант попробовать увеличить до ненормально большого значение в поле unabon_period у соответствующих услуг в таблице periodic_service_links, и потом поменять стоимость услуги в бд, тогда после перезапуска, по идее досписания не произойдет, но это такой грязный хак что я бы сначала проверил это на тестовом биллинге, и покрутил бы на тесте еще часы вперед чтобы убедится, что в следующем периоде будет все нормально.

rem_lex
Сообщения: 5
Зарегистрирован: Чт июн 04, 2009 15:11

Re: Смена стоимости услуги

Сообщение rem_lex »

В общем, решение вышло таким, выставить всем безлимитный режим, сменить стоимость услуги, перезапустить ядро, потом откатить состояние счетов с безлимитным режимом и еще раз перезагрузить ядро.

Создаем временную таблицу:

Код: Выделить всё

CREATE TABLE `accounts_unlimited` (
  `id` int(11) NOT NULL auto_increment,
  `unlimited` int(11) default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
Копируем состоя аккаунтов:

Код: Выделить всё

TRUNCATE TABLE accounts_unlimited;

INSERT INTO
 accounts_unlimited
SELECT
 a.id,
 a.unlimited
FROM
 accounts AS a
WHERE
 a.is_deleted = 0 AND
 a.unlimited = 1;
выставляем всем или нужным пользователям безлимитный режим

Код: Выделить всё

UPDATE `accounts` AS a SET `unlimited`='1'
или выборочно

Код: Выделить всё

UPDATE
 `accounts` AS a
 INNER JOIN account_tariff_link AS atl ON atl.account_id = a.id
 INNER JOIN discount_periods AS dp ON dp.id = atl.discount_period_id

SET a.`unlimited`='1'

WHERE
 a.is_deleted = 0 AND
 atl.is_deleted = 0 AND
 dp.is_expired = 0 AND
 dp.start_date < UNIX_TIMESTAMP&#40;'2016-02-15 00&#58;00&#58;00'&#41;
меняем стоимость услуг и перезагружаем ядро

возвращаем состояния счетов для безлимитных пользователей:

Код: Выделить всё

UPDATE
 `accounts` SET `unlimited`='0'
WHERE
 is_deleted = 0
;

UPDATE `accounts` AS a SET `unlimited`='1' WHERE `id` IN
&#40;
 SELECT
  id
 FROM
  accounts_unlimited
&#41;
;
перезагружаем еще раз ядро.

Ответить