""" Команда для создания упрощенных тарифных планов. Все функции доступны для каждого тарифа. """ 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('Создание упрощенных тарифных планов...') # Деактивируем все существующие тарифы SubscriptionPlan.objects.all().update(is_active=False) self.stdout.write('Деактивированы все существующие тарифы') # 1. ТАРИФ "ЗА УЧЕНИКА" - все функции доступны plan_per_student, created = SubscriptionPlan.objects.update_or_create( slug='per-student', defaults={ 'name': 'За ученика', 'description': 'Гибкая оплата за каждого ученика. Все функции доступны. Чем больше учеников, тем выгоднее цена.', 'price': Decimal('0'), 'price_per_student': Decimal('100'), 'currency': 'RUB', 'billing_period': 'monthly', 'subscription_type': 'per_student', 'trial_days': 7, 'max_clients': None, # Без ограничений 'max_lessons_per_month': None, # Безлимит 'max_storage_mb': 51200, # 50 GB 'max_video_minutes_per_month': None, # Безлимит # Все функции доступны 'allow_video_calls': True, 'allow_screen_sharing': True, 'allow_whiteboard': True, 'allow_homework': True, 'allow_materials': True, 'allow_analytics': True, 'allow_telegram_bot': True, 'allow_api_access': True, 'is_active': True, 'is_featured': True, 'sort_order': 1, } ) if created: self.stdout.write(self.style.SUCCESS(f'✓ Создан план: {plan_per_student.name}')) else: self.stdout.write(self.style.WARNING(f'⚠ Обновлен план: {plan_per_student.name}')) # Создаем прогрессирующие скидки для "За ученика" # 1-4 ученика: 100 руб за каждого (базовая цена) BulkDiscount.objects.update_or_create( plan=plan_per_student, min_students=1, max_students=4, defaults={'price_per_student': Decimal('100')} ) # 5-9 учеников: 84 руб за каждого (скидка 16%) BulkDiscount.objects.update_or_create( plan=plan_per_student, min_students=5, max_students=9, defaults={'price_per_student': Decimal('84')} ) # 10+ учеников: 80 руб за каждого (скидка 20%) BulkDiscount.objects.update_or_create( plan=plan_per_student, min_students=10, max_students=None, defaults={'price_per_student': Decimal('80')} ) self.stdout.write(self.style.SUCCESS(' ✓ Созданы прогрессирующие скидки')) # 2. ЕЖЕМЕСЯЧНАЯ ПОДПИСКА - все функции доступны, без ограничений по ученикам plan_monthly, created = SubscriptionPlan.objects.update_or_create( slug='monthly-unlimited', defaults={ 'name': 'Ежемесячная подписка', 'description': 'Ежемесячная подписка без ограничений по количеству учеников. Все функции доступны.', 'price': Decimal('1500'), 'price_per_student': None, 'currency': 'RUB', 'billing_period': 'monthly', 'subscription_type': 'monthly', 'trial_days': 7, 'max_clients': None, # Безлимит учеников 'max_lessons_per_month': None, # Безлимит занятий 'max_storage_mb': 51200, # 50 GB 'max_video_minutes_per_month': None, # Безлимит # Все функции доступны 'allow_video_calls': True, 'allow_screen_sharing': True, 'allow_whiteboard': True, 'allow_homework': True, 'allow_materials': True, 'allow_analytics': True, 'allow_telegram_bot': True, 'allow_api_access': True, 'is_active': True, 'is_featured': True, 'sort_order': 2, } ) if created: self.stdout.write(self.style.SUCCESS(f'✓ Создан план: {plan_monthly.name}')) else: self.stdout.write(self.style.WARNING(f'⚠ Обновлен план: {plan_monthly.name}')) self.stdout.write(self.style.SUCCESS('\n✓ Все тарифные планы созданы!')) self.stdout.write('\nСозданные тарифы:') self.stdout.write(' 1. За ученика - 100 руб/ученик (с прогрессирующими скидками)') self.stdout.write(' 2. Ежемесячная подписка - 1500 руб/мес (без ограничений)') self.stdout.write('\nВсе функции доступны для каждого тарифа!')