BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 12 май 2024, 01:06

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
СообщениеДобавлено: 07 июн 2011, 11:22 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Фичреквест:
- Событие на выдачу списка доступных опций (тыц)
- Событие "перед активацией тарифной опции" с возможностью запретить активацию и возвратить текст ошибки
- Гибкое редактирование опций договора в клиенте (тыц)

Первое и второе мне сейчас понадобилось для следующего:
Подключать опции и менять тарифы через лк у нас могут только те клиенты, у которых заключено доп соглашение к договору, описывающее эти процедуры. Сейчас подписавшим доп. соглашение в биллинге проставляется группа тарифов и группа "Турбокнопка" на договоре, которая разрешает активировать опцию.
Проблема в том, что клиент без доп соглашения заходит в раздел "Тарифные опции" и видит пустой экран. С точки зрения маркетинга же правильнее было бы показывать ему эти опции неактивными, либо активными, но при попытке подключить их клиенту бы выдавалось сообщение о необходимости заключения доп соглашения. Когда опций нет совсем, он как бы и не знает о их существовании.
Если я сам смогу рулить доступом к опциям на уровне скриптов, то всё это решаемо.
Плюс, можно будет давать доступ к опциям в зависимости от времени дня, баланса, наработки по определённым услугам или фазы луны :)


Может мне написать патч? :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 июн 2011, 11:25 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Ещё пример применения: опции с квотой по трафику/времени/наработке. Опция доступна, пока месячная квота не исчерпана.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 июн 2011, 11:27 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
На самом деле неплохо было бы иметь доступ к опциям(активации, деактивации) со скриптов.

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 июн 2011, 18:12 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
+1 к просьбе ТС


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 июн 2011, 23:35 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 08 мар 2007, 20:44
Сообщения: 1570
Откуда: Челябинск
Карма: 18
поддерживаю

_________________
Интернет и телефония оптом со склада, или в розницу


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 июн 2011, 03:10 
Не в сети
Клиент

Зарегистрирован: 21 сен 2009, 13:01
Сообщения: 835
Откуда: Москва
Карма: 15
+1


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 июн 2011, 18:41 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Цитата:
- Гибкое редактирование опций договора в клиенте

Речь об активации на любой период или же редактирование периода активированной опции?
Первое легко сделать, для второго нужно отслеживать обновления кэшей в других серверах.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 июн 2011, 07:23 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Насколько я понимаю, для второго достаточно выстрелить TariffOptionChanged, чтобы обновить кэш опций сессий в радуисе:
Код:
BillingEventBus.publish(new TariffOptionChanged(cid));


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 июн 2011, 13:51 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Как-то так, например:

Добавляем два события для скриптов:
- GetAvailableContractTariffOptions extends LocalEvent
- TariffOptionActivateEvent extends LocalEvent

Код:
package ru.bitel.bgbilling.kernel.tariff.option.server.bean.event;

import java.util.Date;
import java.util.List;

import ru.bitel.bgbilling.kernel.tariff.option.common.bean.ContractTariffOption;
import ru.bitel.bgbilling.kernel.tariff.option.common.bean.TariffOption;

import bitel.billing.server.contract.bean.Contract;
import ru.bitel.bgbilling.kernel.event.LocalEvent;

public class GetAvailableContractTariffOptions extends LocalEvent {

   private static final long serialVersionUID = -8540903770573008054L;
   private Contract contract;
   private Date date;
   private List<TariffOption> availableTariffOptons;
   private List<ContractTariffOption> currentContractOptions;
   
   public GetAvailableContractTariffOptions(Contract contract, Date date,
         List<TariffOption> availableTariffOptons,
         List<ContractTariffOption> currentContractOptions) {
       super(0,contract.getId(),contract.getSuperId(),0);
      this.contract = contract;
      this.date = date;
      this.availableTariffOptons = availableTariffOptons;
      this.currentContractOptions = currentContractOptions;
   }

   public Contract getContract() {
      return contract;
   }

   public Date getDate() {
      return date;
   }

