diff --git a/tools/monthlyrevenue.py b/tools/monthlyrevenue.py index 52fc8bff6..afd337593 100644 --- a/tools/monthlyrevenue.py +++ b/tools/monthlyrevenue.py @@ -1,34 +1,43 @@ -from app import stripe +from app import billing from collections import defaultdict -EXCLUDE_CID = {'cus_2iVlmwz8CpHgOj'} - offset = 0 -total_monthly_revenue = 0 def empty_tuple(): return (0, 0) plan_revenue = defaultdict(empty_tuple) -batch = stripe.Customer.all(count=100, offset=offset) +batch = billing.Customer.all(count=100, offset=offset) while batch.data: for cust in batch.data: - if cust.id not in EXCLUDE_CID and cust.subscription: + if cust.subscription: sub = cust.subscription - total_monthly_revenue += sub.plan.amount * sub.quantity + total_customer_revenue = sub.plan.amount * sub.quantity + + if cust.discount and cust.discount.coupon: + coupon = cust.discount.coupon + + if coupon.percent_off: + total_customer_revenue *= (1 - coupon.percent_off/100.0) + + if coupon.amount_off: + total_customer_revenue -= coupon.amount_off + subscribers, revenue = plan_revenue[sub.plan.id] plan_revenue[sub.plan.id] = (subscribers + 1, - revenue + sub.plan.amount * sub.quantity) + revenue + total_customer_revenue) offset += len(batch.data) - batch = stripe.Customer.all(count=100, offset=offset) + batch = billing.Customer.all(count=100, offset=offset) def format_money(total_cents): dollars = total_cents / 100 cents = total_cents % 100 return dollars, cents +total_monthly_revenue = 0 for plan_id, (subs, rev) in plan_revenue.items(): + total_monthly_revenue += rev d, c = format_money(rev) print '%s: $%d.%02d(%s)' % (plan_id, d, c, subs)