BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 19 июн 2025, 04:40

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 28 ] 
Автор Сообщение
СообщениеДобавлено: 05 янв 2014, 23:16 
Не в сети

Зарегистрирован: 14 окт 2013, 16:25
Сообщения: 151
Карма: 0
Добрый вечер. С наступившим!

Необходима консультация, либо указать в какую сторону копать. К сожалению в Java не силен (вообще). Задача состоит в следующем:
Есть, к примеру, такой вот тариф:
Вложение:
example-tariff.png
example-tariff.png [ 25.11 КБ | Просмотров: 17448 ]


В узле "Абонплаты" установлен период действия абонплаты и стоимость. Нужно каким-то образом получить из этого тарифа его название и текущую стоимость в узле Абонплаты, т.е. Тариф - стоимость. И так для каждого подобного тарифа.

Получить название всех тарифов, вроде бы не сложно:
Код:
import org.w3c.dom.*;
import bitel.billing.server.tariff.voice.calc.*;
import bitel.billing.server.task.bean.*;
import java.math.*;
import ru.bitel.bgbilling.kernel.network.radius.*;
import bitel.billing.server.npay.bean.*;
import bitel.billing.server.npay.*;
import bitel.billing.server.tariff.TariffTreeSet.TariffSetEntry;
import ru.bitel.bgbilling.modules.npay.server.*;
import java.util.ArrayList;
import java.util.Collections;
import java.math.BigDecimal;
import java.sql.*;
import java.util.*;
import java.lang.*;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.tariff.*;
import bitel.billing.server.util.*;
import ru.bitel.common.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import bitel.billing.server.tariff.bean.*;
import bitel.common.model.*;
import ru.bitel.bgbilling.kernel.tariff.common.bean.TariffPlan;
import ru.bitel.bgbilling.kernel.tariff.server.bean.TariffPlanManager

public void main( setup, Connection con, conSlave )
{
  TariffPlanManager tpm = new TariffPlanManager(con);
   print(tpm.getTariffPlanList());
}


А вот как получить абонплату по тарифу, я что-то не могу понять. Может у кого есть какие идеи как реализовать используя API, либо еще каким-нибудь способом. Наверняка такая возможность есть :D .

Заранее благодарю за помощь.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 янв 2014, 03:57 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
Цитата:
А вот как получить абонплату по тарифу, я что-то не могу понять. Может у кого есть какие идеи как реализовать используя API, либо еще каким-нибудь способом. Наверняка такая возможность есть :D .

тарифное дерево может быть довольно сложным, поэтому нет универсального способа получить нужную информацию...

тарифное дерево орентировано на то, что ему будет передана вся необходимая инфрмация, и оно само все расчитает и вернет готовый результат (наработку), а не цену, так как цены могут меняться в течение учетного периода и на эти изменения может влиять множество факторов (например наработка в других модулях)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 янв 2014, 13:42 
Не в сети

Зарегистрирован: 14 окт 2013, 16:25
Сообщения: 151
Карма: 0
Спасибо за ответ.
Жаль, что нет такого способа чтобы получить цену из тарифа. В этом и была главная идея, чтобы в зависимости от периода получать текущую стоимость тарифа. Таких периодов еще планируется несколько штук. Просто у нас уже есть скрипт где используются два массива - один с именем тарифа, другой с ценой. Но там все заноситься ручками, что сами понимаете не комильфо.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 янв 2014, 19:07 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Можно делать специальный узел, куда заносить подобную мета-инфу о тарифе, не влияющую на тарификацию, а потом тарифным запросом её получать. Я пользуюсь для подобных штук узлом "конфигурация тарифа". Но, сами понимаете - это нужно отдельно в каждом тарифе добавлять узел.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 янв 2014, 22:38 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
Cromeshnic писал(а):
Можно делать специальный узел, куда заносить подобную мета-инфу о тарифе, не влияющую на тарификацию, а потом тарифным запросом её получать. Я пользуюсь для подобных штук узлом "конфигурация тарифа". Но, сами понимаете - это нужно отдельно в каждом тарифе добавлять узел.


как я понимаю весь смысл доставать инфу из тарифа и не дублировать ее нигде повторно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 янв 2014, 19:54 
Не в сети

