Изменение валюты по умолчанию

Технические вопросы по UTM 5.0
basker
Сообщения: 51
Зарегистрирован: Вт апр 28, 2015 13:40

Изменение валюты по умолчанию

Сообщение basker »

В Беларусь с 01.07.2016 будет произведена деноминация национальной валюты. После деноминации (курс 1:10000) изменится буквенный и цифровой коды (http://www.nbrb.by/Press/?nId=1228). Посоветуйте, пожалуйста, как корректнее всего произвести изменение баланса лицевых счетов, стоимости услуг, основной валюты.
Без доработки биллинга сегодня это можно решить только так:
  1. Скриптом считать наименование тарифов, услуг, ip-групп и т.д. в файл.
  2. Поставить все тарифы на удаление со следующего расчетного периодна.
  3. Остановить приём платежей
  4. С наступлением 01.07.2016 остановить ядро и в БД уменьшить баланс, кредит, стоимость услуг, стоимость мегабайта (и сопутствующие таблицы) на 10000. Запустить ядро.
  5. Добавить новую валюту. Изменить валюту по умолчанию. Изменить соотношение курсов
  6. Включить приём платежей
  7. Скриптом создать тарифы, услуги, ip-группы и т.д. по информации из файла.
Но эта процедура очень сложна и можно допустить много ошибок. Помогите пожалуйста.

Rico-X
Сообщения: 164
Зарегистрирован: Вт окт 25, 2011 12:04

Сообщение Rico-X »

Недавно через похожую процедуру проходили в Крыму. Делали примерно так:

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

UPDATE tariffs, services_data, tariffs_services_link,periodic_services_data
SET
periodic_services_data.cost = periodic_services_data.cost * 10000
WHERE 
tariffs_services_link.tariff_id  = tariffs.id AND
tariffs_services_link.service_id = services_data.id AND
tariffs_services_link.service_id = periodic_services_data.id AND
services_data.service_type = 2 AND
tariffs_services_link.is_deleted = 0;
баланс/кредиты абонентов:

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

UPDATE
accounts
SET
balance = balance * 10000,
credit = credit * 10000;
Меняем код валюты и радуемся, в общем все.

basker
Сообщения: 51
Зарегистрирован: Вт апр 28, 2015 13:40

Сообщение basker »

На какой версии биллинга делали?
В какой момент выполняли изменение?
Как себя повёл биллинг в конце расчетного периода и какие были настройки политик списаний?

Rico-X
Сообщения: 164
Зарегистрирован: Вт окт 25, 2011 12:04

Сообщение Rico-X »

basker писал(а):На какой версии биллинга делали?
В какой момент выполняли изменение?
Как себя повёл биллинг в конце расчетного периода и какие были настройки политик списаний?
На версии 5.3.002 какой апдейт не помню уже.
В конце расчетного периода повел нормально, а вот сразу после изменения базы доснимал "недостающую" по его мнению сумму со всех юзеров, просто скорректировали снятие это у всех запросом к базе и компенсацией и все. Типа всем у кого такого-то числа было снятие сумм (таких-то и таких-то) докинуть эти суммы на счет с пометкой компенсация перехода. Политики списания настроенны на ежемесячное списание у каждого юзера свой личный расчетный период.

DVK
Сообщения: 34
Зарегистрирован: Пт апр 08, 2005 10:50
Откуда: Минск
Контактная информация:

Сообщение DVK »

Да, аналогичное списание "недостающей" суммы абонплаты тоже наблюдал. Смена стоимости услуг производилась при остановленном ядре. После окончания расчетного периода (одного для всех). Произошло после запуска ядра. Тип списания абонплаты - "в начале расчетного периода".

Но сейчас у нас задача чуть другая, стоимость валюты не увеличивается, а уменьшается в 10000 раз. Что сделает ядро после прямого изменения стоимости всего - Х.З. Не хочется идти таким путём.

Что будет если пойти другим путём:
1. Добавить новую валюту с соответствующим курсом.
2. В час Ч изменить system currency.
3. Поменять валюту каждому юзеру.
Вот по п.2 и 3 вопросы.
2. Пересчитает ли ядро стоимость услуг при изменении system_currency?
2.1. Не произойдет ли какого глюка типа доначисления или досписания абонплаты?
3. Пересчитает ли остатки на лицевых счетах? И не пересчитает ли их при выполнении п.2?

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

Сообщение Magnum72 »

DVK писал(а):Да, аналогичное списание "недостающей" суммы абонплаты тоже наблюдал. Смена стоимости услуг производилась при остановленном ядре. После окончания расчетного периода (одного для всех). Произошло после запуска ядра. Тип списания абонплаты - "в начале расчетного периода".

Но сейчас у нас задача чуть другая, стоимость валюты не увеличивается, а уменьшается в 10000 раз. Что сделает ядро после прямого изменения стоимости всего - Х.З. Не хочется идти таким путём.

Что будет если пойти другим путём:
1. Добавить новую валюту с соответствующим курсом.
2. В час Ч изменить system currency.
3. Поменять валюту каждому юзеру.
Вот по п.2 и 3 вопросы.
2. Пересчитает ли ядро стоимость услуг при изменении system_currency?
2.1. Не произойдет ли какого глюка типа доначисления или досписания абонплаты?
3. Пересчитает ли остатки на лицевых счетах? И не пересчитает ли их при выполнении п.2?
Валюта новая у вас точно появится, вернее код изменится. Но переводить на нее рекомендую по курсу 1:1, поэтому сначала рекомендую сделать :

1) 30 июня у всех услуг правим в базе тип списания "Списывать в конце РП" и ребут
2) Когда начнется июль то после полного закрытия периода, стопаем биллинг правим в базе балансы, и стоимость услуг, и возвращаем у услуг тип списания обратно, стартуем.

