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

как узнать установлена ли абонплата?
http://forum.bitel.ru/viewtopic.php?f=19&t=4513
Страница 1 из 1

Автор:  skyb [ 03 сен 2010, 11:08 ]
Заголовок сообщения:  как узнать установлена ли абонплата?

как можно узнать установлена ли абонплата на договоре? не модуль а услуга.
Есть задумка сделать скидку при выставлении определенных слов в текстовом параметре договора. То что в вики неподойдет немного.

Автор:  snark [ 03 сен 2010, 15:44 ]
Заголовок сообщения:  Re: как узнать установлена ли абонплата?

через API ? SQL ?

Автор:  skyb [ 03 сен 2010, 15:50 ]
Заголовок сообщения:  Re: как узнать установлена ли абонплата?

да я уже почти скрипт закончил :) Через API

Автор:  skyb [ 13 сен 2010, 06:13 ]
Заголовок сообщения:  Re: как узнать установлена ли абонплата?

Код:
import bitel.billing.server.util.*;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.contract.bean.BalanceUtils;
import bitel.billing.server.contract.bean.ContractParameterManager;
import bitel.billing.server.contract.bean.ContractService;
import bitel.billing.server.contract.bean.ContractServiceManager;
import bitel.billing.server.npay.bean.ServiceObject;
import bitel.billing.server.npay.bean.ServiceObjectManager;
import bitel.billing.server.npay.bean.*;
import bitel.billing.server.script.bean.event.*;

int DISCOUNT_ID = 50;
int STUDENTS_ID = 27;
int VIP_ID = 28;
int MODULE_NPAY = 4;
int FIZ_ID = 4;
int pid = 52;

date = new GregorianCalendar();
yesterday = date.clone();
yesterday.add(Calendar.DAY_OF_YEAR, -1);

int id = event.getContractId ( ); // id договора

cpu = new ContractParamUtils( con );//для групп

cpm = new ContractParameterManager( con ); // дата закрытия
dateClosed = cpm.getDateParam( id , pid); // дата закрытия
//print(dateClosed.getTime());

serviceObjectManager = new ServiceObjectManager(con, MODULE_NPAY);
customServiceList = serviceObjectManager.getServiceObjectList(id, -1, 0, 0);
for (service : customServiceList)
{
sid = service.getServiceId();
StartDate = service.getDate1();
StopDate = service.getDate2();

paramId = event.getParamId();
value = event.getValue();
if (value != null && value.matches("VIP") && paramId == DISCOUNT_ID)
{

   if (sid == null)
   {
      return;
   }
   if (sid == FIZ_ID && StopDate == null)
   {
      service.setDate2 ( yesterday.getTime() );
      serviceObjectManager.updateServiceObject( service );         
            
   
   if (dateClosed != null)
      {
      service.setId( -1 );
      service.setContractId( id );
      service.setServiceId ( VIP_ID );
      service.setObjectId( 0 );
        service.setDate1( date.getTime() );
        service.setDate2( dateClosed.getTime() );
        service.setComment( "Подключение услуги VIP клиентам скриптом" );
        serviceObjectManager.updateServiceObject( service );
      }
   if ( dateClosed == null )
      {
      service.setId( -1 );
      service.setContractId( id );
      service.setServiceId ( VIP_ID );
      service.setObjectId( 0 );
        service.setDate1( date.getTime() );
        service.setDate2( null );
        service.setComment( "Подключение услуги VIP клиентам скриптом" );
        serviceObjectManager.updateServiceObject( service );
      }

}
}
}

не могу победить чтоб
1-открывалась предыдущая абонплата(та которая была до той который выставлена была скриптом)
2-чтоб дата закрытия услуги выставлалась по выставлению параметра договора дата. Тоесть сейчас так и есть, но на момент выставления уже должна быть дата

Автор:  skyb [ 20 сен 2010, 10:09 ]
Заголовок сообщения:  Re: как узнать установлена ли абонплата?

Написал скрипт, если нужно могу выложить :)

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