Активация доверительного платежа в привязанном к процессу договоре биллинга
Материал из BiTel WiKi
Версия от 21:01, 6 августа 2014; Dog (Обсуждение | вклад)
При изменении статуса процесса на 3 с типом 22 в привязанных к нему договорах из биллинга с ID=1 будет активирован доверительный платеж. если привязанных договоров нет, то ругаемся.
package ru.bgcrm.dyn.app; import java.math.BigDecimal; import java.sql.Connection; import java.util.List; import ru.bgcrm.dao.process.ProcessLinkDAO; import ru.bgcrm.event.Event; import ru.bgcrm.event.listener.DynamicEventListener; import ru.bgcrm.event.process.ProcessChangingEvent; import ru.bgcrm.model.BGException; import ru.bgcrm.model.CommonObjectLink; import ru.bgcrm.model.user.User; import ru.bgcrm.plugin.bgbilling.proto.dao.ContractDAO; import ru.bgcrm.util.sql.ConnectionSet; public class BillAplication extends DynamicEventListener { private static final int STATUS_ID = 3; private static final int PROCESS_TYPE_ID = 22; private static final String BILLING_ID = "1"; private static final BigDecimal LIMIT_SUM = new BigDecimal ("-1000"); private static final int LIMIT_DAYS = 10; @Override public void notify( Event e, ConnectionSet connectionSet ) throws BGException { if ((e instanceof ProcessChangingEvent)) { ProcessChangingEvent pce = (ProcessChangingEvent)e; if ( pce.isStatus() & pce.getStatusChange().getStatusId() == STATUS_ID & pce.getProcess().getTypeId() == PROCESS_TYPE_ID) { dovplat(pce, connectionSet); } } } private void dovplat (ProcessChangingEvent pce, ConnectionSet connectionSet) throws BGException { ru.bgcrm.model.process.Process process = pce.getProcess(); Connection con = connectionSet.getConnection(); ProcessLinkDAO processLinkDao = new ProcessLinkDAO( con ); List<CommonObjectLink> pld = processLinkDao.getObjectLinksWithType(process.getId(), "contract%"); if (pld.size() != 0) { for (CommonObjectLink commonObjectLink : pld) { int contractId = commonObjectLink.getLinkedObjectId(); User user = pce.getUser(); ContractDAO contractDao = new ContractDAO(user, BILLING_ID); contractDao.updateLimit(contractId, LIMIT_SUM, LIMIT_DAYS, "Доверительный платеж активирован через CRM. Заявка ID: " + process.getId() ); } }else{ pce.getForm().getResponse().addEvent( new ru.bgcrm.event.client.ProcessChangedEvent( process.getId() ) ); throw new BGMessageException( "К процессу нет привязанных договоров биллинга" ); } } }