[TARIFFS_COMMISS]. Настройка тарифа, поле НЕ МЕНЬШЕ
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
korneev Профи
Вступление в Клуб: 02.07.2007
|
Вт Авг 14, 2007 13:51  [TARIFFS_COMMISS]. Настройка тарифа, поле НЕ МЕНЬШЕ |
|
Полезность: Нет оценки
|
Если галочка "Процент от суммы" стоит, то значения указанные в поля "Не меньше" и "Не больше" учитываются. Если же галочку "Процент от суммы" снять, то поля "Не меньше" и "Не больше" остаются активные и в них можно вводить все что угодно, но только в расчет они НЕ принимаются.
т.о. когда я указал:
"Ставка тарифа" = [НЕКИЙ_ПАРАМЕТР]*0.022
"Процент от суммы" = false
"Не больше" = 100
Тариф работал неправильно
Пришлось переписать
"Ставка тарифа" = greatest( [НЕКИЙ_ПАРАМЕТР]*0.022, 100)
"Процент от суммы" = false
В документации (Глава 1-06-1) сказано лишь:
Процент от суммы - если поле заполнено, то в поле "Ставка тарифа" указывается значение процента, если поле не заполнено, то в поле "Ставка тарифа" указывается абсолютное значение тарифа.
Ставка тарифа - значение процента или абсолютное значение тарифа
Не меньше - ограничение на сумму тарифа снизу
Не больше - ограничение на сумму тарифа сверху |
|
 |
Alex2019 Профи
Вступление в Клуб: 02.07.2007
|
Вт Авг 14, 2007 15:26  Re: [TARIFFS_COMMISS]. Настройка тарифа, поле НЕ МЕНЬШЕ |
|
Полезность: Нет оценки
|
korneev пишет: | Если же галочку "Процент от суммы" снять, то поля "Не меньше" и "Не больше" остаются активные и в них можно вводить все что угодно, но только в расчет они НЕ принимаются. |
Вообще-то принимаются. Простой пример: тариф (не процентный) равен 6. Если поля больше/меньше пустые, то комиссия по этому тарифу вычисляется 6 (что не удивительно ), если я ставлю 6, но не больше 4 - считается 4. Если 6, но не меньше 8 - считается 8. А вот если 6, но не меньше 8 и не больше 4, то - 4. Видимо, такой глупости разработчики не предусмотрели
korneev пишет: | т.о. когда я указал:
"Ставка тарифа" = [НЕКИЙ_ПАРАМЕТР]*0.022
"Процент от суммы" = false
"Не больше" = 100
Тариф работал неправильно
Пришлось переписать
"Ставка тарифа" = greatest( [НЕКИЙ_ПАРАМЕТР]*0.022, 100)
"Процент от суммы" = false |
В вашей первой нотации ограничение идет сверху (не больше), а в исправленной - снизу (пока вычисляемая величина меньше 100 будет возвращаться 100).
"Вы уж определитесь" (с)  |
|
 |
korneev Профи
Вступление в Клуб: 02.07.2007
|
Вт Авг 14, 2007 17:49  Re: [TARIFFS_COMMISS]. Настройка тарифа, поле НЕ МЕНЬШЕ |
|
Полезность: Нет оценки
|
Принимаются ??? Александр, у Вас какая версия? я на 7.4 пробую. А вы точно пробовали? В ЦФТ подтвердили мои слова, но предложили несоответствие переквалифицировать в доработку. |
|
 |
