Auto-creates equity account for eligible users
Automatically creates a user-specific equity account when a user is granted equity eligibility. This simplifies the process of granting equity and ensures that each eligible user has a dedicated equity account.
This commit is contained in:
parent
88aaf0e28e
commit
988d7fdf20
1 changed files with 30 additions and 1 deletions
31
crud.py
31
crud.py
|
|
@ -979,7 +979,36 @@ async def create_or_update_user_equity_status(
|
|||
) -> "UserEquityStatus":
|
||||
"""Create or update user equity eligibility status"""
|
||||
from datetime import datetime
|
||||
from .models import UserEquityStatus
|
||||
from .models import UserEquityStatus, AccountType
|
||||
import uuid
|
||||
|
||||
# Auto-create user-specific equity account if granting eligibility
|
||||
if data.is_equity_eligible:
|
||||
# Generate equity account name: Equity:User-{user_id}
|
||||
equity_account_name = f"Equity:User-{data.user_id[:8]}"
|
||||
|
||||
# Check if the equity account already exists
|
||||
equity_account = await get_account_by_name(equity_account_name)
|
||||
|
||||
if not equity_account:
|
||||
# Create the user-specific equity account
|
||||
await db.execute(
|
||||
"""
|
||||
INSERT INTO accounts (id, name, account_type, description, user_id, created_at)
|
||||
VALUES (:id, :name, :type, :description, :user_id, :created_at)
|
||||
""",
|
||||
{
|
||||
"id": str(uuid.uuid4()),
|
||||
"name": equity_account_name,
|
||||
"type": AccountType.EQUITY.value,
|
||||
"description": f"Equity contributions for user {data.user_id[:8]}",
|
||||
"user_id": data.user_id,
|
||||
"created_at": datetime.now(),
|
||||
},
|
||||
)
|
||||
|
||||
# Auto-populate equity_account_name in the data
|
||||
data.equity_account_name = equity_account_name
|
||||
|
||||
# Check if user already has equity status
|
||||
existing = await get_user_equity_status(data.user_id)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue