("RSG","executif","Représente le groupe auprès du district et rapporte les informations de service.","2 ans de stabilité",1,["M3","C2","C5"]),
("RSG Substitut(e)","executif","Appuie le RSG et assure la relève lorsque nécessaire.","1 an de stabilité",2,["M3","C2","C5"]),
("Trésorier(ière)","executif","Tient les registres, reçoit les sommes et présente les rapports mensuels.","1 an de stabilité",3,["S1T","S5","M4","G8"]),
("Secrétaire","executif","Prépare les procès-verbaux, les présences et la correspondance.","6 mois de stabilité",4,["M0","M1","M2","S0"]),
("Animateur(trice)","service","Anime les rencontres hebdomadaires.","Disponibilité régulière",5,["S0"]),
("Responsable accueil","physique","Accueille les nouveaux et veille à l'atmosphère de la salle.","Fiabilité",6,["C9"]),
("Responsable café","physique","Prépare le café et remet les petites dépenses au trésorier.","Aucun",7,["S5"]),
("Responsable littérature","service","Maintient l'inventaire et remet les ventes au trésorier.","Connaissance de la littérature",8,["S3","C4","M5"]),
("Responsable jetons","service","Prépare les jetons et les anniversaires.","Aucun",9,["S2","M6"]),
("Responsable clés","physique","Ouvre et ferme le local.","Fiabilité",10,[]),
db.add(TransactionComptable(groupe_id=groupe.id,date_transaction=jour,type="collecte",compte="encaisse",montant=montant_collecte,sens="debit",source_table="collectes",source_id=collecte.id,note="Collecte 7e Tradition",cree_par=tresorier.id))
ifindex%4==0:
don=40+(index%5)*10
banque+=don
db.add(TransactionComptable(groupe_id=groupe.id,date_transaction=jour,type="don",compte="banque",montant=don,sens="debit",note="Don direct au compte bancaire",cree_par=tresorier.id))
db.add(OperationBancaire(groupe_id=groupe.id,type="depot",montant=depot,date_operation=jour,effectue_par=tresorier.id,note="Dépôt mensuel de l'encaisse"))
db.add(TransactionComptable(groupe_id=groupe.id,date_transaction=jour,type="banque_depot",compte="banque",montant=depot,sens="debit",note="Dépôt de l'encaisse",cree_par=tresorier.id))
db.add(TransactionComptable(groupe_id=groupe.id,date_transaction=jour,type="banque_depot",compte="encaisse",montant=depot,sens="credit",note="Dépôt de l'encaisse",cree_par=tresorier.id))
iftype_reunion=="affaires":
await_decision(db,groupe,reunion,compteurs,"RES",jour,secretaire,rsg,"Adopter l'ordre du jour","L'assemblée doit traiter les affaires courantes.","L'ordre du jour est adopté tel que présenté.")
await_decision(db,groupe,reunion,compteurs,"RES",jour,rsg,secretaire,f"Orientation du mois {jour.month:02d}","Le groupe souhaite garder une conscience de groupe active.","Le groupe retient les priorités présentées pour le mois.")
pv=PvReunion(
reunion_id=reunion.id,
redacteur_id=secretaire.id,
contenu=f"Procès-verbal de l'assemblée du {jour.isoformat()}.\nPrésences vérifiées. Rapports reçus. Décisions consignées.",
decisions=[{"sujet":"Adoption du procès-verbal précédent","decision":"Adopté","proposeur":rsg.prenom,"secondeur":secretaire.prenom,"statut":"complete"}],
approuve=index>4,
)
db.add(pv)
db.add(RapportAdopte(
groupe_id=groupe.id,
adopte_par_id=tresorier.id,
type_rapport="tresorerie",
titre=f"Rapport du trésorier — {jour.strftime('%Y-%m')}",
annee=jour.year,
mois=jour.month,
contenu_html=f"<html><body><h1>Rapport du trésorier</h1><p>Rapport adopté pour {jour.strftime('%Y-%m')}.</p><p>Banque: {banque:.2f} $</p><p>Encaisse: {encaisse:.2f} $</p></body></html>",
depense=Depense(groupe_id=groupe.id,date_depense=jour,montant=montant,qui=membres_actifs[index%len(membres_actifs)].id,quoi=["Café et lait","Papeterie","Location de salle","Fournitures accueil"][index%4],paye=True,methode=methode,saisi_par=membres_actifs[index%len(membres_actifs)].id,confirme_par=tresorier.id,date_confirmation=datetime.combine(jour,time(20,45)).replace(tzinfo=timezone.utc))
db.add(TransactionComptable(groupe_id=groupe.id,date_transaction=jour,type="vente_litterature",compte="encaisse",montant=montant,sens="debit",source_table="ventes_litterature",source_id=vente.id,note="Vente de littérature",cree_par=tresorier.id))
db.add(TransactionComptable(groupe_id=groupe.id,date_transaction=jour,type="vente_jeton",compte="encaisse",montant=montant,sens="debit",source_table="ventes_jetons",source_id=vente_jeton.id,note="Vente de jetons",cree_par=tresorier.id))
decision=await_decision(db,groupe,reunion,compteurs,"DON",jour,rsg,secretaire,"Contribution au district","La conscience de groupe prévoit soutenir les services.","Le groupe décide d'envoyer une contribution au District 87-16.")
db.add(TransactionComptable(groupe_id=groupe.id,date_transaction=jour,type="contribution",compte="banque",montant=montant,sens="credit",source_table="envois_contributions",source_id=contribution.id,note="Contribution au district",cree_par=tresorier.id))
decision=await_decision(db,groupe,reunion,compteurs,"NOM",jour,rsg,secretaire,f"Nomination de {candidat.prenom}","Un poste doit être pourvu pour soutenir le groupe.",f"Le groupe nomme {candidat.prenom} au poste de {poste.nom}.")
db.add(MouvementReserve(groupe_id=groupe.id,source_id=None,destination_id=reserve.id,montant=montant,type="reserve_virement",note="Affectation au solde réservé",cree_par=tresorier.id,cree_le=datetime.combine(jour,time(21,0)).replace(tzinfo=timezone.utc)))
db.add(Depense(groupe_id=groupe.id,date_depense=date.today(),montant=48,qui=membres["anne.demo@example.test"].id,quoi="Fournitures à confirmer",paye=False,methode=None,saisi_par=membres["anne.demo@example.test"].id))
db.add(Proposition(groupe_id=groupe.id,sujet="Réviser le format de discussion",description="Proposition laissée en réflexion pour la prochaine assemblée.",proposeur_id=membres["julie.demo@example.test"].id,secondeur_id=membres["marc.demo@example.test"].id,statut="secondee"))
db.add(Proposition(groupe_id=groupe.id,sujet="Acheter un projecteur",description="La dépense n'est pas jugée prioritaire.",proposeur_id=membres["luc.demo@example.test"].id,secondeur_id=membres["sophie.demo@example.test"].id,statut="rejetee",etant_donne_que="La réserve prudente doit d'abord être consolidée."))
db.add(Evenement(groupe_id=groupe.id,titre="Atelier Étapes et Traditions",description="Atelier régional ouvert aux membres.",date_evenement=date.today()+timedelta(days=24),lieu="Centre communautaire",cree_par=rsg.id))
db.add(Evenement(groupe_id=groupe.id,titre="Anniversaire du groupe",description="Souper partage et réunion ouverte.",date_evenement=date.today()-timedelta(days=40),lieu="Local habituel",cree_par=secretaire.id))
db.add(RapportRsg(groupe_id=groupe.id,reunion_dist=date.today()-timedelta(days=18),redacteur_id=rsg.id,decisions=["Le district prépare l'inventaire annuel.","Besoin de bénévoles pour l'accueil."],infos_region="La région sollicite les groupes pour les ateliers.",sujets_groupe="Questions transmises par la conscience de groupe."))