2026-03-17 13:17:02 +08:00

31 lines
1.0 KiB
Python

# myapp/tasks.py
from .models import Subscription, TenantBilling
from django.utils import timezone
from datetime import timedelta
def generate_billing():
try:
# print("generate billing")
now = timezone.now()
subscriptions = Subscription.objects.filter(end_date__gte=now)
for subscription in subscriptions:
# 检查是否已经在这个周期生成了账单
if subscription.last_billed and subscription.last_billed > now - timedelta(days=30):
continue # 这个订阅的账单已经生成,跳过
# 生成新的账单
billing = TenantBilling(tenant=subscription.tenant, subscription=subscription)
billing.calculate_total_price()
# 更新上次账单生成日期
subscription.last_billed = now
subscription.save()
print("new generate billing")
return 'bill success'
except Exception as e:
# 记录异常
print(f"Task failed with error: {e}")
return None