Cerfa mécénat rempli envoyé par email à la confirmation du paiement
Quand un paiement « mécénat » est confirmé, l'email de confirmation porte en pièce jointe le reçu fiscal (cerfa 11580*05) rempli du bénévole, avec une phrase l'annonçant dans le corps. Généré en tâche de fond : un échec de génération envoie l'email sans pièce jointe plutôt que rien. - build_message/send acceptent des pièces jointes - app/mecenat/receipts.py : passage Volunteer → MecenatReceipt, partagé avec l'export coordination - modèle cerfa remplacé par une version pré-remplie avec l'association (organisme bénéficiaire, cases 200/978, signature) ; position de la date du versement ajustée Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
5675e1d220
commit
5a0209ce43
@@ -216,9 +216,12 @@ les tables sauf les tables d'association.
|
||||
`app/mecenat/number_words.py:amount_in_words` — conversion française pure,
|
||||
testée séparément des coordonnées PDF vu le nombre d'exceptions
|
||||
orthographiques : accord de « quatre-vingts »/« cents », « et onze »
|
||||
irrégulier à 71) et la date du versement sont complétés ; l'encadré
|
||||
« Organisme bénéficiaire » (page 1) reste vierge, à la main,
|
||||
volontairement — pas de données de l'association en base à ce jour.
|
||||
irrégulier à 71) et la date du versement sont complétés. L'encadré
|
||||
« Organisme bénéficiaire » (page 1), les cases articles 200/978 et la
|
||||
signature (page 2) sont **pré-remplis dans le modèle PDF lui-même** par
|
||||
l'association (pas en base) : changer d'association = remplacer le
|
||||
fichier, en gardant la même mise en page (les coordonnées de l'overlay
|
||||
n'ont été mesurées que sur ce document).
|
||||
`pypdf` (nouvelle dépendance) fusionne l'overlay ReportLab sur la page du
|
||||
modèle. Bouton « Reçus mécénat (PDF) » sur l'écran de configuration des
|
||||
bénévoles, même mécanique de téléchargement que l'export Excel ;
|
||||
@@ -484,6 +487,13 @@ ni corps**). Config : `SMTP_HOST/PORT/USER/PASSWORD/STARTTLS/SSL/FROM`,
|
||||
mécanisme pour que SumUp envoie elle-même un reçu au payeur (son
|
||||
« envoi automatique de reçu » vise le lecteur de carte/point de vente, pas
|
||||
ce mode d'intégration), donc l'appli ne compte pas dessus.
|
||||
Paiement « mécénat » (adresse postale saisie) : ce même email porte en
|
||||
pièce jointe le cerfa 11580*05 rempli du bénévole
|
||||
(`app/mecenat/receipts.py:receipt_for` + `generate_mecenat_receipts_pdf`,
|
||||
le même rendu que l'export coordination — organisme bénéficiaire et
|
||||
signature pré-remplis dans le modèle). Généré dans la tâche de fond
|
||||
(`_send_paid_confirmation`) ; un échec de génération envoie l'email sans
|
||||
pièce jointe plutôt que rien.
|
||||
|
||||
---
|
||||
|
||||
@@ -822,6 +832,7 @@ Aucune dépendance locale requise hors Docker.
|
||||
| 30 | Infobulles (`HelpTip` et détail de cellule de la grille des besoins) repositionnées en `position: fixed` via JS (`lib/useTooltipPosition.ts`), bornées à l'intérieur de l'écran et basculant de côté si la place manque — corrige un centrage `absolute` qui les faisait déborder de l'écran près d'un bord, et une isolation `z-index` qui rendait celle de la grille invisible (coincée sous les en-têtes figés) | à valider |
|
||||
| 31 | Revue de sécurité : logo des emails en pièce jointe inline au lieu d'une URL (fuyait le `access_token` du formulaire public à tout destinataire — régression de l'étape 27, aucun test ne couvrait le rendu HTML du logo), sujet retiré du log de remise des emails (pouvait porter le nom d'un bénévole via un modèle personnalisé), image du formulaire public revalidée par décodage réel (`PIL`, pas seulement le `Content-Type` déclaré) avant stockage — évite qu'une fausse image fasse échouer la génération des badges/feuilles de poste, export Excel des bénévoles protégé contre l'injection de formule (CWE-1236, `app/exporting/xlsx.py:_safe_text`), sondage du statut de paiement en attente limité en fréquence par jeton (`pending_status_limiter`, évite un abus de l'API SumUp), `pyjwt` mis à jour (CVE listées non exploitables ici — HS256 à secret statique uniquement, jamais de JWKS — mais autant ne pas rester sur une version vulnérable) | à valider |
|
||||
| 32 | Formulaire public : astérisque rouge sur les champs obligatoires (`RequiredMark`, `FieldLabel required`) et légende « * champ obligatoire » | à valider |
|
||||
| 33 | Cerfa mécénat rempli envoyé en pièce jointe de l'email de confirmation une fois le paiement confirmé (`build_message(attachments=…)`, `app/mecenat/receipts.py`) ; modèle cerfa pré-rempli avec l'association et sa signature | à valider |
|
||||
|
||||
**Reste hors périmètre** (modèle prêt à les accueillir) : SMS, constructeur
|
||||
de formulaire, pointage sur site, IA. Frontend : squelette + 6 écrans +
|
||||
|
||||
Reference in New Issue
Block a user