Écran Inscriptions : signale quand les types de paiement sont inactifs
Sans identifiants SumUp (code marchand + clé API) ou sans aucun type de paiement, le formulaire public n'affiche qu'une simple case « cotisation » et crée le bénévole directement : ni choix du type de paiement, ni étape d'adresse mécénat, ni paiement en ligne. Rien ne le signalait, si bien qu'une option « Mécénat » configurée semblait ne pas fonctionner. L'écran affiche désormais l'état Actif / Inactif sous « Types de paiement », avec la raison. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
c49ce520e3
commit
770a12e3aa
@@ -850,6 +850,7 @@ Aucune dépendance locale requise hors Docker.
|
|||||||
| 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 |
|
| 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 |
|
||||||
| 34 | Numéro d'ordre unique sur chaque reçu fiscal mécénat (`Volunteer.mecenat_receipt_number`, `202600001`…, migration `0020`), attribué au paiement ou au premier export puis figé | à valider |
|
| 34 | Numéro d'ordre unique sur chaque reçu fiscal mécénat (`Volunteer.mecenat_receipt_number`, `202600001`…, migration `0020`), attribué au paiement ou au premier export puis figé | à valider |
|
||||||
| 35 | Type de paiement à montant libre (`FormPaymentOption.free_amount`, migration `0021`) : case « Montant libre » sur l'écran Inscriptions, montant configuré = minimum, saisie du montant sur le formulaire public (validée côté client et serveur, 10 000 € max) — pensé pour le mécénat | à valider |
|
| 35 | Type de paiement à montant libre (`FormPaymentOption.free_amount`, migration `0021`) : case « Montant libre » sur l'écran Inscriptions, montant configuré = minimum, saisie du montant sur le formulaire public (validée côté client et serveur, 10 000 € max) — pensé pour le mécénat | à valider |
|
||||||
|
| 36 | Écran Inscriptions : état « Actif / Inactif » des types de paiement (`SumUpStatus`, `FormBuilderPage.tsx`) — sans identifiants SumUp ou sans type de paiement, le formulaire public n'affiche qu'une case « cotisation » (ni choix du type, ni étape mécénat, ni paiement en ligne), ce que rien ne signalait | à valider |
|
||||||
|
|
||||||
**Reste hors périmètre** (modèle prêt à les accueillir) : SMS, constructeur
|
**Reste hors périmètre** (modèle prêt à les accueillir) : SMS, constructeur
|
||||||
de formulaire, pointage sur site, IA. Frontend : squelette + 6 écrans +
|
de formulaire, pointage sur site, IA. Frontend : squelette + 6 écrans +
|
||||||
|
|||||||
@@ -421,6 +421,9 @@
|
|||||||
"form.customize.sumup.apiKey.placeholder": "sup_sk_...",
|
"form.customize.sumup.apiKey.placeholder": "sup_sk_...",
|
||||||
"form.customize.paymentOptions.title": "Types de paiement",
|
"form.customize.paymentOptions.title": "Types de paiement",
|
||||||
"form.customize.paymentOptions.label": "Libellé (ex. Cotisation classique, Mécénat…)",
|
"form.customize.paymentOptions.label": "Libellé (ex. Cotisation classique, Mécénat…)",
|
||||||
|
"form.customize.paymentOptions.active": "✓ Actif : le formulaire propose ces types de paiement (paiement en ligne SumUp, étape d'adresse pour le mécénat).",
|
||||||
|
"form.customize.paymentOptions.inactive.noCredentials": "⚠ Inactif : renseignez le code marchand et la clé API SumUp ci-dessus. En attendant, le formulaire n'affiche qu'une case « cotisation » à cocher : pas de choix du type de paiement, pas d'étape mécénat, pas de paiement en ligne.",
|
||||||
|
"form.customize.paymentOptions.inactive.noOptions": "⚠ Inactif : ajoutez au moins un type de paiement ci-dessous. En attendant, le formulaire n'affiche qu'une case « cotisation » à cocher.",
|
||||||
"form.customize.paymentOptions.add": "Ajouter",
|
"form.customize.paymentOptions.add": "Ajouter",
|
||||||
"form.customize.paymentOptions.mecenat": "Mécénat",
|
"form.customize.paymentOptions.mecenat": "Mécénat",
|
||||||
"form.customize.paymentOptions.free": "Montant libre",
|
"form.customize.paymentOptions.free": "Montant libre",
|
||||||
|
|||||||
@@ -335,6 +335,12 @@ export function FormBuilderPage() {
|
|||||||
|
|
||||||
<div className="border-t-2 border-ink pt-3">
|
<div className="border-t-2 border-ink pt-3">
|
||||||
<FieldLabel>{t('form.customize.paymentOptions.title')}</FieldLabel>
|
<FieldLabel>{t('form.customize.paymentOptions.title')}</FieldLabel>
|
||||||
|
<SumUpStatus
|
||||||
|
credentialsSet={
|
||||||
|
Boolean(template.data?.sumup_merchant_code) &&
|
||||||
|
Boolean(template.data?.sumup_api_key_set)
|
||||||
|
}
|
||||||
|
/>
|
||||||
<PaymentOptionsForm />
|
<PaymentOptionsForm />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -343,6 +349,32 @@ export function FormBuilderPage() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Le formulaire public ne propose les types de paiement (et donc l'étape
|
||||||
|
* mécénat puis SumUp) qu'avec des identifiants SumUp **et** au moins un
|
||||||
|
* type — sinon il n'affiche qu'une simple case « cotisation » et crée le
|
||||||
|
* bénévole directement (`PublicFormConfig.sumup_enabled`). Le dire ici, sans
|
||||||
|
* quoi une option « Mécénat » configurée semble simplement ne pas marcher. */
|
||||||
|
function SumUpStatus({ credentialsSet }: { credentialsSet: boolean }) {
|
||||||
|
const options = useFormPaymentOptions();
|
||||||
|
const hasOptions = (options.data?.length ?? 0) > 0;
|
||||||
|
if (credentialsSet && hasOptions) {
|
||||||
|
return (
|
||||||
|
<p className="mb-2 font-mono text-[10.5px] font-bold text-green">
|
||||||
|
{t('form.customize.paymentOptions.active')}
|
||||||
|
</p>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<p className="mb-2 border-2 border-orange-dark bg-yellow-soft p-[8px] font-mono text-[10.5px] leading-relaxed">
|
||||||
|
{t(
|
||||||
|
credentialsSet
|
||||||
|
? 'form.customize.paymentOptions.inactive.noOptions'
|
||||||
|
: 'form.customize.paymentOptions.inactive.noCredentials',
|
||||||
|
)}
|
||||||
|
</p>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/** Types de paiement (libellé + montant fixe) — liste libre, même principe
|
/** Types de paiement (libellé + montant fixe) — liste libre, même principe
|
||||||
* que `DayPartsForm` (`ConfigRules.tsx`) : édition en ligne (au blur),
|
* que `DayPartsForm` (`ConfigRules.tsx`) : édition en ligne (au blur),
|
||||||
* ajout en bas, suppression immédiate. */
|
* ajout en bas, suppression immédiate. */
|
||||||
|
|||||||
Reference in New Issue
Block a user