Внедрение скидки - PullRequest
       7

Внедрение скидки

1 голос
/ 25 августа 2009

Классический сценарий, где в заказе есть строки заказа.

Клиент хочет иметь возможность применить скидку ко всему заказу, то есть фиксированную сумму или процент.

Как лучше всего это реализовать?

Я думаю о сохранении двух полей в объекте заказа:

  • Скидка фиксированной суммы
  • Процент скидки

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

Предостережения, советы, лучшие практики?

Ответы [ 3 ]

2 голосов
/ 25 августа 2009

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

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

2 голосов
/ 25 августа 2009

Взгляните на использование чего-то вроде составного шаблона.

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

1 голос
/ 25 августа 2009

Вы думали добавить бонусы ко всем строкам заказа. Если нет скидки - это нулевая скидка. Любая скидка может быть добавлена.

Шаблон, который вы должны использовать в этом случае, зависит от того, как вы собираетесь использовать скидки. Если разовая скидка на заказ - стратегия очень удачная.

Если бонусы могут работать друг с другом (бонус для первой покупки, 10000 клиентов и дисконтная карта), вы должны смотреть на декоратора иначе, чем вам придется применять столько же стратегий, сколько комбинация бонусов.

...