|
скидки ... уф | ☑ | ||
---|---|---|---|---|
0
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 ) Написал .. че написал - не понял и чего спросить у вас, уважаемые , тоже .. я хоть все верно рассуждаю ? |
|||
1
lamme
11.09.19
✎
16:19
|
перечитал .. ах*ренел .. пошел чай выпью ..
|
|||
2
Про100Филя
11.09.19
✎
16:20
|
(0) Очень сложно... Тебе нужно складывать проценты(2 + 5 = 7)?
|
|||
3
lamme
11.09.19
✎
16:22
|
мне очень сильно не хочется передлывать мильен строк кода - еще и в универсальных модулях - в которых этот процент скидки мелькает как одно значение.
по факту= в итоге если есть сумма товара 1000, то после скидки в 5 и 2 - сумма со скидкой должна встать как 931 |
|||
4
Про100Филя
11.09.19
✎
16:22
|
Я допер кажись.
В четыре хода все делается: Вычесть 5% из числа 1000 = 950 Вычесть 2% из числа 950 = 931 Число 931 от числа 1000 = 93.1% И из 100% вычесть 93.1% = 6.9% |
|||
5
aleks_default
11.09.19
✎
16:24
|
"Чтобы все мильен мест не переделывать под новую логику пришла идея .. " - так в посте ты описал новую логику или старую?
|
|||
6
lamme
11.09.19
✎
16:24
|
(4)
это по документу так .. но для того чтобы 6,9 получить надо его в карточке товара рассчитать (при записи) - чтобы потом уже 6,9 подставлялось одним значением ) но в приницпе = тоже математика нормальная |
|||
7
lamme
11.09.19
✎
16:24
|
те в карточке товара у меня нет 1000р
есть новое значение скидки 5 и доп скидка 2 |
|||
8
aleks_default
11.09.19
✎
16:24
|
(4)Поздравляю!
|
|||
9
hhhh
11.09.19
✎
16:28
|
(6) фигня какая-то, а не математика. должно получиться 5+2 = 7. По любой логике. Потому что 2% нужно брать от 1000, а вы берете от 950. Это неправильно. И покупатеря на рубль надули.
|
|||
10
lamme
11.09.19
✎
16:30
|
(9)
да нету 7% есть скидки 5 и 2 и сначала берется скидка 5, потом уже 2 от того что получено так что все правильно. |
|||
11
_Дайвер_
11.09.19
✎
16:32
|
(10) сложи 2 и 5 и получишь 7
|
|||
12
hhhh
11.09.19
✎
16:33
|
(10) ну, хозяин-барин, если решили делать через ж.пу, то делайте
|
|||
13
lamme
11.09.19
✎
16:35
|
(11)
1000 - 7% и (1000-5)-2 - почему то разнятся. (12) это не через Ж это исторически в одно поле скидки записывали сумму нескольких скидок по разным условиям |
|||
14
Про100Филя
11.09.19
✎
16:37
|
(10) Математику прогуливал?
ЦенаБезСкидки = 1000; НачальнаяСкидка = 0.05; ДопСкидочка = 0.02; ПолученныйПроцент=(1-((ЦенаБезСкидки-(ЦенаБезСкидки*НачальнаяСкидка)-(ЦенаБезСкидки-(ЦенаБезСкидки*НачальнаяСкидка))*ДопСкидочка)/ЦенаБезСкидки))*100; //6.9 |
|||
15
Chum
11.09.19
✎
16:39
|
Для маркетологов в аду уже давно есть отдельный котел.
Додумались же разложить 7% скидки на 5% и 2%. И в результате имеет итоговую скидку в 6.9%. А главное, что и не обманули и обманули одновременно. Хоть копеечку, но в плюс. |
|||
16
lamme
11.09.19
✎
16:40
|
(15)
зачет .. поржали |
|||
17
lamme
11.09.19
✎
16:40
|
(14)
спасибо ) |
|||
18
Про100Филя
11.09.19
✎
16:42
|
(14) + это от руки не проверял, лучше сделать через рекурсию процедуру ВычестьПроцетыИзСуммы(Сумма, МассивПроцентов) глазу по приятнее воспринимать будет.
|
|||
19
lamme
11.09.19
✎
16:44
|
вот с рекурсией и проблема )
т.к. ДопСкидочка - это табличная часть с реквизитомТЧ = Скидка |
|||
20
Про100Филя
11.09.19
✎
16:53
|
(19) Она будет перебирать массив процентов, вычитая из суммы процент (Сумма-(Сумма*Процент)) и возвращать сумму с учетом вычета процента. Таким образом когда кончится массив, получиться сумма с учетом вычета всех процентов. Эту сумму от вычти от начальной чтобы получить процент (1-СуммаСУчетомВычетаПроцентов/НачальнаяСумма)*100
|
|||
21
lamme
11.09.19
✎
16:56
|
(20)
я логически это и пытаюсь сделать ) но , как обычно, не с первого раза |
|||
22
Про100Филя
11.09.19
✎
16:58
|
(21) Ну как то так получиться
.... СуммаСУчетомВычетаПроцентов = ВычестьПроцетыИзСуммы(НачальнаяСумма, МассивПроцентов); СуммаСУчетомВычетаПроцентов = (1-СуммаСУчетомВычетаПроцентов/НачальнаяСумма)*100; .... Функция ВычестьПроцетыИзСуммы(НачальнаяСумма, МассивПроцентов) //обходим массив вычитая процент из НачальнаяСумма //можно через рекурсию удаляя вычитаемый процент из массива, ну или например в цикле сделать... //Возврат Сумма которую получили КонецФункции |
|||
23
Kigo_Kigo
11.09.19
✎
17:01
|
У нас сегодня ация 5% скидки и у вас по карте 2%
что 7% -? нет 5 % и 2% это как? это 6.9! вот на эту копейку и живем с вас вместо 930 рублей, 931! отлично! и потом еже надо это все дело будет завернуть на ККТ, куда цена = СуммаСоВсемиСкидками/количество, а количество 3, тут начинается пляски с копейкой, веселуха! :))) |
|||
24
lamme
11.09.19
✎
17:02
|
Функция ВычестьПроцетыИзСуммы(НачальнаяСумма, МассивПроцентов)
для D=0 по МассивПроцентов.Количество()-1 цикл РасчитаннаяСумма = НачальнаяСумма - НачальнаяСумма*МассивПроцентов[D].Скидка/100; конеццикла; КонецФункции вот тут туплю т.к. не НачальнаяСумма надо подставлять. а уже рассчитанное значение |
|||
25
Chum
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%. |
|||
26
aleks_default
11.09.19
✎
17:22
|
(24)Там сумма вообще не нужна
|
|||
27
Salimbek
11.09.19
✎
17:22
|
(24) Смешно...
РасчитаннаяСумма = НачальнаяСумма; для D=0 по МассивПроцентов.Количество()-1 цикл РасчитаннаяСумма = РасчитаннаяСумма - РасчитаннаяСумма*МассивПроцентов[D].Скидка/100; конеццикла; |
|||
28
Сияющий в темноте
11.09.19
✎
17:51
|
обычно,если на товар скидка по акции,то скидка по карте и т.п. уже не действуют.
если у вас скидка на товар фиксированная,то просто храните цену со скидкой и ее же покупателю показывайте. во всех магазинах пишут на желтый ценник новую цену,часто и старую цену и реальный процент скидки,а как там оно расчитывается,покупателю не важно. |
|||
29
_Дайвер_
11.09.19
✎
17:55
|
(28) + выбирают максимальную скидку из нескольких вариантов скидок, а не суммируют их
|
|||
30
Salimbek
11.09.19
✎
21:19
|
(28) У нас есть одни такие - 10% скидка по спец.коду на телефон, и 10% скидка при оплате банковской картой. Т.е как раз случай из (0). При покупке товара за 100 руб. - после скидки по коду остается 90 руб. А потом, при оплате по карте, стоимость товара становится 81 руб.
|
|||
31
antgrom
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) рублей получится, если не ошибаюсь.
|
|||
34
Chum
12.09.19
✎
10:14
|
(33) высшая математика и современный одинэсник - понятия несовместимые
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |