Вход | Регистрация
 

скидки ... уф

скидки ... уф
Я
   lamme
 
11.09.19 - 16:15
Логика работы документа по НАШИМ скидкам.
(нашим - имеется в виду - что , не типовые механизмы)
Есть реквизит товара = процент постоянной скидки.
На этот реквизит завязана куча расчетов. Причем такая афигенная куча расчетов - что просто пиндыр (((
Руководство решило - что этой скидки - мало и давай добавлять дохринилон ступенчатых скидок на этот товар (те еще ХЗ сколько скидок - и выражается это в виде табличной части карточки товара )
Для понимания. Есть товар ХХХХХХХ. У него основная скидка = 7%. Но, в этих 7% заложены 2 скидки ... Например, 5 и 2.
В итоге - в товаре вместо 7 (в поле основная скидка) будет написано 5 и в новом поле = 2.

По математике тут логично
1 000 - 7% <> (1000-5%)-2%
930 <> 931
-----------------------------
Это предистория.
Чтобы все мильен мест не переделывать под новую логику пришла идея ..

1000 = 100%
931 = Х%
итого Х = 6,9
т.е. 1000 - 6,9% = (1000-5%)-2%
т.е. сделать скрытое поле = которое будет зхаполняться автоматом - и все расчеты перерулить на это новое одно поле .


Собственно- а как математически можно выйти на это 6,9%, если известны только начальные значения скидок в 5 и 2 .

(пока писал подумал .. так и расчитывать = как описал .. т.е. берем  сумму дохринилон и с ней работаем, чтобы определить эту скидку. Число знаков после зпт ставим 256 )

Написал .. че написал - не понял
и чего спросить у вас, уважаемые , тоже ..

я хоть все верно рассуждаю ?
 
 
   lamme
 
1 - 11.09.19 - 16:19
перечитал .. ах*ренел .. пошел чай выпью ..
   Про100Филя
 
2 - 11.09.19 - 16:20
(0) Очень сложно... Тебе нужно складывать проценты(2 + 5 = 7)?
   lamme
 
3 - 11.09.19 - 16:22
мне очень сильно не хочется передлывать мильен строк кода - еще и в универсальных модулях - в которых этот процент скидки мелькает как одно значение.

по факту=  в итоге
если есть сумма товара 1000, то после скидки в 5 и 2 - сумма со скидкой должна встать как 931
   Про100Филя
 
4 - 11.09.19 - 16:22
Я допер кажись.
В четыре хода все делается:
Вычесть 5% из числа 1000 = 950
Вычесть 2% из числа 950 = 931
Число 931 от числа 1000 = 93.1%
И из 100% вычесть 93.1% = 6.9%
   aleks_default
 
5 - 11.09.19 - 16:24
"Чтобы все мильен мест не переделывать под новую логику пришла идея .. " - так в посте ты описал новую логику или старую?
   lamme
 
6 - 11.09.19 - 16:24
(4)
это по документу так ..
но для того чтобы 6,9 получить
надо его в карточке товара рассчитать (при записи) - чтобы потом уже 6,9 подставлялось одним значением
)

но в приницпе = тоже математика нормальная
   lamme
 
7 - 11.09.19 - 16:24
те в карточке товара у меня нет 1000р
есть новое значение скидки 5 и доп скидка 2
   aleks_default
 
8 - 11.09.19 - 16:24
(4)Поздравляю!
   hhhh
 
9 - 11.09.19 - 16:28
(6) фигня какая-то, а не математика. должно получиться 5+2 = 7. По любой логике. Потому что 2% нужно брать от 1000, а вы берете от 950. Это неправильно. И покупатеря на рубль надули.
   lamme
 
10 - 11.09.19 - 16:30
(9)
да нету 7%
есть скидки 5 и 2
и сначала берется скидка 5, потом уже 2 от того что получено

так что все правильно.
   _Дайвер_
 
11 - 11.09.19 - 16:32
(10) сложи 2 и 5 и получишь 7
   hhhh
 
12 - 11.09.19 - 16:33
(10) ну, хозяин-барин, если решили делать через ж.пу, то делайте
   lamme
 
13 - 11.09.19 - 16:35
(11)
1000 - 7% и (1000-5)-2 - почему то разнятся.


(12)
это не через Ж
это исторически в одно поле скидки записывали сумму нескольких скидок по разным условиям
   Про100Филя
 
14 - 11.09.19 - 16:37
(10) Математику прогуливал?
ЦенаБезСкидки   = 1000;
НачальнаяСкидка = 0.05;
ДопСкидочка     = 0.02;
ПолученныйПроцент=(1-((ЦенаБезСкидки-(ЦенаБезСкидки*НачальнаяСкидка)-(ЦенаБезСкидки-(ЦенаБезСкидки*НачальнаяСкидка))*ДопСкидочка)/ЦенаБезСкидки))*100;//6.9
   Chum
 
15 - 11.09.19 - 16:39
Для маркетологов в аду уже давно есть отдельный котел.
Додумались же разложить 7% скидки на 5% и 2%. И в результате имеет итоговую скидку в 6.9%. А главное, что и не обманули и обманули одновременно.

Хоть копеечку, но в плюс.
   lamme
 
16 - 11.09.19 - 16:40
(15)
зачет .. поржали
   lamme
 
17 - 11.09.19 - 16:40
(14)
спасибо  )
   Про100Филя
 
18 - 11.09.19 - 16:42
(14) + это от руки не проверял, лучше сделать через рекурсию процедуру ВычестьПроцетыИзСуммы(Сумма, МассивПроцентов) глазу по приятнее воспринимать будет.
   lamme
 
19 - 11.09.19 - 16:44
вот с рекурсией и проблема )

