Калькулятор стоимости лицензий ПО и идея SaaS дистрибьюции программного обеспечения (ELDI)

10 Июл
2012

Была идея по созданию системы электронной дистрибьюции программного обеспечения. Грубо называем ее ELDI.
Суть в том, что сейчас на рынке продаж лицензий ПО для корпоративных клиентов нет нормальных инструментов для расчета стоимости лицензий.

К примеру, возьмем антивирус Dr.Web., помимо новой покупки есть еще продление, миграция, дозакупка и тд.
У каждого вышеперечисленного вида операций есть ряд условий получения скидок. Клиенты делятся на несколько типов, а также сам продукт Dr.Web.

Получается слишком много вариаций. Менеджеру продаж приходится держать в голове много информации, а расчет производится с помощью некого Excel файла. Для простого человека это слишком сложно.

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

Было бы хорошо создать SaaS электронной дистрибьюции программного обеспечения.

На сайте реселлеров ПО поставим виджеты калькуляторов стоимости лицензий (для корпоративных клиентов). У каждого реселлера свой личный кабинет в сервисе. Заказы принимаются на сайте реселлера и попадут в его личный кабинет. Потом данные по заказам синхронизируются с ERP (1С, Navision и тд.) реселлера.

Хотел бы написать ряд статьей посящен вопросу реализации подобных систем.

Коротко говоря, такая система электронной дистрибьюции состоит из 4-х частей.

1 — калькулятор, который позволяет в зависимости от типа клиента, типа операций (покупка, продление, миграция, дозакупка), типа продуктов (Desktop, Server) и функциональности продукта (комплексная защита, криптография и тд) дать правильную цену и правильный артикул продукта.
2 — виджеты или транспортная часть, которая позволяет разместить этот калькулятор на разных сайтах реселлеров.
3 — личный кабинет у реселлеров, где они устанавливают параметры по наценке, где хранятся их заказы, layout и тд.
4 — шлюз с ERP (1С) для учета заказов.

Вся система будет работать как SaaS.

В этой статье по электронной дистрибьюции ПО (ELDI) я опишу техническую реализацию калькулятора, что, как я считаю, является сердцем всей системы.

Весь калькулятор состоит из 3-х частей.

1) БД, где хранятся базовые данные такие как типы продуктов, их версии, прайсы, типы клиентов, коэффициенты скидки и тд.
2) ORM, где собираются объекты из таблиц БД
3) Типы операции (покупка, продление, миграция, дозакупка) и их внутренние логики (в виде ЕСЛИ — ТО).

Пока я написал калькулятор только для Dr.Web как прототип. Но думаю, принцип для остальных антивирусов аналогичен.

Полный код прототипа можете найти по ссылке openagora.ru/downloads/ELDI.zip

Скрипт был написан на PHP с использованием Zend_Db.

Вкратце:
в core.php простой ORM, который собирает 2 объекта generalInformation (общий объект), osDrWeb (варианты антивируса с компонентами по платформам и операционным системам) из БД в logic.php типы операции (новая покупка, продление, миграция, дозакупка и дозакупка с продлением) и их внутренние логики, строятся на 2-х предыдущих объектах generalInformation и osDrWeb.

Пример правила дозакупки с продлением в официальном документе Dr.Web

«Дозакупка
1. При увеличении количества защищаемых объектов в течение срока действия лицензии, стоимость дозакупаемых лицензий рассчитывается по текущему прайс-листу без скидки, пропорционально оставшемуся времени действия лицензии.
2. Оставшееся время действия лицензии рассчитывается исходя из числа месяцев, оставшихся до истечения срока ранее приобретенной лицензии (при этом неполный месяц округляется до 1 месяца).
3. Минимально возможный срок лицензии при дозакупке – 6 месяцев. Максимальный – 30 месяцев. В противном случае расширение лицензии производится по правилам дозакупки + продления.
4. Стоимость дозакупаемых лицензий рассчитывается исходя из диапазона суммарного количества защищаемых объектов.
«

В коде данное правило выглядет так (см. logic.php)

function addingLicense(osDrWeb $old, osDrWeb $new, $expiredDate) {
//checking if diff($expiredDate, $currentDate>6 and <30
    if (generalInformation::getLicenseTypeCode($code = $new->getLicenseType()) == "NEW") {
        $currentDate = new DateTime();
        $newDate = new DateTime($expiredDate);
        $intervalObj = $currentDate->diff($newDate);
        $interval = $intervalObj->format('%m');
        $oldQuant = $old->getQuant();
        $newQuant = $new->getQuant();
        $sumQuant = $oldQuant + $newQuant;
        $basePrice = $new->getBasePrice($sumQuant);
        $totalPrice = $basePrice * $interval / $new->getDuration();
        return $totalPrice;
    }
    return null;
}


Другой пример:

Клиент является учебным заведением. Он может купить антивирус как новые или может делать миграцию из Касперского в Dr.Web. Скрипт подскажет, какой вариант ему выгоднее и покажет артикул оптимального варианта.
(см. test.php)

$os->setPrivilege(generalInformation::getPrivilegeId($code = "MIG"));
echo $price1 = newLicense($os)."<br />";
$os->setPrivilege(generalInformation::getPrivilegeId($code = "UNI"));
echo $price2 = newLicense($os)."<br />";
if ($price1<$price2) echo $price1;
else echo $price2;
echo "Code = ".$os->getSolutionCode();


Вобщем пока все в прототипе, поэтому довольно сыро выглядит. Но думаю, не сложно быстро создать и развернуть такой калькулятор, чтобы облегчить жизнь бедных менеджеров продаж ПО ) и вдруг кому-то удастся делать бизнес SAAS по продаже ПО. Всем удачи.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх