forum.bitel.ru http://forum.bitel.ru/ |
|
Коммент для теоефона в Параметрах договора http://forum.bitel.ru/viewtopic.php?f=22&t=13460 |
Страница 1 из 1 |
Автор: | mzhar [ 14 окт 2019, 16:50 ] | |||
Заголовок сообщения: | Коммент для теоефона в Параметрах договора | |||
Добрый день! Помогите пжл, как добавить массово в параметр Телефон, значение Коммента, чтоб было прописано "Основной" для первого номера телефона? сделал sql запрос, но он меняет коммент в редакторе и приходится нажимать ОК, приведите пример пжл
|
Автор: | Phricker [ 14 окт 2019, 17:37 ] |
Заголовок сообщения: | Re: Коммент для теоефона в Параметрах договора |
Код: import ru.bitel.bgbilling.kernel.container.managed.ServerContext;
import ru.bitel.bgbilling.kernel.contract.api.common.service.ContractService; import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase; import ru.bitel.bgbilling.server.util.Setup; import ru.bitel.common.sql.ConnectionSet; import ru.bitel.oss.kernel.entity.common.bean.EntityAttrPhone; import java.sql.Connection; import java.util.List; public class TestGlobalScript extends GlobalScriptBase { @Override public void execute(Setup setup, ConnectionSet connectionSet) throws Exception { ServerContext serverContext = ServerContext.get(); Connection con = connectionSet.getConnection(); ContractService contractService = serverContext.getService(ContractService.class, 0); EntityAttrPhone entityAttrPhone = (EntityAttrPhone) contractService.contractParameterGet(<CONTRACT_ID>, <PHONE_PARAM_ID>); List<EntityAttrPhone.PhoneContact> contactList = entityAttrPhone.getContactList(); if (null != contactList && !contactList.isEmpty()) { EntityAttrPhone.PhoneContact phoneContact = contactList.get(0); phoneContact.setComment("Основной"); contractService.contractParameterUpdate(<CONTRACT_ID>, entityAttrPhone); } } } |
Автор: | mzhar [ 14 окт 2019, 17:45 ] |
Заголовок сообщения: | Re: Коммент для теоефона в Параметрах договора |
большое спасибо |
Автор: | mzhar [ 28 окт 2019, 17:34 ] |
Заголовок сообщения: | Re: Коммент для теоефона в Параметрах договора |
Код: import ru.bitel.bgbilling.kernel.container.managed.ServerContext; import ru.bitel.bgbilling.kernel.contract.api.common.service.ContractService; import ru.bitel.bgbilling.kernel.event.Event; import ru.bitel.bgbilling.kernel.event.events.ContractParamBeforeChangeEvent; import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase; import ru.bitel.bgbilling.server.util.Setup; import ru.bitel.common.sql.ConnectionSet; import ru.bitel.oss.kernel.entity.common.bean.EntityAttrPhone; import java.sql.Connection; import java.util.List; public class UpdateCommentPhone1 extends EventScriptBase { @Override public void onEvent(Event event, Setup setup, ConnectionSet set) throws Exception { Connection con = set.getConnection(); ContractParamBeforeChangeEvent e = (ContractParamBeforeChangeEvent) event; int pid = e.getParamId(); int cid = e.getContractId(); ServerContext serverContext = ServerContext.get(); ContractService contractService = serverContext.getService(ContractService.class, 0); EntityAttrPhone entityAttrPhone = (EntityAttrPhone) contractService.contractParameterGet(cid, pid); List<EntityAttrPhone.PhoneContact> contactList = entityAttrPhone.getContactList(); if (pid == 3){ contractService.contractParameterUpdate(cid, entityAttrPhone); if (e.getEntityAttr() == null){ EntityAttrPhone.PhoneContact phoneContact = contactList.get(0); phoneContact.setComment("Основной"); } } } } теперь пытаюсь добавить коммент через событие, чтоб после нажатия на Ок добавлялся автоматом, но что то не получается (, подскажите пжл куда копать? и правильный ли такой код? у меня после нажатия на Ок все зависает |
Автор: | barguzin2 [ 29 окт 2019, 09:32 ] |
Заголовок сообщения: | Re: Коммент для теоефона в Параметрах договора |
1) событие срабатывает на все параметры, поэтому всю логику нужно делать внутри условия if (pid==3), иначе приведение типа на других типах параметров не прокатит и будет ошибка. 2) далее берём значение параметра из события(!) и ставим первому телефону коммент "основной". всё, измененный параметр в базу уже запишет сам биллинг. примерно, так: Код: if( pid == 3){
PhoneParamValue phone = (PhoneParamValue) e.getValue(); if( phone != null ){ phone.getPhoneItem(0).setComment("основной"); } } |
Автор: | mzhar [ 30 окт 2019, 09:58 ] |
Заголовок сообщения: | Re: Коммент для теоефона в Параметрах договора |
спасибо |
Автор: | mzhar [ 11 ноя 2019, 16:45 ] |
Заголовок сообщения: | Re: Коммент для теоефона в Параметрах договора |
Phricker писал(а): Код: import ru.bitel.bgbilling.kernel.container.managed.ServerContext; import ru.bitel.bgbilling.kernel.contract.api.common.service.ContractService; import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase; import ru.bitel.bgbilling.server.util.Setup; import ru.bitel.common.sql.ConnectionSet; import ru.bitel.oss.kernel.entity.common.bean.EntityAttrPhone; import java.sql.Connection; import java.util.List; public class TestGlobalScript extends GlobalScriptBase { @Override public void execute(Setup setup, ConnectionSet connectionSet) throws Exception { ServerContext serverContext = ServerContext.get(); Connection con = connectionSet.getConnection(); ContractService contractService = serverContext.getService(ContractService.class, 0); EntityAttrPhone entityAttrPhone = (EntityAttrPhone) contractService.contractParameterGet(<CONTRACT_ID>, <PHONE_PARAM_ID>); List<EntityAttrPhone.PhoneContact> contactList = entityAttrPhone.getContactList(); if (null != contactList && !contactList.isEmpty()) { EntityAttrPhone.PhoneContact phoneContact = contactList.get(0); phoneContact.setComment("Основной"); contractService.contractParameterUpdate(<CONTRACT_ID>, entityAttrPhone); } } } билды пока не обновленны на боевой машине, всвязи с этим нет метода contractParameterGet в contractService, как можно переделать данный код? подскажите плз |
Автор: | Phricker [ 11 ноя 2019, 18:37 ] |
Заголовок сообщения: | Re: Коммент для теоефона в Параметрах договора |
Версии? |
Автор: | mzhar [ 12 ноя 2019, 08:58 ] |
Заголовок сообщения: | Re: Коммент для теоефона в Параметрах договора |
боевой Сервер: вер. 7.1.1050 |
Автор: | Phricker [ 14 ноя 2019, 17:06 ] |
Заголовок сообщения: | Re: Коммент для теоефона в Параметрах договора |
Для версий ниже 7.2 Код: import bitel.billing.server.contract.bean.ContractParameterManager;
import ru.bitel.bgbilling.common.PhoneUtils; import ru.bitel.bgbilling.kernel.container.managed.ServerContext; import ru.bitel.bgbilling.kernel.contract.param.common.bean.PhoneParamItem; import ru.bitel.bgbilling.kernel.contract.param.common.bean.PhoneParamValue; import ru.bitel.bgbilling.kernel.module.common.bean.User; import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase; import ru.bitel.bgbilling.server.util.Setup; import ru.bitel.common.sql.ConnectionSet; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Iterator; public class TestGlobalScript extends GlobalScriptBase { private final int PHONE_PARAM_ID = 30; @Override public void execute(Setup setup, ConnectionSet connectionSet) throws Exception { Connection con = connectionSet.getConnection(); ServerContext serverContext = ServerContext.get(); String query = "SELECT cid FROM contract_parameter_type_phone WHERE pid = ?"; try (ContractParameterManager contractParameterManager = new ContractParameterManager(con); PreparedStatement ps = con.prepareStatement(query)) { ps.setInt(1, PHONE_PARAM_ID); try (ResultSet rs = ps.executeQuery()) { while (rs.next()) { PhoneParamValue phoneParamValue = contractParameterManager.getPhoneParam(rs.getInt("cid"), PHONE_PARAM_ID); if (phoneParamValue != null) { Iterator<PhoneParamItem> it = phoneParamValue.iterator(); PhoneParamItem phoneParamItem = it.next(); if (phoneParamItem != null) { phoneParamItem.setComment("Основной"); phoneParamValue.setPhones(PhoneUtils.getPhones(phoneParamValue, "")); } contractParameterManager.updatePhoneParam(rs.getInt("cid"), PHONE_PARAM_ID, phoneParamValue, User.USER_SERVER); } } } } } } |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |