feat(discounts): добавлено комбинирование скидок по режимам
Добавлено поле combine_mode с тремя режимами: - stack - складывать с другими скидками - max_only - применять только максимальную - exclusive - отменяет все остальные скидки Изменения: - Модель Discount: добавлено поле combine_mode - Calculator: новый класс DiscountCombiner, методы возвращают списки скидок - Applier: создание нескольких DiscountApplication записей - Admin: отображение combine_mode с иконками - POS API: возвращает списки применённых скидок - POS UI: отображение нескольких скидок с иконками режимов Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -18,6 +18,12 @@ class BaseDiscount(models.Model):
|
||||
('category', 'На категорию товаров'),
|
||||
]
|
||||
|
||||
COMBINE_MODE_CHOICES = [
|
||||
('stack', 'Складывать (суммировать)'),
|
||||
('max_only', 'Только максимум'),
|
||||
('exclusive', 'Исключающая (отменяет остальные)'),
|
||||
]
|
||||
|
||||
name = models.CharField(
|
||||
max_length=200,
|
||||
verbose_name="Название скидки"
|
||||
|
||||
@@ -48,6 +48,15 @@ class Discount(BaseDiscount):
|
||||
help_text="Применяется автоматически при выполнении условий"
|
||||
)
|
||||
|
||||
# Режим объединения с другими скидками
|
||||
combine_mode = models.CharField(
|
||||
max_length=20,
|
||||
choices=BaseDiscount.COMBINE_MODE_CHOICES,
|
||||
default='max_only',
|
||||
verbose_name="Режим объединения",
|
||||
help_text="stack = суммировать с другими, max_only = применить максимальную, exclusive = отменить остальные"
|
||||
)
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Скидка"
|
||||
verbose_name_plural = "Скидки"
|
||||
|
||||
Reference in New Issue
Block a user