Активация доверительного платежа в привязанном к процессу договоре биллинга

Материал из BiTel WiKi

Перейти к: навигация, поиск

При изменении статуса процесса на 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( "К процессу нет привязанных договоров биллинга" );
                        }
		}
 
    }
Личные инструменты