00 Add currency conversion utilities and update models for GTQ handling: Introduced currency conversion functions for GTQ and centavos, updated API and database models to handle GTQ amounts directly, and modified API endpoints to streamline deposit and balance summary responses. Adjusted frontend to reflect changes in currency representation, ensuring consistency across the application.

This commit is contained in:
padreug 2025-07-05 23:38:23 +02:00
parent 7b40fcef21
commit aa71321c84
5 changed files with 127 additions and 30 deletions

View file

@ -34,8 +34,30 @@ class UpdateDcaClientData(BaseModel):
status: Optional[str] = None
# Deposit Models
# API Models for Deposits (Frontend <-> Backend communication)
class CreateDepositAPI(BaseModel):
"""API model - frontend sends GTQ amounts"""
client_id: str
amount_gtq: float # Amount in GTQ (e.g., 150.75)
currency: str = "GTQ"
notes: Optional[str] = None
class DepositAPI(BaseModel):
"""API model - backend returns GTQ amounts"""
id: str
client_id: str
amount_gtq: float # Amount in GTQ (e.g., 150.75)
currency: str
status: str # 'pending' or 'confirmed'
notes: Optional[str]
created_at: datetime
confirmed_at: Optional[datetime]
# Database Models for Deposits (Internal storage in centavos)
class CreateDepositData(BaseModel):
"""Internal model - database stores centavos"""
client_id: str
amount: int # Amount in smallest currency unit (centavos for GTQ)
currency: str = "GTQ"
@ -43,6 +65,7 @@ class CreateDepositData(BaseModel):
class DcaDeposit(BaseModel):
"""Internal model - database stores centavos"""
id: str
client_id: str
amount: int
@ -84,8 +107,19 @@ class DcaPayment(BaseModel):
transaction_time: Optional[datetime] = None # Original ATM transaction time
# Client Balance Summary
# API Models for Client Balance Summary
class ClientBalanceSummaryAPI(BaseModel):
"""API model - returns GTQ amounts"""
client_id: str
total_deposits_gtq: float # Total confirmed deposits in GTQ
total_payments_gtq: float # Total payments made in GTQ
remaining_balance_gtq: float # Available balance for DCA in GTQ
currency: str
# Internal Models for Client Balance Summary
class ClientBalanceSummary(BaseModel):
"""Internal model - stores centavos"""
client_id: str
total_deposits: int # Total confirmed deposits
total_payments: int # Total payments made