forum.bitel.ru
http://forum.bitel.ru/

Тарифные опции. расход и наработка.
http://forum.bitel.ru/viewtopic.php?f=22&t=3915
Страница 1 из 1

Автор:  MiB [ 19 апр 2010, 13:28 ]
Заголовок сообщения:  Тарифные опции. расход и наработка.

реализуем "Турбо" через тарифные опции, все работает хорошо - но бухгалтерия хочет чтобы платеж за активацию данной опции заносился не в расход, а в наработку.

понимаю что это можно реализовать через событие "занесение расхода" с примерной логикой:
-удалить расход
-добавить разовую услугу с количеством равным сумме расхода (при этом в тарифе указать стоимость за единицу 1 руб.)

в принципе при личном общении с Шамилем он и подтвердил что так будет наиболее просто это реализовать.

проблема в том, что скрипты на BGBS у нас никто не пишет.
просьба помочь в написании данного функционала.

Автор:  Cromeshnic [ 19 апр 2010, 13:49 ]
Заголовок сообщения:  Re: Тарифные опции. расход и наработка.

Есть функционал начисления абонплат в зависимости от тарифных опций. Правда из документации его, похоже, убрали пока.

Автор:  MiB [ 19 апр 2010, 21:30 ]
Заголовок сообщения:  Re: Тарифные опции. расход и наработка.

Cromeshnic писал(а):
Есть функционал начисления абонплат в зависимости от тарифных опций. Правда из документации его, похоже, убрали пока.

разработчики, гдето можно почитать?

