Skip to content

Commit 126c3db

Browse files
committed
Fix billing usage to count owned databases in SaaS mode
The billing usage (bills and bill_groups counts) was using accessible_databases instead of owned databases. In SaaS mode, this should count databases where owner_id matches the current user. Bump version to 3.2.10
1 parent 018eb7e commit 126c3db

3 files changed

Lines changed: 23 additions & 10 deletions

File tree

client/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "client",
33
"private": true,
4-
"version": "3.2.9",
4+
"version": "3.2.10",
55
"type": "module",
66
"scripts": {
77
"dev": "vite",

client/src/App.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ function App() {
309309
/>
310310
<Divider />
311311
<Text size="xs" c="dimmed" ta="center">
312-
BillManager v3.2.9 - Licensed under{' '}
312+
BillManager v3.2.10 - Licensed under{' '}
313313
<Anchor href="https://osaasy.dev/" target="_blank" size="xs">
314314
O'Saasy
315315
</Anchor>

server/app.py

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -298,14 +298,27 @@ def check_tier_limit(user, feature: str) -> tuple[bool, dict]:
298298

299299
# Count current usage
300300
if feature == 'bills':
301-
# Count active (non-archived) bills across all user's databases
301+
# Count active (non-archived) bills across user's databases
302302
from models import Bill
303-
used = Bill.query.join(Database).filter(
304-
Database.id.in_([db.id for db in user.accessible_databases]),
305-
Bill.archived == False
306-
).count()
303+
if is_saas():
304+
# In SaaS mode, count bills in databases owned by this user
305+
used = Bill.query.join(Database).filter(
306+
Database.owner_id == user.id,
307+
Bill.archived == False
308+
).count()
309+
else:
310+
# In self-hosted mode, count bills in accessible databases
311+
used = Bill.query.join(Database).filter(
312+
Database.id.in_([db.id for db in user.accessible_databases]),
313+
Bill.archived == False
314+
).count()
307315
elif feature == 'bill_groups':
308-
used = len(user.accessible_databases)
316+
# In SaaS mode, count databases owned by this user
317+
# In self-hosted mode, count databases accessible to this user
318+
if is_saas():
319+
used = Database.query.filter_by(owner_id=user.id).count()
320+
else:
321+
used = len(user.accessible_databases)
309322
elif feature == 'users':
310323
# For now, just return limit (user management is admin-level)
311324
used = 1
@@ -765,7 +778,7 @@ def process_auto_payments():
765778

766779
@api_bp.route('/api/version', methods=['GET'])
767780
def get_version():
768-
return jsonify({'version': '3.2.9', 'license': "O'Saasy", 'license_url': 'https://osaasy.dev/', 'features': ['enhanced_frequencies', 'auto_payments', 'postgresql_saas', 'row_tenancy']})
781+
return jsonify({'version': '3.2.10', 'license': "O'Saasy", 'license_url': 'https://osaasy.dev/', 'features': ['enhanced_frequencies', 'auto_payments', 'postgresql_saas', 'row_tenancy']})
769782

770783
@api_bp.route('/ping')
771784
def ping(): return jsonify({'status': 'ok'})
@@ -1926,7 +1939,7 @@ def jwt_get_version():
19261939
return jsonify({
19271940
'success': True,
19281941
'data': {
1929-
'version': '3.2.9',
1942+
'version': '3.2.10',
19301943
'api_version': 'v2',
19311944
'license': "O'Saasy",
19321945
'license_url': 'https://osaasy.dev/',

0 commit comments

Comments
 (0)