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

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

Автор:  iseed [ 23 янв 2017, 10:13 ]
Заголовок сообщения:  Событие изменения статуса при изменении баланса

Доброго дня.
Имею биллинг версии 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 (Активен).
Думаю что мне нужно вызывать какое то событие, а вот какое найти не могу.
Может кто поделиться опытом?

Автор:  Phricker [ 23 янв 2017, 12:49 ]
Заголовок сообщения:  Re: Событие изменения статуса при изменении баланса

Код:
EventProcessor.getInstance().publish(new PaymentEvent(getCurrentUserId(), payment));
      EventProcessor.getInstance().publish(new ContractBalanceChangedEvent(cid, payment.getSumma()));

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

Автор:  iseed [ 26 янв 2017, 08:34 ]
Заголовок сообщения:  Re: Событие изменения статуса при изменении баланса

Большое спасибо.
Проверил - при оплате, событие разблокирует статус.
http://joxi.ru/KAxVn0BFM4vWqm

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