fix(billing): complete billing module — fix tier change, platform support, merchant portal
- Fix admin tier change: resolve tier_code→tier_id in update_subscription(), delegate to billing_service.change_tier() for Stripe-connected subs - Add platform support to admin tiers page: platform column, filter dropdown, platform selector in create/edit modal, platform_name in tier API response - Filter used platforms in create subscription modal on merchant detail page - Enrich merchant portal API responses with tier code, tier_name, platform_name - Add eager-load of platform relationship in get_merchant_subscription() - Remove stale store_name/store_code references from merchant templates - Add merchant tier change endpoint (POST /change-tier) and tier selector UI replacing broken requestUpgrade() button - Fix subscription detail link to use platform_id instead of sub.id Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -156,11 +156,16 @@ function adminMerchantDetail() {
|
||||
}
|
||||
},
|
||||
|
||||
// Open create subscription modal
|
||||
// Open create subscription modal (only show platforms without existing subscriptions)
|
||||
async openCreateSubscriptionModal() {
|
||||
const firstPlatformId = this.platforms.length > 0 ? this.platforms[0].id : null;
|
||||
this.createForm = { platform_id: firstPlatformId, tier_code: 'essential', status: 'trial', trial_days: 14, is_annual: false };
|
||||
await this.loadTiers(firstPlatformId);
|
||||
const usedPlatformIds = this.subscriptions.map(e => e.platform_id);
|
||||
const available = this.platforms.filter(p => !usedPlatformIds.includes(p.id));
|
||||
if (available.length === 0) {
|
||||
Utils.showToast('All platforms already have subscriptions', 'info');
|
||||
return;
|
||||
}
|
||||
this.createForm = { platform_id: available[0].id, tier_code: 'essential', status: 'trial', trial_days: 14, is_annual: false };
|
||||
await this.loadTiers(available[0].id);
|
||||
this.showCreateSubscriptionModal = true;
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user