кстати пукт 1.19.2 (http://bgbilling.ru/v5.0/doc/ch01s19s02.html) в оглавлении документации не присутствует :(

Автор:  stark [ 20 апр 2010, 13:53 ]
Заголовок сообщения:  Re: Тарифные опции. расход и наработка.

исправили. По ошибке удалили

Автор:  Администратор [ 20 апр 2010, 15:39 ]
Заголовок сообщения:  Re: Тарифные опции. расход и наработка.

http://wiki.bgbilling.ru/index.php/%D0% ... 0%BB%D1%8F

Автор:  MiB [ 21 апр 2010, 10:47 ]
Заголовок сообщения:  Re: Тарифные опции. расход и наработка.

спасибо, сейчас попробуем адаптировать под нашу 4.6

Автор:  MiB [ 21 апр 2010, 16:21 ]
Заголовок сообщения:  Re: Тарифные опции. расход и наработка.

переписали под версию 4.6

Код:
import java.sql.*;
import java.util.*;
import java.math.*;
import bitel.billing.common.*;
import bitel.billing.server.tariff.*;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.script.bean.event.*;
import bitel.billing.server.rscm.bean.*;
import bitel.billing.common.CommonUtils;

CHARGE_EVENT_ID = 2; // Тип события - Расход
CHARGE_TYPE_ID = 3; // Тип расхода - Активация опции "Турбо"
RSCM_MID = 16; // Код модуля RSCM
RSCM_SERVICE_ID = 49; // Код услуги в модуле RSCM

//print ("Got event with type: " + event.getTypeID());

// Фильтрация по типу события Расход (ChargeEvent)
if (event.getTypeID() != CHARGE_EVENT_ID) {
   print("Event type isn't ChargeEvent. Skipping.");
   return;
}

cid = event.getContractID();
charge = event.getCharge();

// Фильтрация по типу расхода (Активация опции "Турбо")
if (charge.getChargeTypeID() != CHARGE_TYPE_ID) {
   print ("Charge type isn't 'Turbo'. Skipping.");
   return;
}

print ("Обрабатываем расход (Активация опции 'Турбо') на сумму: " + charge.getSumma());

bu = new BalanceUtils(con);
cm = new ChargeManager(con);
csm = new bitel.billing.server.rscm.bean.ContractServiceManager(con, RSCM_MID);
contract = new ContractManager(con);

// Преобразуем дату платежа к типу java.util.Calendar
date = TimeUtils.convertDateToCalendar(charge.getChargeDate());
// Создаем TariffTreeSet для обсчета сессий
tts = contract.getRealtimeTariffTreeSet(cid, date, "rscm", RSCM_MID, true);

tree = tts.getTree(date);
if (tree == null) {
   print("RSCM tariff not found");
}

// Создаем тарифный запрос
req = new TariffRequest();
req.setRequestParam("sid", RSCM_SERVICE_ID);
req.setRequestParam("time", date);

tree.processRequest(req);

if (!req.wasAccepted()) {
   print ("Request wasn't accepted");
   return;
}

cost = req.getResponseParam("cost");
divisor = req.getResponseParam( "divisor" );
if(cost == null || divisor == null  || divisor <= 0) {
   print ("Got incorrect cost: " + cost + " or divisor: " + divisor);
   return;
}

// Создаем наработку по услуге
cs = new bitel.billing.server.rscm.bean.ContractService();
cs.setContractId(cid);
cs.setDate(date);
cs.setServiceId(RSCM_SERVICE_ID);
cs.setAmount(new CommonUtils().parseLongString(charge.getSumma().setScale(0, BigDecimal.ROUND_HALF_UP).toPlainString()));
cs.setComment("Активация кнопки 'Турбо'");

// Заносим наработку в договор
csm.updateContractService(cs);

// Заключительная часть
print ("Обнуляем расход с ID=" + charge.getID() + " и обновляем баланс договора");
charge.setSumma(BigDecimal.ZERO);
cm.updateCharge(charge);
bu.updateBalance(charge.getChargeDate(), cid);


если проверяем в биллинге(делаем платеж редактируемым и заносим на него расход) то все отрабатывает нормально:
Код:
GENERATE_TIME: 21.04.10 12:29:55
EXECUTION_STOP_TIME: 21.04.10 12:29:56
PROCESS_TIME: 168

OUT:
Обрабатываем расход (Активация опции 'Турбо') на сумму: 50.0
Обнуляем расход с ID=50 и обновляем баланс договора


ERROR:


EXCEPTIONS:


WARNINGS:


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

можете посмотреть в каком месте засада?

Автор:  MiB [ 22 апр 2010, 11:19 ]
Заголовок сообщения:  Re: Тарифные опции. расход и наработка.

up

Автор:  Администратор [ 22 апр 2010, 17:45 ]
Заголовок сообщения:  Re: Тарифные опции. расход и наработка.

Выложил обновление для 4.6. Там не генерировалось событие "Занесение расхода" при активации опции, сначала выложил обновление только для 5.0.

Автор:  MiB [ 22 апр 2010, 18:40 ]
Заголовок сообщения:  Re: Тарифные опции. расход и наработка.

Администратор писал(а):
Выложил обновление для 4.6. Там не генерировалось событие "Занесение расхода" при активации опции, сначала выложил обновление только для 5.0.

ок. обновлюсь завтра с утра и проверю.
спасибо.

Автор:  MiB [ 23 апр 2010, 14:48 ]
Заголовок сообщения:  Re: Тарифные опции. расход и наработка.

в конфигурации RSCM пропсиано:
Код:
#начисление денег сразу по добавлению услуги в договор
hot.calc=1


скриптом, услуга добавляется, а в наработке ничего нет.
после того как вручную запускается переобсчет RSCM все становится нормально.

событие перобсчета нам необходимо самостоятельно запускать из скрипта(если это возможно, напишите кусочек кода),
или оно все-же должно генерироваться автоматически?

IMHO второе идеологически более правильно


P.S. если добавлять услугу из клиента биллинга вручную то все необходимые начисления происходят.

Автор:  MiB [ 28 апр 2010, 12:36 ]
Заголовок сообщения:  Re: Тарифные опции. расход и наработка.

up

Автор:  MiB [ 29 апр 2010, 14:45 ]
Заголовок сообщения:  Re: Тарифные опции. расход и наработка.

up 2.

Автор:  Администратор [ 07 май 2010, 11:15 ]
Заголовок сообщения:  Re: Тарифные опции. расход и наработка.

Добавил пример кода для RSCM модуля.

http://wiki.bgbilling.ru/index.php/%D0% ... 0%B8%D0%B9

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/