diff --git a/app/services/monitoring_service.py b/app/services/monitoring_service.py index 00c32b67..c4d248d1 100644 --- a/app/services/monitoring_service.py +++ b/app/services/monitoring_service.py @@ -1092,6 +1092,56 @@ class MonitoringService: try: texts = get_texts(user.language) + # Рассчитываем минимальную цену за подписку с минимальной конфигурацией + from app.config import settings, PERIOD_PRICES + from app.utils.pricing_utils import apply_percentage_discount + + # Базовая цена за 30 дней + base_price_original = PERIOD_PRICES.get(30, settings.PRICE_30_DAYS) + + # Применяем скидку промогруппы для категории "period" + promo_group_discount = user.get_promo_discount("period", 30) if user else 0 + # Применяем пользовательскую промо-скидку (если есть) + user_discount_percent = self._get_user_promo_offer_discount_percent(user) + + # Общая скидка - максимальная из промогруппы и пользовательской + total_discount_percent = max(promo_group_discount, user_discount_percent) + + base_price, _ = apply_percentage_discount(base_price_original, total_discount_percent) + + # Добавляем цену за трафик (если фиксированный трафик включён) + if settings.is_traffic_fixed(): + traffic_price = settings.get_traffic_price(settings.get_fixed_traffic_limit()) + # Применяем скидки на трафик + traffic_discount = user.get_promo_discount("traffic", 30) if user else 0 + traffic_price, _ = apply_percentage_discount(traffic_price, traffic_discount) + else: + traffic_price = 0 # Трафик не фиксирован, цена включена в базовую + + # Добавляем цену за серверы (предполагаем минимум 1 сервер по минимальной цене) + # Вместо сложного запроса к БД, используем настройки + # Для минимальной конфигурации - один сервер с минимальной ценой + min_server_price = getattr(settings, 'MIN_SERVER_PRICE', 0) or 0 + if min_server_price == 0: + # Если нет явной минимальной цены, используем базовую цену + # В реальных условиях цена сервера будет определяться в ходе оформления подписки + min_server_price = 0 + + # Добавляем цену за устройства (если больше базового лимита) + # В минимальной конфигурации - базовый лимит, без доп. устройств + device_limit = settings.DEFAULT_DEVICE_LIMIT + additional_devices = max(0, device_limit - settings.DEFAULT_DEVICE_LIMIT) + devices_price = additional_devices * settings.PRICE_PER_DEVICE + + # Для простоты и правильной работы без обращения к БД, рассчитываем минимальную цену как: + # базовая цена + минимальная цена за трафик (если есть фиксированный) + min_server_price = 0 # для минимальной конфигурации с 1 сервером используем 0 или минимальную известную + + # Попробуем получить минимальную цену сервера из настроек или используем подходящее значение + # Находим минимальную возможную цену из возможных цен серверов + # В упрощенном варианте используем базовую конфигурацию: базовая цена + трафик + min_total_price = base_price + traffic_price + message = f""" 🎁 Тестовая подписка скоро закончится! @@ -1101,7 +1151,7 @@ class MonitoringService: Переходите на полную подписку! 🔥 Специальное предложение: -• 30 дней всего за {settings.format_price(settings.PRICE_30_DAYS)} +• 30 дней всего за {settings.format_price(min_total_price)} • Безлимитный трафик • Все серверы доступны • Скорость до 1ГБит/сек