forum.bitel.ru http://forum.bitel.ru/ |
|
Как правильно сделать http://forum.bitel.ru/viewtopic.php?f=23&t=10409 |
Страница 1 из 1 |
Автор: | avk [ 13 апр 2015, 18:01 ] |
Заголовок сообщения: | Как правильно сделать |
Есть компания, у которой несколько объектов подключения интернета. У нас ними один договор, а каждый объект оформлен через приложение к договору. В биллинге один договор. На каждый объект своя услуга и свой тариф. Получается в плагине Documents: - бланк договора 1шт - бланк приложения 1 шт Как имея один шаблон, печатать разные приложения ? Делать договор на каждый объект, мне кажется, избыточным. Как правильно это оформить ? |
Автор: | Phricker [ 13 апр 2015, 18:06 ] |
Заголовок сообщения: | Re: Как правильно сделать |
Договора как нибудь различаются? Если да - то можно набросать скрипт который будет в зависимости от этих данных подставлять что-то свое туда куда нужно. |
Автор: | avk [ 13 апр 2015, 19:08 ] |
Заголовок сообщения: | Re: Как правильно сделать |
Phricker писал(а): Договора как нибудь различаются? Если да - то можно набросать скрипт который будет в зависимости от этих данных подставлять что-то свое туда куда нужно. Договор один и куда скрипт применять не понял что-то. Поясню немного. В приложении находятся данные:
Скорость канала Стоимость услуги Стоимость инсталяции Вот куда мне прописать эти параметры, чтобы потом можно было распечатать приложение ? |
Автор: | avk [ 13 апр 2015, 19:15 ] |
Заголовок сообщения: | Re: Как правильно сделать |
Мне кажется, для этих целей подошли бы объекты договора, но их нельзя выбрать в плагине Documents. Если только SQL запросом. Но как передать нужный ID объекта ? |
Автор: | Phricker [ 13 апр 2015, 19:47 ] |
Заголовок сообщения: | Re: Как правильно сделать |
Еще раз. Как вы видите разницу между Цитата: Есть компания, у которой несколько объектов подключения интернета. У нас ними один договор, а каждый объект оформлен через приложение к договору. В договоре, который в биллинге, есть какой-то параметр в котором прописан объект подключения или что? Или номера договоров в биллинге разнятся? В зависимости от этих данных вы можете Цитата: Динамический Java-класс реализует интерфейс ru.bitel.bgbilling.plugins.documents.server.bean.pattern.PatternDataExtractor, содержащий метод extractData( Connection con, int contractId, DocumentPattern pattern, DocumentType type, DocumentJournal journal, Map<String, String> apiMap ), который должен возвращать объект типа Map<String, String> - список переменных в формате "ключ=>значение переменной". Здесь в качестве ключа выступает название переменной, соответствующей переменной в файле шаблона документа. И в зависимости от этих данных подставляйте те значения переменных которые вам нужны. |
Автор: | Phricker [ 13 апр 2015, 19:52 ] |
Заголовок сообщения: | Re: Как правильно сделать |
Как пример Код: public Map extractData( Connection con, int cid, DocumentPattern pattern, DocumentType type, DocumentJournal journal, Map<String, String> apiMap )
throws BGException { ContractManager cm = new ContractManager(con); ContractParameterManager cpm = new ContractParameterManager(con); Contract contract = cm.getContractById(cid); Map<String, String> result = new HashMap<String, String>(); //Получение параметров договора result.put("contractTitle", contract.getTitle()); result.put("contractDate", TimeUtils.formatDate(contract.getDateFrom())); result.put("contractPassword", contract.getPswd()); if(contract.getFc() == 0){ result.put("fio", getContractParameterData(cpm.getStringParam(1))); } else if(contract.getFc() == 1){ result.put("fio", getContractParameterData(cpm.getStringParam(2))); } return result; } |
Автор: | Phricker [ 13 апр 2015, 19:56 ] |
Заголовок сообщения: | Re: Как правильно сделать |
Хотя если у вас приложения в корне разнятся (а не просто значениями переменных либо тем что можно заменить переменными), то тогда да - засада. Навскидку ничего не назову. |
Автор: | Phricker [ 13 апр 2015, 19:58 ] |
Заголовок сообщения: | Re: Как правильно сделать |
И в карточках договора была удобная фишка как "Получения списка карточек договора". Самому ее не хватает в плагине Documents Можно просить разрабов запилить подобное - и тогда заводить кучу шаблонов, но их список для конкретных договоров вы будете сами редактировать скриптом. |
Автор: | avk [ 13 апр 2015, 21:24 ] |
Заголовок сообщения: | Re: Как правильно сделать |
Как я понял, в вашем примере берется параметр договора по id в зависимости от типа договора. Чем мне это поможет не могу понять. Тип то у меня один. Сейчас объекты подключения нигде не прописаны. Я пытаюсь разобраться как правильно их прописать в договоре. Первая мысль - прописать в параметры таким образом:
[Услуга №1] Скорость канала [Услуга №1] Стоимость [Услуга №2] Адрес [Услуга №2] Скорость канала [Услуга №2] Стоимость И на каждую услугу в плагине Documents создать свой шаблон приложения. По сути, один и тот же, только берется из разных параметров. Но такой подход выглядит костылем. Вот я и спрашиваю, как правильно такое организовывать? p.s. Пока писал сообщение, пришла мысль - а что если в параметре договора указывать ID объекта, который хочешь распечатать и через SQL получить данные по нужному объекту. Тоже костыль, но зато не надо городить кучу параметров. |
Автор: | avk [ 14 апр 2015, 12:58 ] |
Заголовок сообщения: | Re: Как правильно сделать |
Получилось. Добавил в договор параметр "ID объекта для печати" В Documents в настройки шаблона приложения добавил переменные типа SQL. address: Код: SELECT B.address FROM `object` A JOIN `object_param_value_address` B ON A.id = B.object_id WHERE A.cid = ${cid} AND A.id = (SELECT val FROM `contract_parameter_type_1` P WHERE P.cid=A.cid AND P.pid=60) Где pid=60 - это ID параметра в договоре "ID объекта для печати". date: Код: SELECT B.value FROM `object` A JOIN `object_param_value_date` B ON A.id = B.object_id WHERE A.cid = ${cid} AND B.param_id=7 AND A.id = (SELECT val FROM `contract_parameter_type_1` P WHERE P.cid=A.cid AND P.pid=60) Где B.param_id=7 - ID параметра объекта "Дата подключения" speed: Код: SELECT B.value FROM `object` A JOIN `object_param_value_text` B ON A.id = B.object_id WHERE A.cid = ${cid} AND B.param_id=4 AND A.id = (SELECT val FROM `contract_parameter_type_1` P WHERE P.cid=A.cid AND P.pid=60) Где B.param_id=4 - ID параметра объекта "Скорость канала" Ну и так далее по всем параметрам объекта. Теперь, если у клиента появляется новый точка подключения, я просто добавляю объект, заполняю параметры объекта. В параметрах договора указываю "ID объекта для печати" и генерирую приложение к договору. Результатом доволен. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |