Биллинговая система Nodeny

Главная категория => Nodeny Plus => Тема начата: SeMant от 20 Апреля 2014, 07:30:27



Название: Перерасчёт группе клиентов
Отправлено: SeMant от 20 Апреля 2014, 07:30:27
  В связи с проблемами в стране верхний провайдер отказывался 6 дней ремонтиновать линию. Теперь необходимо всем сделать перерасчёт за эти дни. Директор хочет, чтобы услуга у всех, кому доступ разрешён, была продлена. Режим услуги Стандарт.
Возможно ли на ходу продливать жизнь назначенной услуге или сделать перерасчёт группе клиентов ( если ничего не путаю, то об этом Я читал, но найти ничего не смог).
  Как мне наиболее безболезненно выйти из этой ситуации ?


Название: Re: Перерасчёт группе клиентов
Отправлено: Dolphin от 20 Апреля 2014, 16:26:12
На этапе переезда на N+, был вопрос, об изменении времени начала и конца услуги.
Правил руками.
В представлениях базы, есть таблица: `v_services`.
В ней поля `tm_start` и `tm_end` соответствуют началу и концу даты услуги.
В твоем случае, нужно выбрать по условию и обновить `tm_end` с новым значением +6 дней.

Не знаю, на сколько это будет корректным, но у меня прокатило.


Название: Re: Перерасчёт группе клиентов
Отправлено: Sis от 29 Января 2016, 23:02:57
а это разве поменяет что то у действующих клиентов? 


Название: Re: Перерасчёт группе клиентов
Отправлено: Tooreagen от 31 Января 2016, 11:39:03
На этапе переезда на N+, был вопрос, об изменении времени начала и конца услуги.
Правил руками.
В представлениях базы, есть таблица: `v_services`.
В ней поля `tm_start` и `tm_end` соответствуют началу и концу даты услуги.
В твоем случае, нужно выбрать по условию и обновить `tm_end` с новым значением +6 дней.

Не знаю, на сколько это будет корректным, но у меня прокатило.

В N+ это таблица users_services, поле tm_end в секундах.


Название: Re: Перерасчёт группе клиентов
Отправлено: Efendy от 31 Января 2016, 15:52:37
Выложу детальную инфу:

users_services - таблица с уже подключенными услугами к конкретным абонам. Ее изменение влияет на текущие услуги. Т.е. можно менять время окончания и услуга будет продлена. Стоимость этой, уже подключенной услуги, при этом не меняется. Если надо изменить - это надо править платеж-списание.

services - таблица с параметрами услуг. Это не подключенные услуги, а именно их описание и параметры. Изменения в этой таблице никак не влияет на текущие подключенные услуги.

v_services - это виртуальная таблица, которая просто соединяет users_services и services чтобы можно было по подключенной услуге получить больше инфы. Можно менять эту таблицу и изменения будут наноситься на таблицы users_services и services. Но я бы не рекомендовал менять именно ее, лучше users_services.

поле tm_end - это время окончания услуги в так называемом виде timestamp - количество секунд, прошедшее с 1970 года. Чтобы добавить сутки, можно сделать так: tm_end = tm_end + 24*60*60, что в идеале не совсем корректно из-за всяких переходов на летнее или зимнее время, но то такие нюансы, что вам париться не надо. Если хочется сделать идеально красиво - юзайте функцию interval в mysql


Название: Re: Перерасчёт группе клиентов
Отправлено: Sis от 16 Июля 2016, 04:04:03
Я не очень силён в мускуле, мне нужно добавить 2 дня ко всем текущим услугам. Значит это будет выглядеть примерно так
UPDATE users_services SET tm_end = tm_end + 48*60*60
верно, подскажите?


Название: Re: Перерасчёт группе клиентов
Отправлено: Tooreagen от 22 Июля 2016, 11:50:26
Я не очень силён в мускуле, мне нужно добавить 2 дня ко всем текущим услугам. Значит это будет выглядеть примерно так
UPDATE users_services SET tm_end = tm_end + 48*60*60
верно, подскажите?
Аналогично. Нужно нескольку десятков абонов продлить услугу. Подскажите правильную команду, а то уже запарился в таблице копошится.


Название: Re: Перерасчёт группе клиентов
Отправлено: Efendy от 22 Июля 2016, 13:18:51
Я не очень силён в мускуле, мне нужно добавить 2 дня ко всем текущим услугам. Значит это будет выглядеть примерно так
UPDATE users_services SET tm_end = tm_end + 48*60*60
верно, подскажите?
верно. Но бекап все равно лучше сделать


Название: Re: Перерасчёт группе клиентов
Отправлено: Tooreagen от 22 Июля 2016, 14:57:48
Я не очень силён в мускуле, мне нужно добавить 2 дня ко всем текущим услугам. Значит это будет выглядеть примерно так
UPDATE users_services SET tm_end = tm_end + 48*60*60
верно, подскажите?
верно. Но бекап все равно лучше сделать

А как указать конкретные uid, если несколько абонов


Название: Re: Перерасчёт группе клиентов
Отправлено: Efendy от 22 Июля 2016, 15:45:46
Код:
UPDATE users_services SET tm_end = tm_end + 48*60*60  WHERE uid IN (11, 20, 56);


Название: Re: Перерасчёт группе клиентов
Отправлено: Tooreagen от 22 Июля 2016, 15:50:23
Код:
UPDATE users_services SET tm_end = tm_end + 48*60*60  WHERE uid IN (11, 20, 56);
Отлично, все работает! Спасибо большое!