При настройке скидок и цен используется принцип группировок. Так для настройки скидок по строке все товары и клиенты делятся на группы – группы скидок по строке.

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

Для настройки общих скидок используются группы общих скидок, но они настраиваются только для клиентов, так как общая скидка не зависит от товарных позиций.

При этом группировки по каждому из видов скидок независимы друг от друга.

Скидки по строке

Скидки по строке могут быть определены для следующих разрезов данных:

§  Клиент - Товар

§  Клиент - Группа товаров

§  Клиент - Все товары

§  Группа клиентов - Товар

§  Группа клиентов - Группа товара

§  Группа клиентов - Все товары

§  Все клиенты - Товар

§  Все клиенты - Группа товаров

§  Все клиенты - Всех товары

При автоматическом поиске скидки система будет выполнять поиск начиная с разреза Клиент – Товар, и будет опускаться ниже до разреза Все клиенты - Все товары. В случае если для одной товарной позиции подходит несколько скидок, то данные по скидкам будут суммироваться.

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

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

      При настройке скидок, указывается диапазон дат, когда скидка будет действительной. Диапазоны дат могут быть пересекающимися, в случае если текущая дата попадает в диапазоны действия нескольких скидок, то данные по ним будут суммироваться.

Таким образом, для одной товарной позиции в заказе, может существовать  несколько скидок по строке. При этом в строку заказа будет перенесено суммарное значение по всем скидкам. Однако для каждой скидки есть параметр, который позволяет прекратить дальнейший поиск. В случае если при расчете скидки будет обнаружена такая настройка, то дальнейшее суммирование проводиться не будет.

Алгоритм поиска скидок по строке можно представить в виде дерева:

 

Алгоритм поиска скидок по строке в Dymanics AX

Поддеревья узлов Скидка настроена для группы клиентов и Скидка настроена для всех клиентов такие же, как у узла Скидка настроена для клиента.

           Количество в скидке минимально и меньше либо равно количеству в строке заказа -  если для текущей товарной позиции в заказе настроено несколько скидок, удовлетворяющих условиям предыдущих узлов, то система первоначально выберет ту скидку, у которой количественный критерий будет минимальным.

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

 Правила поиска:

1.      При поиске скидки по строке заказа система анализирует валюту заказа, единицу измерения, дату создания строки заказа. Из поиска сразу исключаются скидки, настройка которых не соответствует этим критериям.

2.      Для каждой скидки существует настройка (чек-бокс «Найти далее»), которая позволяет прекратить дальнейший поиск скидок. То есть, как только система обнаружит скидку с такой настройкой, поиск других скидок прекращается, даже если они и удовлетворяют текущей товарной позиции в заказе.

3.      В оставшемся множестве скидок система будет выполнять поиск,  начиная с ветки 1.1. Если правило 2 не выполнено (чек-боксы «Найти далее» активны), или скидки по ветке 1.1 не были найдены, то система продолжит поиск по ветке 1.2. и так далее, до ветки 3.3.

4.      Все найденные скидки суммируются

           

Пример:

Товары

Товар

Группа скидок по строке

Товар1

ГрТов1

Клиенты

Клиент

Группа скидок по строке

Клиент1

ГрКл1

Настройка скидок по строке

Связь клиента

Клиент

Связь товара

Товар

Дата С

Дата По

Кол-во

Скидка, %

Найти далее

1

Таблица

Клиент1

Таблица

Товар1

23.09.2005

30.09.2005

15

10

2

Таблица

Клиент1

Таблица

Товар1

21.09.2005

30.09.2005

10

8

3

Все

Группа

ГрТов1

20.09.2005

30.09.2005

10

6

4

Все

Все

10

4

Поле «№», не хранится в БД, и введено для упрощения дальнейшего описания примера. Считаем, что все скидки настроены в той же валюте, что и заказ и для тех же единиц измерения.

Создается заказ клиенту Клиент1, в котором есть следующая товарная позиция, которая создавалась 22.09.2005:

Товар

Количество

Цена

Скидка, %

Товар1

11

50

?

Первоначально система выберет скидку № 2, так как она находится в ветке 1.1, которая является самой приоритетной. Ссылка № 1  будет пропущена, так она не удовлетворяет количественному критерию. На данном этапе скидка по строке заказа будет равна 10%.

Так как для ссылки № 2 параметр «Найти далее» включен, то система продолжит поиск, и следующей будет выбрана скидка № 3, так как из оставшихся скидок она является наиболее приоритетной. Параметр «Найти далее» для данной скидки не активирован, как следствие система прекратит дальнейший поиск. Итоговая ссылка по строке заказа будет равна сумме скидок №1 и №3, т.е. 8 + 6 = 14 %.

Многострочные скидки

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

Пример:

В группу многострочных скидок входят две товарные позиции: А и В. В случае если количество в заказе превышает 10, то клиенту предоставляется скидка в размере 10%. Оформляем заказ не продажу, в котором имеется три товарных позиции: А – 7 шт., В – 5 шт., С – 11 шт. При расчете многострочной скидке будет анализироваться данные по позициям А и В, так как их суммарное количестве 7 + 5 = 12, больше 10, то к этим товарным позициям будет применена скидка в размере 10%. На товарную позицию С эта скидка распространятся не будет, так как он не входит в группу многострочных скидок.

Многострочные скидки могут быть определены для следующих разрезов данных:

§  Клиент - Группа товаров

§  Клиент - Все товары

§  Группа клиентов - Группа товара

§  Группа клиентов - Все товары

§  Все клиенты - Группа товаров

§  Все клиенты - Всех товары

При автоматическом поиске скидки система будет выполнять поиск начиная с разреза Клиент – Группа товаров, и будет опускаться ниже до разреза Все клиенты - Все товары. В случае если для одной товарной позиции подходит несколько скидок, то данные по скидкам будут суммироваться.

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

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

      При настройке скидок, указывается диапазон дат, когда скидка будет действительной. Диапазоны дат могут быть пересекающимися, в случае если текущая дата попадает в диапазоны действия нескольких скидок, то данные по ним будут суммироваться.

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

Алгоритм поиска многострочных скидок можно представить в виде дерева:

Алгоритм настройки многострочных скидок в Microsoft Dynamics AX

Поддеревья узлов Скидка настроена для группы клиентов и Скидка настроена для всех клиентов такие же, как у узла Скидка настроена для клиента.

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

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

Правила поиска:

1.      При поиске многострочных скидок система анализирует валюту заказа, единицу измерения, дату создания строки заказа. Из поиска сразу исключаются скидки, настройка которых не соответствует этим критериям.

2.      Для каждой скидки существует настройка (чек-бокс «Найти далее»), которая позволяет прекратить дальнейший поиск скидок. То есть, как только система обнаружит скидку с такой настройкой, поиск других скидок прекращается, даже если они и удовлетворяют текущим товарным позициям в заказе.

3.      В оставшемся множестве скидок система будет выполнять поиск,  начиная с ветки 1.1. Если правило 2 не выполнено (чек-боксы «Найти далее» активны), или скидки по ветке 1.1 не были найдены, то система продолжит поиск по ветке 1.2. и так далее, до ветки 3.2.

4.      Все найденные скидки суммируются

 

Пример:

Товары

Товар

Группа многострочных скидок

Товар1

ГрТов1

Товар2

ГрТов1

Клиенты

Клиент

Группа многострочных скидок

Клиент1

ГрКл1

Настройка многострочных скидок

Связь клиента

Клиент

Связь товара

Товар

Дата С

Дата По

Кол-во

Скидка, %

Найти далее

1

Таблица

Клиент1

Группа

ГрТов1

22.09.2005

30.09.2005

15

10

2

Группа

ГрКл1

Группа

ГрТов1

21.09.2005

30.09.2005

10

8

3

Все

Все

20.09.2005

30.09.2005

10

6

4

Все

Все

20

2

Поле «№», не хранится в БД, и введено для упрощения дальнейшего описания примера. Считаем, что все скидки настроены в той же валюте, что и заказ на продажу.

Создается заказ клиенту Клиент1, в котором есть следующие товарные позиции, которая создавалась 22.09.2005:

Товар

Количество

Цена

Скидка, %

Товар1

5

50

?

Товар2

6

45

?

Система будем рассматривать скидки в следующем порядке: №1, №2, №3, №4.

Скидка №1 учитываться не будет, так как она не удовлетворяет количественному критерию (5 + 6 < 15).

Скидка №2 будет учтена, так как она удовлетворяет всем критериям. Так как параметр «Найти далее» активен, то поиск будет продолжен.

Скидка №3 так же будет учтена, так как и она удовлетворит всем критериям, однако дальнейший поиск выполняться не будет, так как параметр «Найти далее» не активен.

В результате на строки заказа будет начислена суммарная скидка, состоящая из скидок  №2  и №3, равная 8 + 6 = 14%.

Общая скидка

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

§  Строка – будут использоваться только скидки по строке, а многострочные скидки учитываться не будут

§  Многострочная - будут использоваться только многострочные скидки, а скидка по строке учитываться не будут

§  Максимум (По строке, Многострочная) – будет учитываться максимальная

§  Минимум (По строке, Многострочная) - будет учитываться минимальная

§  По строке + Многострочная –скидки будут суммироваться между собой

§  По строке * Многострочная – скидки будут перемножаться между собой

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

При настройке общих скидок клиентов необходимо разделить на группы – группы общих скидок. Затем общую скидку можно задать для следующих разрезов данных:

§  Клиент

§  Группа клиентов

§  Все клиенты

При автоматическом поиске скидки система будет выполнять поиск начиная с разреза Клиент, затем перейдет к разрезу Группа, и в последнюю очередь рассмотрит разрез Все клиенты. В случае если для заказа подходит несколько скидок, то данные по скидкам будут суммироваться.

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

Кроме этого сумма общей скидки зависит от суммы заказа. При этом скидка будет применена к заказу, если сумма заказа превышает критерий Сумма в настройке общей скидки. При таком подходе к одному заказу могут быть применены несколько скидок, в таком случае данных по ним будут суммироваться.

При настройке скидок, указывается диапазон дат, когда скидка будет действительной. Диапазоны дат могут быть пересекающимися, в случае если текущая дата попадает в диапазоны действия нескольких скидок, то данные по ним будут суммироваться.

Таким образом, к одному заказа, может быть применено несколько общих скидок. При этом к заказу будет применено суммарное значение по всем скидкам. Однако для каждой скидки есть параметр, который позволяет прекратить дальнейший поиск. В случае если при расчете скидки будет обнаружена такая настройка, то дальнейшее суммирование проводиться не будет.

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

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

После того как все общие скидки по конкретному клиенту будут рассмотрены, система перейдет к поиску скидок настроенных для группы данного клиента, а затем и для скидок настроенных для всех клиентов. При этом принцип подбора  скидок согласно значению критерия «Сумма» и дате начала временного диапазона действия останется без изменений.

В случае если среди скидок будет обнаружена та, у которой параметр «Найти далее» не активен, то поиск скидок будет прекращен.

Пример:

Клиент

Клиент

Группа общих скидок

Клиент1

ГрКл1

Настройка общих скидок:

Связь клиента

Клиент

Дата С

Дата По

Сумма

Скидка, %

Найти далее

1

Таблица

Клиент1

22.09.2005

30.09.2005

150

10

2

Группа

ГрКл1

21.09.2005

30.09.2005

100

8

3

Группа

ГрКл1

20.09.2005

30.09.2005

100

6

4

Все

110

2

Поле «№», не хранится в БД, и введено для упрощения дальнейшего описания примера. Считаем, что все скидки настроены в руб.

Создаем заказ клиенту Клиент1 на сумму 150 руб. Дата создания заказа 23.09.2005.

Система будет рассматривать скидки в следующем порядке: №1, №3,№2,№4.

Все эти скидки удовлетворяют условиям данного заказа. Однако в системе будут учтены только скидки №1 и №3, так как на скидке №3 параметр «Найти далее» не активен, то на ней дальнейший поиск будет прекращен. Скидка №3 имеет более высокий приоритет по отношению к скидке №2, так как критерий «Сумма» у них одинаковый, а дата начала временного диапазона у скидки №3 более ранняя. В результате на данный заказ будет начислена скидка равная 10 + 6 = 16%.

 Автор Daiver