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