Биллинговая система Nodeny
23 Ноября 2024, 09:01:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]
  Печать  
Автор Тема: Перерасчёт группе клиентов  (Прочитано 5685 раз)
SeMant
NoDeny
Старожил
*

Карма: 4
Offline Offline

Сообщений: 266



Просмотр профиля Email
« : 20 Апреля 2014, 07:30:27 »

  В связи с проблемами в стране верхний провайдер отказывался 6 дней ремонтиновать линию. Теперь необходимо всем сделать перерасчёт за эти дни. Директор хочет, чтобы услуга у всех, кому доступ разрешён, была продлена. Режим услуги Стандарт.
Возможно ли на ходу продливать жизнь назначенной услуге или сделать перерасчёт группе клиентов ( если ничего не путаю, то об этом Я читал, но найти ничего не смог).
  Как мне наиболее безболезненно выйти из этой ситуации ?
Записан
Dolphin
Постоялец
***

Карма: 2
Offline Offline

Сообщений: 118


Просмотр профиля
« Ответ #1 : 20 Апреля 2014, 16:26:12 »

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

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

Карма: -7
Offline Offline

Сообщений: 370


Просмотр профиля
« Ответ #2 : 29 Января 2016, 23:02:57 »

а это разве поменяет что то у действующих клиентов? 
Записан
Tooreagen
Старожил
****

Карма: -7
Offline Offline

Сообщений: 257


Просмотр профиля Email
« Ответ #3 : 31 Января 2016, 11:39:03 »

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

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

В N+ это таблица users_services, поле tm_end в секундах.
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #4 : 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
Записан
Sis
Старожил
****

Карма: -7
Offline Offline

Сообщений: 370


Просмотр профиля
« Ответ #5 : 16 Июля 2016, 04:04:03 »

Я не очень силён в мускуле, мне нужно добавить 2 дня ко всем текущим услугам. Значит это будет выглядеть примерно так
UPDATE users_services SET tm_end = tm_end + 48*60*60
верно, подскажите?
Записан
Tooreagen
Старожил
****

Карма: -7
Offline Offline

Сообщений: 257


Просмотр профиля Email
« Ответ #6 : 22 Июля 2016, 11:50:26 »

Я не очень силён в мускуле, мне нужно добавить 2 дня ко всем текущим услугам. Значит это будет выглядеть примерно так
UPDATE users_services SET tm_end = tm_end + 48*60*60
верно, подскажите?
Аналогично. Нужно нескольку десятков абонов продлить услугу. Подскажите правильную команду, а то уже запарился в таблице копошится.
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #7 : 22 Июля 2016, 13:18:51 »

Я не очень силён в мускуле, мне нужно добавить 2 дня ко всем текущим услугам. Значит это будет выглядеть примерно так
UPDATE users_services SET tm_end = tm_end + 48*60*60
верно, подскажите?
верно. Но бекап все равно лучше сделать
Записан
Tooreagen
Старожил
****

Карма: -7
Offline Offline

Сообщений: 257


Просмотр профиля Email
« Ответ #8 : 22 Июля 2016, 14:57:48 »

Я не очень силён в мускуле, мне нужно добавить 2 дня ко всем текущим услугам. Значит это будет выглядеть примерно так
UPDATE users_services SET tm_end = tm_end + 48*60*60
верно, подскажите?
верно. Но бекап все равно лучше сделать

А как указать конкретные uid, если несколько абонов
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #9 : 22 Июля 2016, 15:45:46 »

Код:
UPDATE users_services SET tm_end = tm_end + 48*60*60  WHERE uid IN (11, 20, 56);
Записан
Tooreagen
Старожил
****

Карма: -7
Offline Offline

Сообщений: 257


Просмотр профиля Email
« Ответ #10 : 22 Июля 2016, 15:50:23 »

Код:
UPDATE users_services SET tm_end = tm_end + 48*60*60  WHERE uid IN (11, 20, 56);
Отлично, все работает! Спасибо большое!
Записан
Страниц: [1]
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!