groupe-meditation/backend/app/schemas/phase1.py

137 lines
3.2 KiB
Python
Raw Normal View History

2026-03-04 14:01:00 -05:00
"""Schémas Phase 1 — Saisies hebdomadaires."""
from pydantic import BaseModel
from datetime import date, datetime
from uuid import UUID
from typing import Optional
# ── S1 Collecte ──
class CollecteCreate(BaseModel):
date_collecte: date
montant: float
2026-04-17 04:04:04 -04:00
detenteur_id: UUID # qui a l'argent
2026-03-04 14:01:00 -05:00
reunion_id: Optional[UUID] = None
class CollecteOut(BaseModel):
id: UUID
date_collecte: date
montant: float
2026-04-17 04:04:04 -04:00
detenteur_prenom: Optional[str] = None
statut: str
2026-03-04 14:01:00 -05:00
saisi_par_prenom: Optional[str] = None
2026-04-17 04:04:04 -04:00
confirme_par_prenom: Optional[str] = None
date_confirmation: Optional[datetime] = None
recu_par_prenom: Optional[str] = None
date_reception: Optional[date] = None
2026-03-04 14:01:00 -05:00
cree_le: datetime
model_config = {"from_attributes": True}
2026-04-17 04:04:04 -04:00
class CollecteUpdate(BaseModel):
montant: Optional[float] = None
# ── Opérations bancaires ──
class OperationBancaireCreate(BaseModel):
type: str = "depot"
montant: float
date_operation: date
note: Optional[str] = None
class OperationBancaireOut(BaseModel):
id: UUID
type: str
montant: float
date_operation: date
effectue_par_prenom: str
note: Optional[str] = None
cree_le: datetime
model_config = {"from_attributes": True}
class ReserveCreate(BaseModel):
nom: str
montant: float
note: Optional[str] = None
class ReserveUpdate(BaseModel):
nom: Optional[str] = None
montant: Optional[float] = None
note: Optional[str] = None
class ReserveOut(BaseModel):
id: UUID
nom: str
montant: float
note: Optional[str] = None
active: bool = True
cree_le: datetime
model_config = {"from_attributes": True}
2026-04-17 04:04:04 -04:00
class SoldesOut(BaseModel):
encaisse: float # cash reçu par trésorier, pas encore déposé
compte_bancaire: float # dépôts - dépenses payées - contributions
en_possession: float # collectes pas encore remises au trésorier
en_possession_details: list[dict] = []
2026-03-04 14:01:00 -05:00
# ── S4 Rapport de réunion ──
class ReunionCreate(BaseModel):
type: str = "reguliere"
date_reunion: datetime
theme: Optional[str] = None
annonces: Optional[list[str]] = None
note: Optional[str] = None
class ReunionOut(BaseModel):
id: UUID
type: str
date_reunion: datetime
animateur_prenom: Optional[str] = None
theme: Optional[str] = None
annonces: Optional[list[str]] = None
note: Optional[str] = None
cree_le: datetime
model_config = {"from_attributes": True}
2026-04-17 04:04:04 -04:00
# ── S5 Dépense (ouvert à tous) ──
2026-03-04 14:01:00 -05:00
class DepenseCreate(BaseModel):
date_depense: date
montant: float
quoi: str
2026-04-17 04:04:04 -04:00
# qui = auto (membre courant)
# methode renseignée par le trésorier à la confirmation
2026-03-04 14:01:00 -05:00
class DepenseOut(BaseModel):
id: UUID
date_depense: date
montant: float
qui_prenom: Optional[str] = None
quoi: str
paye: bool
2026-04-17 04:04:04 -04:00
methode: Optional[str] = None
preuve_nom: Optional[str] = None
2026-03-04 14:01:00 -05:00
saisi_par_prenom: Optional[str] = None
2026-04-17 04:04:04 -04:00
confirme: bool = False
2026-03-04 14:01:00 -05:00
cree_le: datetime
model_config = {"from_attributes": True}
class DepenseUpdate(BaseModel):
paye: Optional[bool] = None
methode: Optional[str] = None
quoi: Optional[str] = None