- Gunicorn production server with auto-scaled workers, run.sh, updated systemd service - Marketplace B2B: cross-tenant inventory search, ordering, seller management with full UI - Subscription billing: plan limits enforced on products/employees/branches, billing API + upgrade flow Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -204,6 +204,23 @@ def create_item():
|
||||
if not branch_id:
|
||||
return jsonify({'error': 'branch_id required'}), 400
|
||||
|
||||
# Plan limit check
|
||||
from services.billing import check_limit, next_plan, PLANS, get_plan
|
||||
conn = get_tenant_conn(g.tenant_id)
|
||||
cur_count = conn.cursor()
|
||||
cur_count.execute("SELECT count(*) FROM inventory WHERE is_active = true")
|
||||
current_products = cur_count.fetchone()[0]
|
||||
cur_count.close()
|
||||
|
||||
allowed, limit, current = check_limit(g.tenant_id, 'max_products', current_products)
|
||||
if not allowed:
|
||||
conn.close()
|
||||
plan_key = get_plan(g.tenant_id)
|
||||
nxt = next_plan(plan_key)
|
||||
nxt_name = PLANS[nxt]['name'] if nxt else 'Enterprise'
|
||||
return jsonify({'error': f'Plan limit reached ({limit} products). Upgrade to {nxt_name}.'}), 403
|
||||
|
||||
conn.close()
|
||||
conn = get_tenant_conn(g.tenant_id)
|
||||
cur = conn.cursor()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user