habulaj commited on
Commit
b6aedf5
·
verified ·
1 Parent(s): 5a06dce

Update routes/stylist.py

Browse files
Files changed (1) hide show
  1. 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: