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

API updatePhoneParam не работает
http://forum.bitel.ru/viewtopic.php?f=19&t=10472
Страница 1 из 1

Автор:  borin [ 28 апр 2015, 18:50 ]
Заголовок сообщения:  API updatePhoneParam не работает

Добрый день!

Пишу перенос договоров в BGBilling, пытаюсь обновить параметр типа "Телефон", но тут ожидает засада, метод отрабатывает. Захожу в договор смотрю а поле пустое, если открыть на изменение то телефон там есть и если нажать сохранить, то он покажется в договоре.
Перезапускать биллинг пробовал.
Код:
ContractParameterManager cpm = new ContractParameterManager(connection);
Contract bgContract = cm.createFromPattern(PATTERN_ID, atirraContract.getAccountNo(), atirraContract.getAddedTo(), genPassword(8));
PhoneParamValue phoneValue = new PhoneParamValue();
PhoneParamItem phoneParamItem = new PhoneParamItem();
phoneParamItem.setPhone("791231231212");
phoneValue.addPhoneItem(0, phoneParamItem);
cpm.updatePhoneParam(bgContract.getId(), PARAM_PHONE, phoneValue, USER_ID);

Автор:  stark [ 28 апр 2015, 19:05 ]
Заголовок сообщения:  Re: API updatePhoneParam не работает

Там нужно сформировать отформатированную строку:
Код:
phoneValue.setPhones( PhoneUtils.getPhones( Setup.getSetup(), PARAM_PHONE, value ) );

Автор:  borin [ 29 апр 2015, 10:33 ]
Заголовок сообщения:  Re: API updatePhoneParam не работает

Код который вы написали кривой. getPhones принимает два параметра, а тут мы передаем 3 параметра. И вообще getPhones предназначена для преобразования PhoneParamValue в строку.
А мне нужно к договору добавить телефоны. И код который я написал вышел, добавляет телефоны в договор, но они не отображаются, пока через клиента не пересохранить поле.
Код:
public static final String getPhones(PhoneParamValue value, String formats)

Автор:  Phricker [ 29 апр 2015, 10:42 ]
Заголовок сообщения:  Re: API updatePhoneParam не работает

borin писал(а):
Код который вы написали кривой.

Не только этот. Не только :o

Автор:  borin [ 29 апр 2015, 11:22 ]
Заголовок сообщения:  Re: API updatePhoneParam не работает

Разобрался!

В updatePhoneParam делается два INSERT в contract_parameter_type_phone_item и contract_parameter_type_phone_item, первая табличка видимо отвечает за отображение в клиенте, вторая хранит телефоны.
Так вот оказывается для успешного добавления телефона Сформировать phoneParamItem потом добавить его в PhoneParamValue, а затем из PhoneParamValue сформировать строку с помощью PhoneUtils и присвоить PhoneParamValue.

Почему бы не сформировать эту строку в updatePhoneParam остается загадкой :)
Ноо ладно спасибо за подсказку, куда копать )

Код:
PhoneParamValue phoneValue = new PhoneParamValue();
PhoneParamItem phoneParamItem = new PhoneParamItem();
phoneParamItem.setPhone("79121231212");
phoneParamItem.setFormat("");
phoneParamItem.setComment("");
phoneValue.addPhoneItem(phoneParamItem);
phoneValue.setPhones(PhoneUtils.getPhones(phoneValue, ""));
cpm.updatePhoneParam(bgContract.getId(), PARAM_PHONE, phoneValue, USER_ID);

Автор:  borin [ 29 апр 2015, 11:47 ]
Заголовок сообщения:  Re: API updatePhoneParam не работает

И еще в конфигурации есть параметр phones.formats=, так вот если его изменить, отформатированы будут лишь вновь добавленные телефоны. Вот такая вот пичаль :(

Автор:  stark [ 29 апр 2015, 11:49 ]
Заголовок сообщения:  Re: API updatePhoneParam не работает

borin писал(а):
Код который вы написали кривой. getPhones принимает два параметра, а тут мы передаем 3 параметра. И вообще getPhones предназначена для преобразования PhoneParamValue в строку.
А мне нужно к договору добавить телефоны. И код который я написал вышел, добавляет телефоны в договор, но они не отображаются, пока через клиента не пересохранить поле.
Код:
public static final String getPhones(PhoneParamValue value, String formats)


Вы же версию свою не сообщили . В той версии, откуда я это брал - было так.

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