Subir archivos a "/"

This commit is contained in:
2025-12-23 16:54:07 +00:00
commit b02694d9ff
222 changed files with 17869 additions and 0 deletions

64
cliente.py Normal file
View File

@@ -0,0 +1,64 @@
from pydantic import BaseModel, EmailStr, Field
from typing import Optional
from datetime import datetime
from app.models.enums import EstadoCliente
class ClienteBase(BaseModel):
nombre: str = Field(..., min_length=1, max_length=255)
email: EmailStr
rfc: Optional[str] = Field(None, max_length=13)
telefono: Optional[str] = Field(None, max_length=20)
permite_subclientes: bool = True
class ClienteCreate(ClienteBase):
limite_timbres: int = Field(0, ge=0)
class ClienteUpdate(BaseModel):
nombre: Optional[str] = Field(None, min_length=1, max_length=255)
email: Optional[EmailStr] = None
rfc: Optional[str] = Field(None, max_length=13)
telefono: Optional[str] = Field(None, max_length=20)
limite_timbres: Optional[int] = Field(None, ge=0)
estado: Optional[EstadoCliente] = None
permite_subclientes: Optional[bool] = None
class ClienteResponse(ClienteBase):
id: int
timbres_consumidos: int
estado: EstadoCliente
created_at: datetime
updated_at: Optional[datetime]
# Campos calculados dinámicamente
limite_timbres: Optional[int] = None
timbres_disponibles: Optional[int] = None
class Config:
from_attributes = True
class ClienteWithStats(ClienteResponse):
total_subclientes: int = 0
timbres_consumidos_subclientes: int = 0
total_limites_asignados: int = 0
class BalanceResponse(BaseModel):
cliente_id: int
nombre_cliente: str
limite_timbres: int
timbres_disponibles: int
timbres_consumidos: int
porcentaje_uso: float
total_subclientes: int = 0
timbres_consumidos_subclientes: int = 0
class RecargaTimbreCreate(BaseModel):
"""Schema específico para recargar timbres"""
cantidad: int = Field(..., gt=0)
descripcion: Optional[str] = Field(None, max_length=500)