Автор Тема: SQL запрос смена тарифа  (Прочитано 6936 раз)

inettel

  • Newbie
  • *
  • Сообщений: 3
SQL запрос смена тарифа
« : Марта 04, 2015, 13:20:41 »
Добрый день, нужна помощь с SQL со следующими запросами:

  • выбрать все услуги у абонента, с определенным ACCOUNT_NO
  • удалить услугу у абонента
  • добавить услугу абоненту

И вопрос, как будет рассчитываться оплата, если данное действие произвести в середине месяца (смена услуги с одной стоимостью, на услугу с другой стоимостью)

Спасибо
 

Шумко Дмитрий

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 753
Re: SQL запрос смена тарифа
« Ответ #1 : Марта 05, 2015, 08:47:19 »
1.
Код: (sql) [Выделить]
select
    s.Service_Id -- ИД услуги
    , s.Name -- Название услуги
  from services s
       inner join subscr_hist sh on (s.Service_Id = sh.Serv_Id)
       inner join customer c on (sh.Customer_Id = c.Customer_Id)
  where current_date between sh.Date_From and sh.Date_To
        and c.Account_No = '111'

2. Удалить или отключить?
Код отключения услуги
Код: (sql) [Выделить]
execute procedure Onoff_Service_By_Id(
  :Customer_Id -- Ид абонента
 , :Serv_Id    -- Ид услуги
 , :Actservice -- Какой услугой отключаем
 , :Date       -- Дата отключения, должна быть больше даты подключения
 , 1           -- признак того что отключаем
 , :Notice     -- примечание
 , :Units      -- 1 или сумма стоимсоть отключения
);

3. Добавление а не включение услуги
Код: (sql) [Выделить]
execute procedure Add_Subscr_Service(
  :Customer_Id -- Ид абонента
 , :Serv_Id    -- Ид услуги
 , :Actservice -- Какой услугой подключаем
 , :Date       -- Дата подключения
 , :Notice     -- примечание
 , :Units      -- 1 или сумма стоимсоть отключения
 , null        -- договор или null если не нужен
 , null        -- дата договора или null если не нужен
);

Оплата рассчитывается для каждого типа услуг по разному.
если периодическая услуга рассчитывается пропорционально подключенным дням, т.е. за фактически подключенные дни, то так и абонплата будет только за эти дни.

если алгоритм начисления 0 или полная абонплата если абонент подключен более Х дней, то будет 0 или полная абонплата.

Что мешает проверить начисления на тестовом абоненте?
создайте абонента. "поиграйте" с услугами. удалите абонента.
« Последнее редактирование: Марта 05, 2015, 08:52:16 от Шумко Дмитрий »

inettel

  • Newbie
  • *
  • Сообщений: 3
Re: SQL запрос смена тарифа
« Ответ #2 : Марта 06, 2015, 09:42:24 »
Спасибо, буду пробовать.