Актуально для последней версии биллинга (5.2.003 update 15).

ant_perch
Сообщения: 27
Зарегистрирован: Вт фев 19, 2013 09:56
Контактная информация:

Сообщение ant_perch »

Да тема актуальна для многих в РБ :)

Для себя определил следующий алгоритм.


1. Все абоненты (по группам) в новом расчетном периоде уходят на новые ТП (оптимизируем стоимость и "ребрендинг" ТП)
2. Останавливаем базу, бэкапим :), делим на 10 000 баланс и кредит.
3. Меняем тип валюты
4. Правим стоимость услуг.
После старта, абоненты на новых тарифах с новой ценой, ни каких лишних списаний быть не должно.

Аватара пользователя
MaxDM
Сообщения: 313
Зарегистрирован: Пн апр 03, 2006 10:26
Контактная информация:

Сообщение MaxDM »

Стоимость услуг и тарифов не забудьте тоже поменять.

basker
Сообщения: 51
Зарегистрирован: Вт апр 28, 2015 13:40

Сообщение basker »

Да с большего то понятно... Стоимость услуг, баланс, кредит... На время изменений отключить зачисление платежей... А есть ещё обещанные платежи. Кто нить в курсе в каких таблицах их править что бы списалась правильная сумма?

Аватара пользователя
MaxDM
Сообщения: 313
Зарегистрирован: Пн апр 03, 2006 10:26
Контактная информация:

Сообщение MaxDM »

basker писал(а):Да с большего то понятно... Стоимость услуг, баланс, кредит... На время изменений отключить зачисление платежей... А есть ещё обещанные платежи. Кто нить в курсе в каких таблицах их править что бы списалась правильная сумма?
Таблица credits и ещё есть история баланса balance_history.

ant_perch
Сообщения: 27
Зарегистрирован: Вт фев 19, 2013 09:56
Контактная информация:

Сообщение ant_perch »

MaxDM писал(а):Стоимость услуг и тарифов не забудьте тоже поменять.
Да, эти вещи само собой так же будут изменены.

ant_perch
Сообщения: 27
Зарегистрирован: Вт фев 19, 2013 09:56
Контактная информация:

Сообщение ant_perch »

Magnum72 писал(а):
Валюта новая у вас точно появится, вернее код изменится. Но переводить на нее рекомендую по курсу 1:1, поэтому сначала рекомендую сделать :

1) 30 июня у всех услуг правим в базе тип списания "Списывать в конце РП" и ребут
2) Когда начнется июль то после полного закрытия периода, стопаем биллинг правим в базе балансы, и стоимость услуг, и возвращаем у услуг тип списания обратно, стартуем.

Актуально для последней версии биллинга (5.2.003 update 15).
А не подскажите запросы или таблицы котрые необходимо для этого править? Был бы очень признателен за подсказки.

Версия 5-3.001

ant_perch
Сообщения: 27
Зарегистрирован: Вт фев 19, 2013 09:56
Контактная информация:

Сообщение ant_perch »

MaxDM писал(а): Таблица credits и ещё есть история баланса balance_history.
А надо ли менять размер сумм в баланс хистори. Т.к. до 01,07 там все должно быть с нулями. А вот после в нее будет заносить сумма новая....

DVK
Сообщения: 34
Зарегистрирован: Пт апр 08, 2005 10:50
Откуда: Минск
Контактная информация:

Сообщение DVK »

Magnum72 писал(а):1) 30 июня у всех услуг правим в базе тип списания "Списывать в конце РП" и ребут
2) Когда начнется июль то после полного закрытия периода, стопаем биллинг правим в базе балансы, и стоимость услуг, и возвращаем у услуг тип списания обратно, стартуем.
Это, я так понимаю, чтобы списания абонплат за июль произошли уже в новых деньгах? Я решил таки сделать наоборот, т.е. в июне ничего не трогаю, после полного закрытия периода стопаю ядро, делю всё потребное на 10000 и запускаю.
ant_perch писал(а):А не подскажите запросы или таблицы котрые необходимо для этого править? Был бы очень признателен за подсказки.
Версия 5-3.001
У меня 5.2-какая-то. Вроде, получается так:
update periodic_services_data set cost=cost/10000 where is_deleted=0;
update accounts set balance=balance/10000 where is_deleted=0;
update iptraffic_borders set cost=cost/10000 where is_deleted=0;
update once_service_data set cost=cost/10000 where is_deleted=0;
ant_perch писал(а):А надо ли менять размер сумм в баланс хистори. Т.к. до 01,07 там все должно быть с нулями. А вот после в нее будет заносить сумма новая....
Я не трогаю. Вроде ничего от этого не развалилось.
Да, еще в настройках админки надо будет поправить DoubleRounding, чтобы правильно показывал доли рубля.

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

Сообщение Magnum72 »

Нет, как раз наоборот.. меняем тип на "Списывать в конце РП" для того чтобы когда июль начнется мы могли спокойно успеть изменить стоимость.
Иначе, если оставить тип списания в начале РП, то спишется огромная сумма и все поедет. А если оставить равномерное списание, то биллинг все равно успеет списать часть абонентки, и эта часть в рублях будет явно больше чем деноминированная сумма.
Поэтому откладываем все списания на конец РП, спокойно после наступления нового рп правим балансы и услуги.

Ответить