Update routes/stylist.py
Browse files- routes/stylist.py +53 -0
routes/stylist.py
CHANGED
@@ -58,6 +58,55 @@ def get_account_balance(account_id: str) -> Dict[str, Any]:
|
|
58 |
logger.error(f"❌ Error getting account balance: {str(e)}")
|
59 |
return {"available_balance": 0, "pending_balance": 0, "currency": "BRL"}
|
60 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
def get_monthly_revenue(account_id: str) -> Dict[str, Any]:
|
62 |
ny_timezone = pytz.timezone('America/New_York')
|
63 |
now_ny = datetime.now(ny_timezone)
|
@@ -203,6 +252,9 @@ def get_dashboard(user_token: str = Header(None, alias="User-key"), page: int =
|
|
203 |
# Obter dados de receita mensal e total dos últimos 6 meses
|
204 |
revenue_data = get_monthly_revenue(stripe_id)
|
205 |
|
|
|
|
|
|
|
206 |
return {
|
207 |
"stripe_id": stripe_id,
|
208 |
"available_balance": get_account_balance(stripe_id),
|
@@ -210,6 +262,7 @@ def get_dashboard(user_token: str = Header(None, alias="User-key"), page: int =
|
|
210 |
"total_revenue_last_6_months": revenue_data["total_last_6_months"],
|
211 |
"total_followers": get_total_followers(user_id),
|
212 |
"total_subscribers": get_total_subscribers(user_id),
|
|
|
213 |
**get_active_subscribers(user_id, page)
|
214 |
}
|
215 |
except Exception as e:
|
|
|
58 |
logger.error(f"❌ Error getting account balance: {str(e)}")
|
59 |
return {"available_balance": 0, "pending_balance": 0, "currency": "BRL"}
|
60 |
|
61 |
+
def get_connected_account_details(account_id: str) -> Dict[str, Any]:
|
62 |
+
try:
|
63 |
+
account = stripe.Account.retrieve(account_id)
|
64 |
+
external_accounts = stripe.Account.list_external_accounts(
|
65 |
+
account_id,
|
66 |
+
object="bank_account",
|
67 |
+
limit=1
|
68 |
+
)
|
69 |
+
|
70 |
+
payout_schedule = account.settings.payouts.schedule
|
71 |
+
|
72 |
+
bank_account = {}
|
73 |
+
if external_accounts and external_accounts.data:
|
74 |
+
bank = external_accounts.data[0]
|
75 |
+
bank_account = {
|
76 |
+
"account_holder_name": bank.account_holder_name,
|
77 |
+
"bank_name": bank.bank_name,
|
78 |
+
"last4": bank.last4,
|
79 |
+
"routing_number": bank.routing_number,
|
80 |
+
"status": bank.status
|
81 |
+
}
|
82 |
+
|
83 |
+
return {
|
84 |
+
"id": account.id,
|
85 |
+
"business_type": account.business_type,
|
86 |
+
"company": {
|
87 |
+
"name": account.business_profile.name if hasattr(account, 'business_profile') and hasattr(account.business_profile, 'name') else None,
|
88 |
+
},
|
89 |
+
"email": account.email,
|
90 |
+
"payouts_enabled": account.payouts_enabled,
|
91 |
+
"charges_enabled": account.charges_enabled,
|
92 |
+
"payout_schedule": {
|
93 |
+
"interval": payout_schedule.interval,
|
94 |
+
"monthly_anchor": payout_schedule.monthly_anchor if hasattr(payout_schedule, 'monthly_anchor') else None,
|
95 |
+
"weekly_anchor": payout_schedule.weekly_anchor if hasattr(payout_schedule, 'weekly_anchor') else None,
|
96 |
+
"delay_days": payout_schedule.delay_days
|
97 |
+
},
|
98 |
+
"bank_account": bank_account,
|
99 |
+
"verification_status": account.requirements.currently_due or []
|
100 |
+
}
|
101 |
+
except Exception as e:
|
102 |
+
logger.error(f"❌ Error getting connected account details: {str(e)}")
|
103 |
+
return {
|
104 |
+
"id": account_id,
|
105 |
+
"payouts_enabled": False,
|
106 |
+
"charges_enabled": False,
|
107 |
+
"error": str(e)
|
108 |
+
}
|
109 |
+
|
110 |
def get_monthly_revenue(account_id: str) -> Dict[str, Any]:
|
111 |
ny_timezone = pytz.timezone('America/New_York')
|
112 |
now_ny = datetime.now(ny_timezone)
|
|
|
252 |
# Obter dados de receita mensal e total dos últimos 6 meses
|
253 |
revenue_data = get_monthly_revenue(stripe_id)
|
254 |
|
255 |
+
# Obter detalhes da conta conectada
|
256 |
+
account_details = get_connected_account_details(stripe_id)
|
257 |
+
|
258 |
return {
|
259 |
"stripe_id": stripe_id,
|
260 |
"available_balance": get_account_balance(stripe_id),
|
|
|
262 |
"total_revenue_last_6_months": revenue_data["total_last_6_months"],
|
263 |
"total_followers": get_total_followers(user_id),
|
264 |
"total_subscribers": get_total_subscribers(user_id),
|
265 |
+
"account_details": account_details,
|
266 |
**get_active_subscribers(user_id, page)
|
267 |
}
|
268 |
except Exception as e:
|