86 lines
4.0 KiB
Python
86 lines
4.0 KiB
Python
"""
|
||
Команда для обновления прогрессирующих скидок.
|
||
"""
|
||
from django.core.management.base import BaseCommand
|
||
from apps.subscriptions.models import SubscriptionPlan, BulkDiscount
|
||
from decimal import Decimal
|
||
|
||
|
||
class Command(BaseCommand):
|
||
help = 'Обновляет прогрессирующие скидки для планов "за ученика"'
|
||
|
||
def handle(self, *args, **options):
|
||
self.stdout.write('Обновление прогрессирующих скидок...')
|
||
|
||
# Обновляем скидки для "За ученика (Базовый)"
|
||
plan_basic = SubscriptionPlan.objects.filter(slug='per-student-basic').first()
|
||
if plan_basic:
|
||
# Удаляем старые скидки
|
||
BulkDiscount.objects.filter(plan=plan_basic).delete()
|
||
|
||
# Создаем новые правильные скидки
|
||
# 1-4 ученика: 100 руб за каждого
|
||
BulkDiscount.objects.create(
|
||
plan=plan_basic,
|
||
min_students=1,
|
||
max_students=4,
|
||
total_price=Decimal('100') # За 1 ученика
|
||
)
|
||
|
||
# 5-9 учеников: 84 руб за каждого (420 руб за 5)
|
||
BulkDiscount.objects.create(
|
||
plan=plan_basic,
|
||
min_students=5,
|
||
max_students=9,
|
||
total_price=Decimal('420') # За 5 учеников
|
||
)
|
||
|
||
# 10+ учеников: 80 руб за каждого (800 руб за 10) - еще больше скидка!
|
||
BulkDiscount.objects.create(
|
||
plan=plan_basic,
|
||
min_students=10,
|
||
max_students=None,
|
||
total_price=Decimal('800') # За 10 учеников (80 руб за каждого)
|
||
)
|
||
|
||
self.stdout.write(self.style.SUCCESS(f'✓ Обновлены скидки для: {plan_basic.name}'))
|
||
|
||
# Обновляем скидки для "За ученика (Премиум)"
|
||
plan_premium = SubscriptionPlan.objects.filter(slug='per-student-premium').first()
|
||
if plan_premium:
|
||
# Удаляем старые скидки
|
||
BulkDiscount.objects.filter(plan=plan_premium).delete()
|
||
|
||
# Создаем новые правильные скидки
|
||
# 1-4 ученика: 150 руб за каждого
|
||
BulkDiscount.objects.create(
|
||
plan=plan_premium,
|
||
min_students=1,
|
||
max_students=4,
|
||
total_price=Decimal('150') # За 1 ученика
|
||
)
|
||
|
||
# 5-9 учеников: 126 руб за каждого (630 руб за 5)
|
||
BulkDiscount.objects.create(
|
||
plan=plan_premium,
|
||
min_students=5,
|
||
max_students=9,
|
||
total_price=Decimal('630') # За 5 учеников
|
||
)
|
||
|
||
# 10+ учеников: 120 руб за каждого (1200 руб за 10) - еще больше скидка!
|
||
BulkDiscount.objects.create(
|
||
plan=plan_premium,
|
||
min_students=10,
|
||
max_students=None,
|
||
total_price=Decimal('1200') # За 10 учеников (120 руб за каждого)
|
||
)
|
||
|
||
self.stdout.write(self.style.SUCCESS(f'✓ Обновлены скидки для: {plan_premium.name}'))
|
||
|
||
self.stdout.write(self.style.SUCCESS('\n✓ Все прогрессирующие скидки обновлены!'))
|
||
self.stdout.write('\nНовые цены:')
|
||
self.stdout.write(' Базовый: 100 → 84 → 80 руб за ученика')
|
||
self.stdout.write(' Премиум: 150 → 126 → 120 руб за ученика')
|
||
|