BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 27 апр 2024, 17:22

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




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
СообщениеДобавлено: 23 янв 2017, 10:13 
Не в сети

Зарегистрирован: 01 мар 2013, 09:18
Сообщения: 46
Карма: 5
Доброго дня.
Имею биллинг версии 6.1.

1)
Клиент: вер. 6.1.898 / 18.07.2016 01:20:39
os: Linux; java: OpenJDK 64-Bit Server VM, v.1.7.0_121
Сервер: вер. 6.1.1177 / 19.08.2016 11:58:42
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.7.0_80
npay: вер. 6.1.201 / 18.07.2016 01:20:51


2)
Настроил модуль npay для того, чтобы он изменял статус у людей при переходе на отрицательный статус.
#Управление статусами
debet.npay.status.manage=1
#Код активного статуса договора
debet.npay.active.status=0
#Код заблокированного статуса договора
debet.npay.locked.status=6
#Коды групп, для которых применяется режим; через запятую
debet.npay.status.manage.groups=20
#сумма на балансе, для которой возможна разблокировка
debet.npay.unlock.balance.limit=0


3)
Реализовал экшен для внесения добавления платежа:
public class ActionAddTransaction extends ActionBase {
public ActionAddTransaction() {
}

public void doAction() throws SQLException, BGException {
Element respEl = this.createElement(this.rootNode, "response");

try {
int exception = this.getIntParameter("contract_id", -1);
int el1 = this.getIntParameter("payment_type_id", -1);
Date payment_date = this.getDateParameter("payment_date", (Date)null);
BigDecimal payment_sum = this.getBigDecimalParameter("payment_sum", (BigDecimal)null);
String payment_comment = this.getParameter("payment_comment", (String)null);
if(el1 < 0) {
throw new Exception("payment_type_id < 0");
}

if(exception < 0) {
throw new Exception("contract_id < 0");
}

if(payment_sum == null) {
throw new Exception("payment_sum == null");
}

if(payment_date == null) {
Calendar newId = Calendar.getInstance();
payment_date = newId.getTime();
}

boolean newId1 = true;
int newId2;
if(payment_sum.signum() != -1) {
PaymentManager bu = new PaymentManager(this.con);
Payment transactionXml = new Payment();
transactionXml.setId(-1);
transactionXml.setContractId(exception);
transactionXml.setTypeId(el1);
transactionXml.setDate(payment_date);
transactionXml.setSum(payment_sum);
if(payment_comment != null) {
transactionXml.setComment(payment_comment);
}

bu.updatePayment(transactionXml);
newId2 = transactionXml.getId();
} else {
ChargeManager bu1 = new ChargeManager(this.con);
Charge transactionXml1 = new Charge();
transactionXml1.setId(-1);
transactionXml1.setContractId(exception);
transactionXml1.setTypeId(el1);
transactionXml1.setDate(payment_date);
transactionXml1.setSum(payment_sum.negate());
if(payment_comment != null) {
transactionXml1.setComment(payment_comment);
}

bu1.updateCharge(transactionXml1);
newId2 = transactionXml1.getId();
}

BalanceUtils bu2 = new BalanceUtils(this.con);
bu2.updateBalance(payment_date, exception);
Element transactionXml2 = this.createElement(this.rootNode, "transaction");
transactionXml2.setAttribute("id", String.valueOf(newId2));
this.rootNode.appendChild(transactionXml2);
respEl.setAttribute("success", "1");
} catch (Exception var10) {
respEl.setAttribute("success", "0");
Element el = this.createElement(this.rootNode, "error");
el.setAttribute("message", var10.getMessage());
this.rootNode.appendChild(el);
}

this.rootNode.appendChild(respEl);
}
}


4)
Опытным путем было выявлено что при внесении платежа на договора с статусом 6 (Заблокированные)
в случае если платеж перекрывает текущую задолженность статус не изменяется на 0 (Активен).
Думаю что мне нужно вызывать какое то событие, а вот какое найти не могу.
Может кто поделиться опытом?


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

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Код:
EventProcessor.getInstance().publish(new PaymentEvent(getCurrentUserId(), payment));
      EventProcessor.getInstance().publish(new ContractBalanceChangedEvent(cid, payment.getSumma()));

Это для платежа.
Для расхода по аналогии

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 янв 2017, 08:34 
Не в сети

Зарегистрирован: 01 мар 2013, 09:18
Сообщения: 46
Карма: 5
Большое спасибо.
Проверил - при оплате, событие разблокирует статус.
http://joxi.ru/KAxVn0BFM4vWqm


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

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


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

Сейчас этот форум просматривают: Bing [Bot] и гости: 1


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

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