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