т.к. ДопСкидочка - это табличная часть с реквизитомТЧ = Скидка
   Про100Филя
 
20 - 11.09.19 - 16:53
(19) Она будет перебирать массив процентов, вычитая из суммы процент (Сумма-(Сумма*Процент)) и возвращать сумму с учетом вычета процента. Таким образом когда кончится массив, получиться сумма с учетом вычета всех процентов. Эту сумму от вычти от начальной чтобы получить процент (1-СуммаСУчетомВычетаПроцентов/НачальнаяСумма)*100
   lamme
 
21 - 11.09.19 - 16:56
(20)
я логически это и пытаюсь сделать )
но , как обычно, не с первого раза
   Про100Филя
 
22 - 11.09.19 - 16:58
(21) Ну как то так получиться

....
СуммаСУчетомВычетаПроцентов = ВычестьПроцетыИзСуммы(НачальнаяСумма, МассивПроцентов);
СуммаСУчетомВычетаПроцентов = (1-СуммаСУчетомВычетаПроцентов/НачальнаяСумма)*100;
....

Функция ВычестьПроцетыИзСуммы(НачальнаяСумма, МассивПроцентов)
//обходим массив вычитая процент из НачальнаяСумма

//можно через рекурсию удаляя вычитаемый процент из массива, ну или например в цикле сделать...
//Возврат Сумма которую получили

КонецФункции
   Kigo_Kigo
 
23 - 11.09.19 - 17:01
У нас сегодня ация 5% скидки и у вас по карте 2%
что 7% -?
нет 5 % и 2%
это как?
это 6.9!
вот на эту копейку и живем с вас вместо 930 рублей, 931!

отлично!

и потом еже надо это все дело будет завернуть на ККТ, куда цена = СуммаСоВсемиСкидками/количество, а количество 3, тут начинается пляски с копейкой, веселуха! :)))
   lamme
 
24 - 11.09.19 - 17:02
Функция ВычестьПроцетыИзСуммы(НачальнаяСумма, МассивПроцентов)

для D=0 по МассивПроцентов.Количество()-1 цикл
РасчитаннаяСумма = НачальнаяСумма - НачальнаяСумма*МассивПроцентов[D].Скидка/100;
конеццикла;


КонецФункции

вот тут туплю
т.к. не НачальнаяСумма надо подставлять. а уже рассчитанное значение
   Chum
 
25 - 11.09.19 - 17:04
(16) Чувак, я тут для ваших маркетологов придумал простенькую схему предоставления скидки, а для тебя не менее простую схему подсчета итоговой цены.

Смотри, разделять 7% на 2% и 5% это прикольно, но не круто. Круто любую скидку давать с шагом в 1%. И тогда контора экономит не 1 рубль с тысячи (как в примере в (0)), а 2 (ДВА) рубля и 7 копеек! Зацени:

    1 000,00 (розница)
1%    990,00
1%    980,10
1%    970,30
1%    960,60
1%    950,99
1%    941,48
1%    932,07 (с учетом скидки в 7%)
____
7%

А считать скидку вообще элементарно - в цикле уменьшаешь цену от предыдущей на 1%.
   aleks_default
 
26 - 11.09.19 - 17:22
(24)Там сумма вообще не нужна
   Salimbek
 
27 - 11.09.19 - 17:22
(24) Смешно...

РасчитаннаяСумма = НачальнаяСумма;
для D=0 по МассивПроцентов.Количество()-1 цикл
   РасчитаннаяСумма = РасчитаннаяСумма - РасчитаннаяСумма*МассивПроцентов[D].Скидка/100;
конеццикла;
   Сияющий в темноте
 
28 - 11.09.19 - 17:51
обычно,если на товар скидка по акции,то скидка по карте и т.п. уже не действуют.
если у вас скидка на товар фиксированная,то просто храните цену со скидкой и ее же покупателю показывайте.
во всех магазинах пишут на желтый ценник новую цену,часто и старую цену и реальный процент скидки,а как там оно расчитывается,покупателю не важно.
   _Дайвер_
 
29 - 11.09.19 - 17:55
(28) + выбирают максимальную скидку из нескольких вариантов скидок, а не суммируют их
   Salimbek
 
30 - 11.09.19 - 21:19
(28) У нас есть одни такие - 10% скидка по спец.коду на телефон, и 10% скидка при оплате банковской картой. Т.е как раз случай из (0). При покупке товара за 100 руб. - после скидки по коду остается 90 руб. А потом, при оплате по карте, стоимость товара становится 81 руб.
 
 
   antgrom
 
31 - 11.09.19 - 21:43
(0) одно из решений вашей проблемы - одна процедура получения цены и одна процедура получения скидки.
На вход процедур - параметры (номенклатура, клиент магазин и по) и параметры влияющие на скидку (день , клиент и по) на выходе - цена и её скидка.
   Михаил Козлов
 
32 - 11.09.19 - 22:14
Все не дочитал: скидка = 1-0,95*0,98 = 0,069.
В общем случае: скидка = 1-ПРОИЗВЕДЕНИЕ(по I) (1-строка скидки[i])
   тарам пам пам
 
33 - 12.09.19 - 10:08
(25) Надо сразу брать предел при бескончено малом приращении скидки. Там тогда e  (~2,71) рублей получится, если не ошибаюсь.
   Chum
 
34 - 12.09.19 - 10:14
(33) высшая математика и современный одинэсник - понятия несовместимые


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.