Зарегистрирован: 14 окт 2013, 16:25
Сообщения: 151
Карма: 0
Cromeshnic писал(а):
Можно делать специальный узел, куда заносить подобную мета-инфу о тарифе, не влияющую на тарификацию, а потом тарифным запросом её получать. Я пользуюсь для подобных штук узлом "конфигурация тарифа". Но, сами понимаете - это нужно отдельно в каждом тарифе добавлять узел.


Интересненько. А не могли бы вы показать примерчик подобный реализации?

skn писал(а):
Cromeshnic писал(а):
Можно делать специальный узел, куда заносить подобную мета-инфу о тарифе, не влияющую на тарификацию, а потом тарифным запросом её получать. Я пользуюсь для подобных штук узлом "конфигурация тарифа". Но, сами понимаете - это нужно отдельно в каждом тарифе добавлять узел.


как я понимаю весь смысл доставать инфу из тарифа и не дублировать ее нигде повторно.


Да, именно такая была первоначальная мысль. Но, как я понял из ваших слов, что извлечь всю нужную мне информацию из тарифа стандартными средствами не получиться (я имею ввиду используя API).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 янв 2014, 07:08 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Вот пример для Dialup:

Код:
         ContractManager cmReadOnly = new ContractManager(conSlave);

         TariffTreeSet tts = cmReadOnly.getRealtimeTariffTreeSet( c.getId(), Calendar.getInstance(), "dialup", this.mid, true );

         if(tts!=null){
            TariffModuleTree tree = tts.getTree(Calendar.getInstance());
   
            if (tree != null)
            {
               TariffRequest req = new TariffRequest();
               req.setRequestParam("action", "init");
               req.setRequestParam("cid", new Integer(c.getId()));
               req.setRequestParam("time", Calendar.getInstance());
   //            req.setRequestParam("month_time", new GregorianCalendar());
   //            req.setRequestParam("period_end", new GregorianCalendar());
               req.setRequestParam("sid", new Integer(sid));
               req.setRequestParam("amount", new Long(1L));
               req.setRequestParam("tariffOptions", ContractTariffOptionDao.getContractRealtimeTariffOptionList(this.conSlave, c.getId(), new Date()));
   //            req.setRequestParam("level", Integer.valueOf(bitel.billing.server.processor.dialup.LevelManager.getLevel(c.getId())));
   
               tree.processRequest(req);
   
   //            if (req.wasAccepted()) //В 5.1 перестал быть accepted, но нужные данные выдаёт
   //            {
                  if(req.getResponseParam("custom_param")!=null && req.getResponseParam("custom_param")!=""){
                     package_id = (String) req.getResponseParam("custom_param");
                  }
   //            }else{
   //               print(req.toString());
   //            }
            }
         }


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 янв 2014, 14:14 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
по поводу добавления спец узла....
не понятно что в нем хранить, например с сегодняшнего дня меняется цена
что должно быть в этом узле? новая цена или несколько цен с указанием периода?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 янв 2014, 14:34 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Смотря как использовать. Если при использовании всегда запрашивается только текущее значение - без разницы, можно просто менять.

зы. Чем это лучше хранения справочника цен и т.п. в отдельной таблице?
1. Проще следить - залез менять тариф, увидел этот узел рядом с ценой, поменял оба в периоде.
2. Гибкость. Можно делать зависимости от тарифных опций и пр. условий. А также (что очень важно) - применимо для персональных тарифов.

Можно использовать как вшитые метки тарифов по типам/скоростям для всякой отчётности, например.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 янв 2014, 15:11 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
вот мне и не понятно для каких целей этот узел использовать
для чего нужна текущая стоимость?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 янв 2014, 15:43 
Не в сети

Зарегистрирован: 05 окт 2007, 13:36
Сообщения: 1073
Карма: 46
иногда нужно. в разных случаях узнать сколько абоненту должно начисляться, и взависимости от этого, принимать решение.
давно использую для этого глобальный массив с текущими стоимостями тарифов(только для абонплат).

_________________
интеграция биллинга с 1с http://bgbilling-1c.ru/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 янв 2014, 16:01 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Akhmat писал(а):
иногда нужно. в разных случаях узнать сколько абоненту должно начисляться, и взависимости от этого, принимать решение.

плюсую

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 янв 2014, 16:12 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
skyb писал(а):
Akhmat писал(а):
иногда нужно. в разных случаях узнать сколько абоненту должно начисляться, и взависимости от этого, принимать решение.

