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

[feature] Реализация процентных скидок в BG
http://forum.bitel.ru/viewtopic.php?f=16&t=6122
Страница 2 из 2

Автор:  Universe [ 26 янв 2012, 09:57 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

Cromeshnic писал(а):
2 Universe, а синхранизация с 1с у вас есть какая-нибудь? Наработка, баланс, платежи, расходы? У нас например четко должен совпадать баланс на конец месяца в биллинге и 1C. Если у вас автоматизированно оно не ведётся, как вы отслеживаете нестыковки? Например, в биллинге есть платеж / расход / наработка по услуге, а в 1С - нет. Или наоборот. Или в 1С у вас не ведутся абонентские договоры, только общая движуха денег?


Нет синхронизации с 1С. "Движуха" денег - общая.

Автор:  snark [ 26 янв 2012, 16:01 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

От ты упоротый упертый ...

skyb писал(а):
http://forum.bgbilling.ru/viewtopic.php?p=7178#p7178
blib писал(а):
если следовать букве закона то да можно, но если ВЫ платите деньги физическому лицу то вы должны считать подоходный налог + ЕСН.


При фиктивном платеже я _не_ плачу деньги! Читай _очень_ внимательно:

skyb писал(а):
blib писал(а):
по бугалтерии вы просто ему услуги дешевле продаете а не даете ему деньги.


Услуги мои и я как хочу - так их и продаю. Перед налоговой мне надо отчитаться только за реальное бабло, а не за циферки нарисованные в балансе, которые позволяют пользоваться моими услугами дешевле.
Пример: 1 МБ стоит 1.0 руб., чтобы клиенту 1 МБ стоил 0.5 руб. я, либо начислил ему 0.5 руб. фиктивного платежа когда клиент скачал 1 МБ, либо посчитал 2 МБ по 1 руб.
В результате клиент доволен, а налоговая увидит реальные деньги (пришло Х руб. - я отчитался за Х руб.), которые мне заплатит клиент.

Автор:  skyb [ 26 янв 2012, 19:07 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

snark писал(а):
От ты упоротый упертый ...

skyb писал(а):
http://forum.bgbilling.ru/viewtopic.php?p=7178#p7178
blib писал(а):
если следовать букве закона то да можно, но если ВЫ платите деньги физическому лицу то вы должны считать подоходный налог + ЕСН.


При фиктивном платеже я _не_ плачу деньги! Читай _очень_ внимательно:

skyb писал(а):
blib писал(а):
по бугалтерии вы просто ему услуги дешевле продаете а не даете ему деньги.


Услуги мои и я как хочу - так их и продаю. Перед налоговой мне надо отчитаться только за реальное бабло, а не за циферки нарисованные в балансе, которые позволяют пользоваться моими услугами дешевле.
Пример: 1 МБ стоит 1.0 руб., чтобы клиенту 1 МБ стоил 0.5 руб. я, либо начислил ему 0.5 руб. фиктивного платежа когда клиент скачал 1 МБ, либо посчитал 2 МБ по 1 руб.
В результате клиент доволен, а налоговая увидит реальные деньги (пришло Х руб. - я отчитался за Х руб.), которые мне заплатит клиент.

тут как написал кромешник еще зависит от того как синхронизируется с 1с...и харе меня обзывать :-\

Автор:  snark [ 26 янв 2012, 19:39 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

skyb писал(а):
зависит от того как синхронизируется с 1с

Так то если если в 1С пихать левые платежи, то тогда никакая система скидок не спасет.
1С = отчетность = туда надо ложить только то, что надо показать налоговой.

skyb писал(а):
харе меня обзывать :-\

Дык я ж я любя )))

Автор:  skyb [ 26 янв 2012, 19:50 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

snark писал(а):
skyb писал(а):
зависит от того как синхронизируется с 1с

Так то если если в 1С пихать левые платежи, то тогда никакая система скидок не спасет.
1С = отчетность = туда надо ложить только то, что надо показать налоговой.

дык о том и речь то ;)
snark писал(а):
skyb писал(а):
харе меня обзывать :-\

Дык я ж я любя )))

все тебе прощаю, любимая)))))))))