Alex2019 Профи
Вступление в Клуб: 02.07.2007
|
Вт Авг 14, 2007 17:50  Re: [TARIFFS_COMMISS]. Настройка тарифа, поле НЕ МЕНЬШЕ |
|
Полезность: Нет оценки
|
korneev пишет: | Принимаются ??? Александр, у Вас какая версия? я на 7.4 пробую. |
Аналогично!
Может дело в шаблоне?
ЦФТ согласилось? Удивительно! Естественно, пробовал, зачем бы мне вас обманывать Но пробовал без вычисляемого параметра. Кстати, почему вы не хотите этот параметр указать в качестве суммы шаблона, а тариф сделать процентным (2.2%)? |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Ср Авг 15, 2007 08:27   |
|
Полезность: Нет оценки
|
Коллеги! Позвольте мне вклиниться в Вашу беседу!
TARIFFS_COMMISS.COST_SERVICE
Код: | if not nvl(propyskat, false) -- если не пропускать проверку на минимум/максимум
and V#IT_PROC
then
if Tf_Cache.Minimum > 0 and cost_for_min_max < Tf_Cache.Minimum then
COST := Tf_Cache.Minimum;
-- если отработал минимум/максимум, то и валюта должна быть от тарифа
&set_calc_valuta;
elsif Tf_Cache.Maximum > 0 and cost_for_min_max > Tf_Cache.Maximum then
COST := Tf_Cache.Maximum;
&set_calc_valuta;
end if;
debug_info('Провели обычную проверку минимума/максимума');
--x elsif V#IT_PROC then -- [DVP-5b10]
else -- [DVP-5b15] Сохраняем мин/макс всегда. Для случая, если комиссия фиксированная, не проценты, и мы указали мин/макс (т.е. независимо от символов кассы должны брать одну сумму)
debug_info('Запоминаем минимум/максимум ('||Tf_Cache.Minimum||'/'||Tf_Cache.Maximum||')');
tMinSum := Tf_Cache.Minimum;
tMaxSum := Tf_Cache.Maximum;
-- !!! Валюты?...
end if; |
Отсюда видно, что в if попадаем, когда стоит признак процента, а в else, когда соответственно не стоит. Далее простым поиском по коду видно, что tMinSum и tMaxSum больше нигде не участвуют. Таким образом, в этой операции в эти переменные значения только записываются
Анализируются же они в BUSINESS_OP только при очень узком условии, которое связано с кассовыми символами.
Таким образом у ЦФТ универсальная ядерная функция оказалось тесно завязанной на реквизиты документа!!! А мы об этом не знаем!!!
И пользуемся этим...
Возможно именно поэтому у Alex2019 минимум срабатывает.
Предположу, что раньше все это с успехом работало, но именно после каких-то доработок, ссылки на которые в избытке присутствуют в коде, все так сильно изменилось не в лучшую сторону. |
|
 |
Alex2019 Профи
Вступление в Клуб: 02.07.2007
|
Ср Авг 15, 2007 09:28   |
|
Полезность: Нет оценки
|
Дмитрий, Вы совершенно правы. Я действительно взял первый попавшийся документ с комиссией, и он оказался кассовым...
А по кодам ползать поленился... Виноватый
Но "наезжать" на ЦФТ по поводу существующего алгоритма я бы не стал. Лимиты для фиксированного тарифа смотрятся, вообще говоря, нелогично. |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Ср Авг 15, 2007 09:37   |
|
Полезность: Нет оценки
|
Alex2019 пишет: | Но "наезжать" на ЦФТ по поводу существующего алгоритма я бы не стал. Лимиты для фиксированного тарифа смотрятся, вообще говоря, нелогично. |
1. "Наезжать" не буду, но заявка на несоответствие имеет право на существование. ЦФТ далее вправе выбрать: либо исправить доку, либо исправить код, чтобы лимиты анализировались.
2. Для фиксированного тарифа действительно нелогично, а вот для вычисляемого значения с разными сложными формулами - лимиты позволили бы сократить длину этой формулы. |
|
 |
Alex2019 Профи
Вступление в Клуб: 02.07.2007
|
Ср Авг 15, 2007 09:47   |
|
Полезность: Нет оценки
|
timochev пишет: | 1. "Наезжать" не буду, но заявка на несоответствие имеет право на существование. ЦФТ далее вправе выбрать: либо исправить доку, либо исправить код, чтобы лимиты анализировались. |
...тем более, что для некоторых документов это работает. Склонен согласиться. Можно только заметить, что иногда применяемый метод устранения несоответствия правкой документации, мягко говоря, не приветствуется.
timochev пишет: | 2. Для фиксированного тарифа действительно нелогично, а вот для вычисляемого значения с разными сложными формулами - лимиты позволили бы сократить длину этой формулы. |
Вероятно, да. Но тут есть хотя бы варианты: либо изобретать сложную формулу, либо производить вычисления в шаблоне, либо создать массив тарифов с вычисляемыми условиями |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Ср Авг 15, 2007 09:52   |
|
Полезность: Нет оценки
|
Alex2019 пишет: | Можно только заметить, что иногда применяемый метод устранения несоответствия правкой документации, мягко говоря, не приветствуется. |
Это уже зависит, у кого на что совести хватает  |
|
 |