плюсую


во! т.е. вы запрашиваете сколько должно, возращается ТЕКУЩАЯ цена, а в тарифе со следущего дня прописана НОВАЯ цена, и что вы получите?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 янв 2014, 16:25 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
skn писал(а):
skyb писал(а):
Akhmat писал(а):
иногда нужно. в разных случаях узнать сколько абоненту должно начисляться, и взависимости от этого, принимать решение.

плюсую


во! т.е. вы запрашиваете сколько должно, возращается ТЕКУЩАЯ цена, а в тарифе со следущего дня прописана НОВАЯ цена, и что вы получите?

Я думаю мало кто будет запрашивать тарифы со сложным списанием. Например вспомним недавний вопрос по поводу разблокировки абонентов по достаточному платежу который равен полной абонке, это как пример, применений много, но и собственно он в конкретный день и нужен

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 янв 2014, 16:38 
Не в сети

Зарегистрирован: 05 окт 2007, 13:36
Сообщения: 1073
Карма: 46
от биллинга тут хотелось бы получать цену абонентки на дату, или просто текущую стоимость. хоть чтото. а в идеале метод типа
getAbonCost(tpid,sid=0/*если 0 вся абонентка*/,date=null/*если null текущую стоимость*/);
:)

_________________
интеграция биллинга с 1с http://bgbilling-1c.ru/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 янв 2014, 16:49 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
Akhmat писал(а):
от биллинга тут хотелось бы получать цену абонентки на дату, или просто текущую стоимость. хоть чтото. а в идеале метод типа
getAbonCost(tpid,sid=0/*если 0 вся абонентка*/,date=null/*если null текущую стоимость*/);
:)


так речь про другое, речь про узел с мета данными по тарифу, с одной текущей ценой, и про то, что она мало что даст...
да еще потребует дополнительных затрат на поддержание в актуальном состоянии.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 янв 2014, 16:51 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
skyb писал(а):
skn писал(а):
skyb писал(а):
Akhmat писал(а):
иногда нужно. в разных случаях узнать сколько абоненту должно начисляться, и взависимости от этого, принимать решение.

плюсую


во! т.е. вы запрашиваете сколько должно, возращается ТЕКУЩАЯ цена, а в тарифе со следущего дня прописана НОВАЯ цена, и что вы получите?

Я думаю мало кто будет запрашивать тарифы со сложным списанием. Например вспомним недавний вопрос по поводу разблокировки абонентов по достаточному платежу который равен полной абонке, это как пример, применений много, но и собственно он в конкретный день и нужен


а чего тут сложно в тарифе в котором цена абонентки с завтрашнего например повышается...
когда эту цену прописывать в мета узел, в 00-00 часов? вручную?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 янв 2014, 17:17 
Не в сети

Зарегистрирован: 05 окт 2007, 13:36
Сообщения: 1073
Карма: 46
skn писал(а):
Akhmat писал(а):
от биллинга тут хотелось бы получать цену абонентки на дату, или просто текущую стоимость. хоть чтото. а в идеале метод типа
getAbonCost(tpid,sid=0/*если 0 вся абонентка*/,date=null/*если null текущую стоимость*/);
:)


так речь про другое, речь про узел с мета данными по тарифу, с одной текущей ценой, и про то, что она мало что даст...
да еще потребует дополнительных затрат на поддержание в актуальном состоянии.

да, метаданными это костыль, который не отличается в общем то от глобального массива. все равно же руками править(единственно при редактировании тарифа, не забудешь и метку поправить). если будет такой метод, то мета не надо. не обязательно вклеивать в биллинг, можно просто метод тут написать, а мы его в глобальную библиотеку. через апи не смог его реализовать

_________________
интеграция биллинга с 1с http://bgbilling-1c.ru/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 янв 2014, 06:15 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
skn писал(а):
когда эту цену прописывать в мета узел, в 00-00 часов? вручную?

Никто не мешает и сам этот узел в периоде задать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 янв 2014, 06:25 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Код:
<item>
<title>Обновление модуля Inet</title>
<link>http://bgbilling.ru/v6.0/download/inet/fixed</link>
<description>ДОБАВЛЕНО   Inet: Ветка Баланс в тарифе.
</description>
<pubDate>Thu, 09 Jan 2014 21:08:07 +0500</pubDate>
<guid>http://bgbilling.ru/v6.0/download/inet/fixed/362</guid>
</item>

Это чего добавили? ктонить пробовал уже?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 янв 2014, 16:16 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
Cromeshnic писал(а):
skn писал(а):
когда эту цену прописывать в мета узел, в 00-00 часов? вручную?

Никто не мешает и сам этот узел в периоде задать.


тогда найти этот узел будет не менее сложно как и цену в текущем дереве... :-(


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 янв 2014, 16:18 
Не в сети

Зарегистрирован: 05 окт 2007, 13:36
Сообщения: 1073
Карма: 46
видимо перемещаешь прежний узел, чтобы один всегда. хорошее решение

_________________
интеграция биллинга с 1с http://bgbilling-1c.ru/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 янв 2014, 16:20 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
Akhmat писал(а):
видимо перемещаешь прежний узел, чтобы один всегда. хорошее решение


а кто должен перемещать и когда?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 янв 2014, 16:31 
Не в сети

Зарегистрирован: 05 окт 2007, 13:36
Сообщения: 1073
Карма: 46
ну редактируешь тариф когда, изменяешь стоимость, то и переместил за одно. обычно по тарифу нужна одна текущая стоиомсть абонентки, ну и ежедневная она или месячная.

_________________
интеграция биллинга с 1с http://bgbilling-1c.ru/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 янв 2014, 17:03 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
Akhmat писал(а):
ну редактируешь тариф когда, изменяешь стоимость, то и переместил за одно. обычно по тарифу нужна одна текущая стоиомсть абонентки, ну и ежедневная она или месячная.


к примеру редактируем сегодня, о том что с завтра меняется цена, переместить в момент редактирования или в 00-00


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 янв 2014, 18:23 
Не в сети

Зарегистрирован: 05 окт 2007, 13:36
Сообщения: 1073
Карма: 46
у меня скрипты, которым нужна стоимость тарифа работают или в начале месяца, или ночью, т.е. на след день.
т.е. в моем случае обычно можно заранее перемещать. меня бы устроило. так и редактирую свой глоб массив инфы по тарифам

_________________
интеграция биллинга с 1с http://bgbilling-1c.ru/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 янв 2014, 14:43 
Не в сети

Зарегистрирован: 14 окт 2013, 16:25
Сообщения: 151
Карма: 0
Cromeshnic писал(а):
Вот пример для Dialup:

Код:
         ContractManager cmReadOnly = new ContractManager(conSlave);

         TariffTreeSet tts = cmReadOnly.getRealtimeTariffTreeSet( c.getId(), Calendar.getInstance(), "dialup", this.mid, true );

         if(tts!=null){
            TariffModuleTree tree = tts.getTree(Calendar.getInstance());
   
            if (tree != null)
            {
               TariffRequest req = new TariffRequest();
               req.setRequestParam("action", "init");
               req.setRequestParam("cid", new Integer(c.getId()));
               req.setRequestParam("time", Calendar.getInstance());
   //            req.setRequestParam("month_time", new GregorianCalendar());
   //            req.setRequestParam("period_end", new GregorianCalendar());
               req.setRequestParam("sid", new Integer(sid));
               req.setRequestParam("amount", new Long(1L));
               req.setRequestParam("tariffOptions", ContractTariffOptionDao.getContractRealtimeTariffOptionList(this.conSlave, c.getId(), new Date()));
   //            req.setRequestParam("level", Integer.valueOf(bitel.billing.server.processor.dialup.LevelManager.getLevel(c.getId())));
   
               tree.processRequest(req);
   
   //            if (req.wasAccepted()) //В 5.1 перестал быть accepted, но нужные данные выдаёт
   //            {
                  if(req.getResponseParam("custom_param")!=null && req.getResponseParam("custom_param")!=""){
                     package_id = (String) req.getResponseParam("custom_param");
                  }
   //            }else{
   //               print(req.toString());
   //            }
            }
         }


Спасибо. Буду пробывать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 фев 2014, 14:13 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Akhmat писал(а):
от биллинга тут хотелось бы получать цену абонентки на дату, или просто текущую стоимость. хоть чтото. а в идеале метод типа
getAbonCost(tpid,sid=0/*если 0 вся абонентка*/,date=null/*если null текущую стоимость*/);
:)

апну тему. что-то так и заглохло все это :)

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 28 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.064s | 76 Queries | GZIP : On ]