Автор:  Cromeshnic [ 21 мар 2012, 09:56 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

Нашел чуть более элегантный способ сделать процентные скидки через абонплаты.
В npay уже есть классы, получающие наработку по услугам:
http://bgbilling.ru/v5.2/doc/ch18s04s03.html

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

Предлагаю сделать ещё один узел тарифа - процентная скидка. В узле указывается только id "наработки" из конфига. Узел возвращает цену в -1% от наработки по услугам за месяц.

Т.е. как в первом посте, только список услуг, по которым считаем скидку, выносится в конфиг:

Код:
module.account.<id>.title=<title>
module.account.<id>.mid=<mid>
module.account.<id>.class=<class_name>
#module.account.<id>.sids=<sids>


Написал код, проверил - работает:

Код:
package ru.bitel.bgbilling.modules.npay.tariff.server;

import bitel.billing.server.npay.bean.ModuleAccount;
import java.math.BigDecimal;
import ru.bitel.bgbilling.kernel.tariff.tree.server.DefaultTariffTreeNode;
import ru.bitel.common.ParameterMap;

public class MonthModeDiscountTariffTreeNode extends DefaultTariffTreeNode<NPayTariffRequest, NPayTariffContext>
{
  private final int account;

  public MonthModeDiscountTariffTreeNode(int id, ParameterMap parameterMap)
  {
    super(id, parameterMap);

    this.account = parameterMap.getInt("account", 0);
  }

  protected int executeImpl(Long treeNodeId, NPayTariffRequest req, NPayTariffContext ctx)
  {
    ModuleAccount moduleAccount = ctx.getModuleAccount(this.account);
    if (moduleAccount == null)
    {
      req.addError("Not found account " + this.account);
      return 0;
    }

    //Наработка по услугам
    BigDecimal accountValue = ctx.getModuleAccount(this.account).getPeriodAccount(req.getConnection(),
      req.cid, ((NPayTariffRequest.NPayServiceCost)req.serviceCost).date1, ((NPayTariffRequest.NPayServiceCost)req.serviceCost).date2);

      ((NPayTariffRequest.NPayServiceCost)req.serviceCost).cost = accountValue.divide(BigDecimal.valueOf(100)).negate();

    return 1;
  }
}


Можно это реализовать в стандартном npay?

С меня - документация и примеры использования.

Автор:  skyb [ 21 мар 2012, 11:22 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

Cromeshnic писал(а):
Можно это реализовать в стандартном npay?
С меня - документация и примеры использования.

+++++++
А можно на примере?

Автор:  Cromeshnic [ 21 мар 2012, 11:54 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

См. п.2 в первом посте.

Автор:  skyb [ 21 мар 2012, 13:31 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

Эх, ещёб конечно не только по месяцам, а и по дням б, а так кул!!!

Автор:  Cromeshnic [ 21 мар 2012, 14:01 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

Цитата:
Данный узел может быть размещён только в узле типа Месячный режим снятия, денежная наработка будет вычисляться за рассчитываемый период (период сочетания, см. алгоритм) за исключением случая использования класса KernelAccount, который может вычислить только сумму за весь месяц, зато подходит для вычисления наработки любого модуля.

(с) http://bgbilling.ru/v5.2/doc/ch18s04s03.html

Справедливо также и для нашего узла.

Автор:  afedorov [ 27 мар 2012, 12:52 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

Насколько я понял, в вашей реализации наработка сначала списывается обычным порядком в полном объеме, а затем начисляется скидка.
В этом случае, чтобы все работало, баланс абонента должен быть достаточным для списания абонплаты в полном объеме, иначе она не спишется и он заблокируется.
Могут быть недоразумения с абонентами на эту тему. Т.к. они ожидают, что будет достаточно баланса с учетом скидки, а это не так.
Есть идеи как сделать так, чтобы было достаточно баланса с учетом скидки?
Например если бы все начисления делались в виде транзакции, внутри которой не анализировался бы уход в минус по каждой операции, а эта проверка делалась на транзакцию целиком.

Автор:  Cromeshnic [ 27 мар 2012, 13:24 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

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

Цитата:
Есть идеи как сделать так, чтобы было достаточно баланса с учетом скидки?

Простого способа не вижу. Чтобы скидка применялась сразу, она должна применяться при начислении в конкретном модуле => теряется универсальность. Да даже если делать только для абонплат, навскидку не скажу, как именно.

Автор:  afedorov [ 28 мар 2012, 13:48 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

В модуле DialUP есть "Уровни" viewtopic.php?f=5&t=4335.
Вот если бы эти уровни учитывались и в NPay, то можно было бы сделать тарифный план с ценой, зависящей от уровня.
Тогда бы мы получили сразу тарифный план, где стоимость зависит от того, что решила внешняя система или скрипт.
С помощью этого можно будет реализовать скидки, которые сразу будут менять стоимость абонплаты.

Автор:  Cromeshnic [ 28 мар 2012, 14:04 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

Цитата:
Вот если бы эти уровни учитывались и в NPay, то можно было бы сделать тарифный план с ценой, зависящей от уровня.
Тогда бы мы получили сразу тарифный план, где стоимость зависит от того, что решила внешняя система или скрипт.
С помощью этого можно будет реализовать скидки, которые сразу будут менять стоимость абонплаты.

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

Автор:  afedorov [ 29 мар 2012, 12:41 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

Процент скидки линейно зависит от наработки???
Может процент на каждый конкретный случай фиксирован и линейно зависит сама сумма скидки?
В этом случае это нормально вписывается и в вариант с уровнями. Т.к. на разных уровнях можно установить стоимость уже с учетом нужной скидки.

В вашем случае, если скидка задана в тарифном плане, то как сделать ее динамической для разных абонентов с этим тарифным планом?
Например такое: Если абонент вовремя пополняет счет в течении 3х месяцев, то ему предоставляется скидка 10%, и за каждый последующий месяц еще +2%.
Если хоть раз вовремя не заплатил, скидка сбрасывается в 0. При этом тарифный план остается тот же самый и в нем ничего не правится.

Автор:  Cromeshnic [ 29 мар 2012, 12:57 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

Сумма скидки линейно зависит конечно, не %.

Я кажется понял теперь, о чём вы.
Цитата:
Вот если бы эти уровни учитывались и в NPay, то можно было бы сделать тарифный план с ценой, зависящей от уровня.

Т.е. сделать уровни, а в каждом уровне использовать не фикцированную цену абонплаты (100р), а наш новый узел для скидки с нужным множителем. Так?
Ну да, можно. Только уровни - фишка исключительно модуля dialup и не влияет на тарификацию. Уровни в dialup определяются только в текущий момент, у них нет ни истории, ни периодов действия. Поэтому для тарификации они не годятся.
Можно использовать тарифные опции. Или заменять разные скидочные абонплаты на договоре.

Автор:  Cromeshnic [ 29 мар 2012, 13:00 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

Цитата:
В вашем случае, если скидка задана в тарифном плане, то как сделать ее динамической для разных абонентов с этим тарифным планом?

Скидка задаётся не в тарифном плане, а на договоре: "количество" скидочной абонплаты - это скидка.
Например, скидка на инет 30%:
Изображение

Автор:  Cromeshnic [ 29 мар 2012, 13:03 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

Хотя давеча говорили с манагерами, они хотят, чтобы скидку сразу было видно при просмотре списка тарифов. Тут только отдельные дополнительные тарифы делать, с фиксированным % скидки.
Чуть лучше - сделать для скидок отдельный экземпляр модуля абонплат и обозвать его "Скидки", чтобы сразу в глаза бросался.

Автор:  afedorov [ 29 мар 2012, 13:29 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

Я знаю что сейчас уровни работают только в радиусе, но реализовать их для NPay, на мой взгляд, не так сложно.
Нужно завести табличку с cid,level и в NPay добавить обработку узлов "Уровень" по данным из этой таблицы.
Да и радиус пусть эту таблицу использует. Зачем подпорка в виде файла при рестарте.
Просто реализация с уровнями позволит решить проблему с тем что не нужно иметь баланс на полную абонплату.
А даже отдельный модуль скидок этого не решит.

Автор:  Cromeshnic [ 29 мар 2012, 13:39 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

Цитата:
Нужно завести табличку с cid,level и в NPay добавить обработку узлов "Уровень" по данным из этой таблицы.

+ date1, date2
Это уже есть и называется "Тарифные опции"
Цитата:
Просто реализация с уровнями позволит решить проблему с тем что не нужно иметь баланс на полную абонплату.

мм, значит я не понял, что вы предлагаете. Опишите подробнее схему начисления самой скидки в зависимости от уровня. Или вы вместо отдельной отрицательной услуги "скидка на услугу x" хотите просто уменьшать цену абонплаты x в зависимости от уровня? Так это и сейчас можно сделать через тарифные опции. Другое дело, что к опциям прилагается громоздкий hardcoded механизм активации/деактивации, и они все светятся в веб-статистике. Это дааа... :)

Автор:  afedorov [ 29 мар 2012, 17:31 ]
Заголовок сообщения:  Re: [feature] Реализация процентных скидок в BG

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

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