diff --git a/backend/app/routers/reunions.py b/backend/app/routers/reunions.py
index 636dbb1..ab50705 100644
--- a/backend/app/routers/reunions.py
+++ b/backend/app/routers/reunions.py
@@ -101,66 +101,91 @@ async def _html_rapport_rencontre(reunion: Reunion, membre, db: AsyncSession) ->
)
annonces = reunion.annonces or []
- annonces_html = "".join(f"
Aucune vente de littérature.
"
- )
- ventes_jetons_html = (
- "Aucune vente de jetons.
"
- )
- jetons_html = (
- "Aucun jeton/gâteau comptabilisé.
"
- )
+ district = f"District {groupe.district}" if groupe and groupe.district else "District"
html = f"""
-
Date
{reunion.date_reunion.date().isoformat()}
-
Heure
{reunion.date_reunion.strftime('%H:%M')}
-
Sujet
{escape(reunion.theme or 'Rencontre hebdomadaire')}
-
Animé par
{escape(animateur.prenom if animateur else '—')}
+
+ {bloc("DATE ( AAAA / MM / JJ)", reunion.date_reunion.date().isoformat(), "short")}
+ {bloc("PRÉSENCES", "", "short")}
+ {bloc("SALLE & CAFÉ", groupe.adresse_local if groupe else "", "short")}
+ {bloc("ANIMATION", animateur.prenom if animateur else "", "short")}
+ {bloc("THÈME DE LA DISCUSSION", reunion.theme or "", "full theme")}
+ {bloc("NOUVEAU(X)", "", "medium")}
+ {bloc("ANNIVERSAIRES / JETONS", jetons_texte, "medium")}
+ {bloc("COLLECTE", collecte_texte, "short")}
+ {bloc("DÉPENSES", "", "deep")}
+ {bloc("VENTES (Littérature)", ventes_lit_texte, "short")}
+ {bloc("VENTES (Jetons)", ventes_jetons_texte, "short")}
+ {bloc("NOTES", notes_texte, "full notes")}
-
Annonces
-
Notes
{escape(reunion.note or 'Aucune note.')}
-
Collecte
{collecte_html}
-
-
Ventes de littérature
{ventes_lit_html}
-
Ventes de jetons
{ventes_jetons_html}
-
Jetons/Gâteaux
{jetons_html}
"""
return html, jour
diff --git a/data/import/Modèle de Saint-Basile.pdf b/data/import/Modèle de Saint-Basile.pdf
new file mode 100644
index 0000000..bfc3601
Binary files /dev/null and b/data/import/Modèle de Saint-Basile.pdf differ
diff --git a/frontend/src/pages/ModePapier.jsx b/frontend/src/pages/ModePapier.jsx
index 9f14c33..d24c9cf 100644
--- a/frontend/src/pages/ModePapier.jsx
+++ b/frontend/src/pages/ModePapier.jsx
@@ -20,36 +20,48 @@ const formulaires = [
},
];
-const lignes = (n) => Array.from({ length: n }, (_, i) => `
${i + 1}.
`).join('');
-
function htmlFormulaire(type, groupe) {
const nomGroupe = groupe?.nom || 'Groupe';
- const commun = `
+ const district = groupe?.district ? `District ${groupe.district}` : 'District';
+ const lieu = groupe?.adresse_local || '';
+ const bloc = (label, contenu = '', cls = '') => `
+
+
${contenu}
+
${label}
+
`;
+ const lignes = (n) => Array.from({ length: n }, (_, i) => `
${i + 1}.
`).join('');
+ const entete = (titre) => `
${nomGroupe}
-
Formulaire papier de reprise en main
-
-
`;
const sections = {
rencontre: `
-
Rencontre hebdomadaire
-
-
Montant: __________
Détenteur: __________
-
${lignes(6)}
-
${lignes(6)}
-
`,
+ ${entete('RÉUNION HEBDOMADAIRE')}
+
+ ${bloc('DATE ( AAAA / MM / JJ)', '', 'short')}
+ ${bloc('PRÉSENCES', '', 'short')}
+ ${bloc('SALLE & CAFÉ', lieu, 'short')}
+ ${bloc('ANIMATION', '', 'short')}
+ ${bloc('THÈME DE LA DISCUSSION', '', 'full theme')}
+ ${bloc('NOUVEAU(X)', '', 'medium')}
+ ${bloc('ANNIVERSAIRES / JETONS', '', 'medium')}
+ ${bloc('COLLECTE', '', 'short')}
+ ${bloc('DÉPENSES', '', 'deep')}
+ ${bloc('VENTES (Littérature)', '', 'short')}
+ ${bloc('VENTES (Jetons)', '', 'short')}
+ ${bloc('NOTES', '', 'full notes')}
+
`,
assemblee: `
-
Assemblée d'affaires
+ ${entete("ASSEMBLÉE D'AFFAIRES")}
${lignes(12)}
${lignes(10)}
${lignes(6)}
`,
tresorerie: `
-
Trésorerie
+ ${entete('TRÉSORERIE')}
${lignes(8)}
${lignes(8)}
${lignes(8)}
@@ -57,13 +69,14 @@ function htmlFormulaire(type, groupe) {
};
return `
${nomGroupe} - ${type}
${commun}${sections[type]}`;
+ ${sections[type]}