Обработка смены параметра договора

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

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

Установка параметра "Индекс" при смене адреса

При изменении параметра типа "Адрес", в договоре дополнительно устанавливается параметр типа "Список" с индексом клиента. Скрипт позволяет разделить договора по индексам и использовать их как пачки в модуле бухгалтерии (см. "Первичная подготовка для курьерской службы" в документации). Т.е. выводить списки счетов/счетов-фактур разделенные по индексу.

Коды параметров "Адрес" и "Индекс" заданы константами BATCH_PARAM_ID и ADDRESS_PARAM_ID, скрипт реагирует на событие "Изменен параметр договора".

import java.sql.*;
import bitel.billing.server.util.*;
import bitel.billing.server.contract.bean.*;
 
BATCH_PARAM_ID = 22;
ADDRESS_PARAM_ID = 21;
 
cid = event.getContractID();
if( event.getParamId() != ADDRESS_PARAM_ID )
{
   return;
}
 
query = 
  "SELECT house.box_index FROM contract_parameter_type_2 AS cp2 " +
   "INNER JOIN address_house AS house ON cp2.hid=house.id " +
   "WHERE cp2.cid=? AND cp2.pid=?";
ps = con.prepareStatement( query );
 
ps.setInt( 1, cid );
ps.setInt( 2, ADDRESS_PARAM_ID );
 
rs = ps.executeQuery();
if( rs.next() )
{
  index = rs.getString( 1 );
  paramValue = 0;
 
  query = "SELECT id FROM contract_parameter_type_7_values WHERE pid=? AND title=?";
  ps = con.prepareStatement( query );
  ps.setInt( 1, BATCH_PARAM_ID );
  ps.setString( 2, index );
 
  rs = ps.executeQuery();
  if( rs.next() )
  {
     paramValue = rs.getInt( 1 );
  }
  else
  {
     query = "INSERT INTO contract_parameter_type_7_values (pid, title) VALUES (?, ?)";
     ps = con.prepareStatement( query );
     ps.setInt( 1, BATCH_PARAM_ID );
     ps.setString( 2, index );
     ps.executeUpdate();
 
     paramValue = Utils.lastInsertId( ps );		
  }
 
new ContractParamUtils( con ).setListParam( cid, BATCH_PARAM_ID, paramValue );
}
Личные инструменты