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

Изменить скрипт переначисления абонентской платы
http://forum.bitel.ru/viewtopic.php?f=19&t=5732
Страница 1 из 1

Автор:  crez [ 21 июл 2011, 13:57 ]
Заголовок сообщения:  Изменить скрипт переначисления абонентской платы

Уважаемые скриптеры, помогите, пожалуйста, поправить скрипт:

Есть скрипт, взятый из http://wiki.bgbilling.ru/index.php/Запуск_переначисления_в_модуле_NPay
Скрипт привязан к некоторым событиям (например, Изменение статуса договора)
Код:
import bitel.billing.server.task.bean.*;
import bitel.billing.server.npay.*;
import java.util.*;
 
NPAY_MID = <число с кодом экземпляра модуля>;
// можно указать через запятую конкретные коды договоров, пустая строка - все договора
cids = "";
// месяц за который идёт перерасчёт
date = new GregorianCalendar();
// EMail для отправки отчёта о завершении начисления
email = null;
// набор услуг, 0- все услуги
serviceSet = 0;
 
new RunTaskDataManager( con ).addTask( new Recalculator( NPAY_MID, date, email, serviceSet, cids ) );

Этот скрипт переначисляет абонентскую плату всем абонентам, а это является тяжелой задачей.
Как его поправить, чтобы он переначислял её только для текущего абонента?

Я так понимаю, что в строке:
Код:
// можно указать через запятую конкретные коды договоров, пустая строка - все договора
cids = "";

в кавычках должно стоять выражение, берущее cid текущего абонента из БД?

Автор:  snark [ 21 июл 2011, 14:06 ]
Заголовок сообщения:  Re: Изменить скрипт переначисления абонентской платы

Там же русским по белому написано:
Цитата:
можно указать через запятую конкретные коды договоров

Т.е. нечто в духе:
Код:
cids = "1, 4, 28, 79, 82";

Ну или как нить так:
Код:
String cidList = <нечто возвращающее СТРОКУ cid-ов через запятую>;
cids = cidList;

Автор:  crez [ 01 ноя 2011, 13:20 ]
Заголовок сообщения:  Re: Изменить скрипт переначисления абонентской платы

Изменил на:
Код:
import bitel.billing.server.task.bean.*;
import bitel.billing.server.npay.*;
import java.util.*;
 
NPAY_MID = 2;
// можно указать через запятую конкретные коды договоров, пустая строка - все договора

//cids = "";
cid = event.getContractID();
// месяц за который идёт перерасчёт
date = new GregorianCalendar();
// EMail для отправки отчёта о завершении начисления
email = null;
// набор услуг, 0- все услуги
serviceSet = 0;
 
new RunTaskDataManager( con ).addTask( new Recalculator( NPAY_MID, date, email, serviceSet, ""+cid ) );



Начисление проходит, но в логе получаю:
Код:
WARNINGS:
Function [id:16; title:Переначисление абонентской платы]: using deprecated method [public int bitel.billing.server.script.bean.event.Event.getContractID()]

Как побороть ошибку?

ADD:
Сам нашел :)
правильно
Код:
cid = event.getContractId();

d вместо D
ADD:
skyb, спасибо! Сам уже нашел :)

Автор:  skyb [ 01 ноя 2011, 13:25 ]
Заголовок сообщения:  Re: Изменить скрипт переначисления абонентской платы

crez писал(а):
Как побороть ошибку?

Код:
cid = event.getContractId();

И будет вам счастье

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