Обработка смены параметра договора
Материал из 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 ); }