78f963bf5e
- 100% discount: daily tariff fallback to smallest configured period discount - 100% discount: purchase blocked by safety guard (base_price → original_total in 6 guards) - Gift subscription reset existing days (replace → extend for active/trial subs) - Cabinet broadcast: target alias active_subscribers not mapped to active - Promo code: error always "expired" — split into inactive/not_yet_valid/expired - Multi-tariff: add delete subscription button in admin bot - Multi-tariff → single: select subscription with most remaining time (end_date DESC) - Gift purchases not counted in total spent (added GIFT_PAYMENT type) - Remnawave API: retry on 502/503/504 (was only 429) - Heleket: add from_referral_code to invoice payload - Whitespace fix in blacklist_service