uchill/backend/apps/subscriptions/management/commands/update_bulk_discounts.py

86 lines
4.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
Команда для обновления прогрессирующих скидок.
"""
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 руб за ученика')