groupe-meditation/backend/app/schemas/phase6.py
Daniel Allaire 69309acd13 Intégrer rencontres et assemblées pilotées par tuiles
Refond les pages Rencontres et Assemblées autour de tuiles ouvrables avec actions locales, PDF serveur, ventes, collectes, présences, décisions, postes et contributions.

Ajoute les invitations publiques d'assemblée en lecture seule avec lien expirant, l'adoption formelle du rapport du trésorier avec proposeur/secondeur, et bloque les contributions tant que ce rapport n'est pas adopté.

Uniformise la navigation et les entêtes, retire les modules redondants des contextes, ajoute la création de comptes membres par exécutif et les données démo reliées aux nouveaux processus.

Ce commit capture un lot fonctionnel important; une refactorisation ciblée du module Assemblées, puis Trésorerie/Gouvernance, est maintenant pertinente pour isoler les règles métier et faciliter les tests.
2026-05-31 09:02:02 -04:00

64 lines
1.6 KiB
Python

"""Schémas Phase 6 — Littérature : inventaire, vente, ajustement."""
from pydantic import BaseModel
from datetime import date, datetime
from uuid import UUID
from typing import Optional
# ── Littérature (inventaire) ──
class LitteratureCreate(BaseModel):
titre: str
categorie: str # livre, brochure, depliant, pamphlet
prix_coutant: Optional[float] = None
quantite_stock: int = 0
seuil_commande: int = 2
code_bsg: Optional[str] = None
class LitteratureOut(BaseModel):
id: UUID
titre: str
categorie: str
prix_coutant: Optional[float] = None
quantite_stock: int
seuil_commande: int
code_bsg: Optional[str] = None
stock_bas: bool = False
model_config = {"from_attributes": True}
class LitteratureUpdate(BaseModel):
titre: Optional[str] = None
categorie: Optional[str] = None
prix_coutant: Optional[float] = None
seuil_commande: Optional[int] = None
code_bsg: Optional[str] = None
# ── M5 Ajuster inventaire ──
class AjustementStock(BaseModel):
quantite: int # positif = ajout, négatif = retrait
# ── S3 Vente littérature ──
class VenteCreate(BaseModel):
litterature_id: UUID
reunion_id: Optional[UUID] = None
quantite: int
montant: float
date_vente: date
vendu_par_id: Optional[UUID] = None
class VenteOut(BaseModel):
id: UUID
litterature_titre: str
quantite: int
montant: float
date_vente: date
vendu_par_prenom: Optional[str] = None
remis_tresorier: bool = False
cree_le: datetime
model_config = {"from_attributes": True}