94ed282381
MEDIUM fixes: - config: MAX_ACTIVE_SUBSCRIPTIONS=10 limit + check in tariff purchase - tariff_purchase: add_user_balance return check → _persist_failed_refund - tariff_purchase: promo restoration atomic with refund (commit=False) - purchase: handle_toggle_daily_subscription_pause multi-tariff guard - my_subscriptions: respect HIDE_SUBSCRIPTION_LINK setting - multi_tariff: delete_subscription uses actual_status - tariff_switch: guard against switching to already-owned tariff - monitoring: i18n button texts via texts.t() + per-subscription dedup - promo_offer_service: multi-tariff subscription resolution - bot.py: register DisplayNameRestrictionMiddleware + SubscriptionStatusMiddleware on pre_checkout_query - crud/user: add_user_balance accepts commit=False - crud/subscription: update_daily_charge_time refresh only on commit, autopay days_before preserved - daily_subscription: remove redundant outer commit in process_traffic_resets LOW fixes: - inline.py: remove dead get_subscription_expiring_keyboard function - promocode_service: current_uses +1 in response (post-increment) - yookassa: use already-resolved subscription for admin notification - subscription_utils: remove dead ensure_single_subscription + update_or_create_subscription - devices: merge identical daily/non-daily branches in confirm_change_devices