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 запрос, но он меняет коммент в редакторе и приходится нажимать ОК, приведите пример пжл

Вложения:
Screenshot_3.png
Screenshot_3.png [ 1.24 КБ | Просмотров: 4700 ]
Screenshot_1.png
Screenshot_1.png [ 4.02 КБ | Просмотров: 4700 ]

Автор:  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/