feat: Quota overage system, updated tier pricing, and communication addons
Quota Overage System: - Add QuotaOverage model for tracking resource/user quota overages - Implement 30-day grace period with email notifications (immediate, 7-day, 1-day) - Add QuotaWarningBanner component in BusinessLayout - Add QuotaSettings page for managing overages and archiving resources - Add Celery tasks for automated quota checks and expiration handling - Add quota management API endpoints Updated Tier Pricing (Stripe: 2.9% + $0.30): - Free: No payments (requires addon) - Starter: 4% + $0.40 - Professional: 3.5% + $0.35 - Business: 3.25% + $0.32 - Enterprise: 3% + $0.30 New Subscription Addons: - Online Payments ($5/mo + 5% + $0.50) - for Free tier - SMS Notifications ($10/mo) - enables SMS reminders - Masked Calling ($15/mo) - enables anonymous calling BusinessEditModal Improvements: - Increased width to match PlanModal (max-w-3xl) - Added all tier options with auto-update on tier change - Added limits configuration and permissions sections Backend Fixes: - Fixed SubscriptionPlan serializer to include all communication fields - Allow blank business_tier for addon plans - Added migration for business_tier field changes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -111,6 +111,16 @@ class SubscriptionPlanSerializer(serializers.ModelSerializer):
|
||||
'price_monthly', 'price_yearly', 'business_tier',
|
||||
'features', 'limits', 'permissions',
|
||||
'transaction_fee_percent', 'transaction_fee_fixed',
|
||||
# SMS & Communication Settings
|
||||
'sms_enabled', 'sms_price_per_message_cents',
|
||||
# Masked Calling Settings
|
||||
'masked_calling_enabled', 'masked_calling_price_per_minute_cents',
|
||||
# Proxy Number Settings
|
||||
'proxy_number_enabled', 'proxy_number_monthly_fee_cents',
|
||||
# Default Credit Settings
|
||||
'default_auto_reload_enabled', 'default_auto_reload_threshold_cents',
|
||||
'default_auto_reload_amount_cents',
|
||||
# Status flags
|
||||
'is_active', 'is_public', 'is_most_popular', 'show_price',
|
||||
'created_at', 'updated_at'
|
||||
]
|
||||
@@ -129,6 +139,16 @@ class SubscriptionPlanCreateSerializer(serializers.ModelSerializer):
|
||||
'price_monthly', 'price_yearly', 'business_tier',
|
||||
'features', 'limits', 'permissions',
|
||||
'transaction_fee_percent', 'transaction_fee_fixed',
|
||||
# SMS & Communication Settings
|
||||
'sms_enabled', 'sms_price_per_message_cents',
|
||||
# Masked Calling Settings
|
||||
'masked_calling_enabled', 'masked_calling_price_per_minute_cents',
|
||||
# Proxy Number Settings
|
||||
'proxy_number_enabled', 'proxy_number_monthly_fee_cents',
|
||||
# Default Credit Settings
|
||||
'default_auto_reload_enabled', 'default_auto_reload_threshold_cents',
|
||||
'default_auto_reload_amount_cents',
|
||||
# Status flags
|
||||
'is_active', 'is_public', 'is_most_popular', 'show_price',
|
||||
'create_stripe_product'
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user