korneev Профи
Вступление в Клуб: 02.07.2007
|
Ср Авг 15, 2007 11:45   |
|
Полезность: Нет оценки
|
Случай то довольно распространенный.
Комиссия за снятие наличных денежных средств:
если снятие наличных превышает 200 000 руб за месяц то 5%, иначе 3%, но не меньше 30 руб.
Александр! как бы вы настроили?? |
|
 |
Alex2019 Профи
Вступление в Клуб: 02.07.2007
|
Ср Авг 15, 2007 12:25   |
|
Полезность: Нет оценки
|
korneev пишет: | Комиссия за снятие наличных денежных средств:
если снятие наличных превышает 200 000 руб за месяц то 5%, иначе 3%, но не меньше 30 руб.
Александр! как бы вы настроили?? |
Скорее всего, настраивал бы "в лоб": в хуке RKO_CALC_PAR_1 нарисовал бы вычисляемый параметр <ВЫЧ_ПАР>, считающий выдачу за текущий месяц и возвращающий, например, '0', если выдача <=200000 и '1', если больше. А в тарифе (точнее, в массиве TARIF того тарифа, который указан в шаблоне комиссии) сделал бы 2 записи: первая - условие [ВЫЧ_ПАР]='1' и 5%, вторая [ВЫЧ_ПАР]='0' и 3% с ограничением по минимуму.
Если нужны детали - может быть проще директом? (или в аську) |
|
 |
korneev Профи
Вступление в Клуб: 02.07.2007
|
Ср Авг 15, 2007 13:03   |
|
Полезность: Нет оценки
|
если клиент уже обналичил 190 000 руб в текущем месяце
и хочет обналичить еще 30 000 руб, то
1) с 10 000 надо взять 3%
2) с 20 000 надо взять 5%
а при вашей настройке либо 3% со всей суммы, либо 5% |
|
 |
Alex2019 Профи
Вступление в Клуб: 02.07.2007
|
Ср Авг 15, 2007 13:35   |
|
Полезность: Нет оценки
|
korneev пишет: | и хочет обналичить еще 30 000 руб, то
1) с 10 000 надо взять 3%
2) с 20 000 надо взять 5% |
О как! И удержать эти 300+1000 одним комиссионным документом? Можно, конечно и такое настроить...
Например, сделать три шаблона. Первый, с условием [<ВЫЧ_ПАР>]+[ДЛЯ_КОМИСС_РКО]<=20000, суммой [ДЛЯ_КОМИСС_РКО] и прописать ему тариф 3% но не менее. Второй - с условием [<ВЫЧ_ПАР>]+[ДЛЯ_КОМИСС_РКО]>20000, суммой 20000-[<ВЫЧ_ПАР>] с тем же тарифом. И третий - с условием, как у второго, суммой [<ВЫЧ_ПАР>]+[ДЛЯ_КОМИСС_РКО]-20000 и тарифом 5%. При обработке они дадут один документ с итоговой суммой.
Но как-то оно... неэлегантно. Может проще все считать в вычисляемых? Ведь туда передается и договор, и документ. Пусть он вам вычисляет сумму комиссии, учитывает и предыдущую выдачу, и минимум, ее вставляете как фиксированную в тариф - и никаких ограничений не нужно.
Хотя, как было подмечено выше timochev, для кассовых документов ограничения работают (мы же говорим о снятии наличными, т.е. кассовой операции?), так что есть еще варианты  |
|
 |
korneev Профи
Вступление в Клуб: 02.07.2007
|
Чт Авг 16, 2007 10:53   |
|
Полезность: Нет оценки
|
Полагаю, что первый способ является стандартным для ЦФТ
Второй - неприемлем, потому что зачем тогда нужен механизм тарифов, если все считать программно в хуке?
Мы делаем так:
"Ставка тарифа" =
greatest([СУММА]-greatest(200000-[СУМ_ЗА_МЕСЯЦ],0), 0)*0.02+[СУММА]*0.03
а т.к. "Не меньше" не работает то
greatest(greatest([СУММА]-greatest(200000-[СУМ_ЗА_МЕСЯЦ],0), 0)*0.02+[СУММА]*0.03, 30) |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|