   public List<TariffOption> getAvailableTariffOptons() {
      return availableTariffOptons;
   }

   public void setAvailableTariffOptons(List<TariffOption> availableTariffOptons) {
      this.availableTariffOptons = availableTariffOptons;
   }

   public List<ContractTariffOption> getCurrentContractOptions() {
      return currentContractOptions;
   }

}


Код:
package ru.bitel.bgbilling.kernel.tariff.option.server.bean.event;

import ru.bitel.bgbilling.kernel.tariff.option.common.bean.ContractTariffOption;
import bitel.billing.server.contract.bean.Charge;

import ru.bitel.bgbilling.kernel.event.LocalEvent;
public class TariffOptionActivateEvent extends LocalEvent {

   private static final long serialVersionUID = -1619381846416198092L;
   
   private String error = null;
   private ContractTariffOption contractOption;
   private Charge charge;
   
   public TariffOptionActivateEvent(int userId, int cid,
         ContractTariffOption contractOption, Charge charge) {
      super(0, cid, -1, userId);
      this.contractOption = contractOption;
      this.charge = charge;
   }

   public String getError() {
      return error;
   }

   public void setError(String error) {
      this.error = error;
   }

   public ContractTariffOption getContractOption() {
      return contractOption;
   }

   public void setContractOption(ContractTariffOption contractOption) {
      this.contractOption = contractOption;
   }

   public Charge getCharge() {
      return charge;
   }

   public void setCharge(Charge charge) {
      this.charge = charge;
   }

}



Вставляем вызовы этих событий в классы ContractTariffOptionActivateManager и TariffOptionManager:

в ContractTariffOptionActivateManager, перед строкой 240 (BGBillingServer v 5.1 build 665 from 14.06.2011 11:39:55):

Код:
           TariffOptionActivateEvent event = new TariffOptionActivateEvent(userId, cid, contractOption, charge);
           ru.bitel.bgbilling.kernel.event.EventProcessor.getInstance().request(event);
           if(event.getError()!=null){
              throw new BGMessageException(event.getError());
           }
           charge = event.getCharge();
           contractOption = event.getContractOption();
           if(null==contractOption){
              throw new BGMessageException();
           }


В TariffOptionManager перед строкой 147 (BGBillingServer v 5.1 build 665 from 14.06.2011 11:39:55):

Код:
           GetAvailableContractTariffOptions event = new GetAvailableContractTariffOptions(contract, date, result, currentContractOptions);
           ru.bitel.bgbilling.kernel.event.EventProcessor.getInstance().request(event);
           result = event.getAvailableTariffOptons();
           if(null==result){
              result = new ArrayList<TariffOption>();
           }


Потестировал эти события на тестовом сервере с подмененными классами - всё работает.
Итого имеем:
- Возможность модифицировать список доступных опций для договора (как в веб так и в клиенте, правда нельзя определить, откуда именно)
- Возможность запретить активацию опции на договоре с указанием причины (возможна разная логика для web и различных пользователей клиента биллинга)
- Возможность модифицировать опцию договора перед активацией (менять режим активации, даты...)
- Возможность задавать/изменять расход при активации опции


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 июн 2011, 13:52 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Краудсорсинг, ага :roll:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 июн 2011, 14:35 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
В 5.2 - нет, там уже нет BillingEventBus. Там через mq/EventProcessor.
И по данным события не просто сбрасывает кэш, а обновляет его.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 июн 2011, 14:38 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Это уже сделали в 5.2 (кроме setCharge/getCharge, тоже надо бы добавить) :)
Осталось только редактирование активированной опции и дополнительные режимы активации.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 июн 2011, 17:17 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Круто, а в 5.1 можно?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 июн 2011, 17:37 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Cromeshnic писал(а):
Круто, а в 5.1 можно?

:-P

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 июн 2011, 20:00 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
К сожалению, нет :(
Т.к. код 5.2 уже сильно отличается от 5.1 - недавно делали платную доработку в модуле карточек - замучались патчить на 5.1.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.067s | 47 Queries | GZIP : On ]