Changements rédactionnels : abonnement par virement, avantage abonnements

This commit is contained in:
Colin Maudry
2026-07-02 16:50:33 +02:00
parent 8a428ac1aa
commit ea20491e9c
3 changed files with 64 additions and 110 deletions
+47 -45
View File
@@ -13,34 +13,33 @@ register_page(
abonnement_features = dcc.Markdown(""" abonnement_features = dcc.Markdown("""
- sauvegarde de vues dans la page Tableau - sauvegarde de vues dans la page Tableau
- vote pour les fonctionnalités à développer en priorité (une fois la période d'essai terminée) - vote pour les [fonctionnalités à développer](/a-propos/roadmap) en priorité (une fois la période d'essai terminée)
""") """)
def layout(**_): subscription_terms = html.Div(
contenu = html.Div( [
[ html.H2("Abonnement"),
html.H2("Abonnement"), dcc.Markdown(
dcc.Markdown( """
"""
L'accès aux fonctionnalités de base de colibre est gratuit et sans inscription. Il est également possible de créer un compte gratuitement via le menu [Connexion](/connexion). Une fois le compte créé, L'accès aux fonctionnalités de base de colibre est gratuit et sans inscription. Il est également possible de créer un compte gratuitement via le menu [Connexion](/connexion). Une fois le compte créé,
il est possible de souscrire à un abonnement mensuel qui donne accès à des fonctionnalités supplémentaires. Cet abonnement s'adresse tant aux professionnel·les qu'aux particuliers. il est possible de souscrire à un abonnement mensuel qui donne accès à des fonctionnalités supplémentaires. Cet abonnement s'adresse tant aux professionnel·les qu'aux particuliers.
""" """
), ),
html.H4("Fonctionnalités incluses"), html.H4("Fonctionnalités incluses"),
dcc.Markdown( dcc.Markdown(
""" """
Les fonctionnalités accessibles aux abonné·es évoluent au fil du développement du service. Les fonctionnalités accessibles aux abonné·es évoluent au fil du développement du service.
Fonctionnalités réservées aux abonné·es : Fonctionnalités réservées aux abonné·es :
""" """
), ),
abonnement_features, abonnement_features,
dcc.Markdown(""" dcc.Markdown("""
Les fonctionnalités en cours de développement et soumises au vote sont visibles dans la section [Roadmap](/a-propos/roadmap)."""), Les fonctionnalités en cours de développement et soumises au vote sont visibles dans la section [Roadmap](/a-propos/roadmap)."""),
html.H4("Tarifs"), html.H4("Tarifs"),
dcc.Markdown( dcc.Markdown(
""" """
Deux formules sont proposées : Deux formules sont proposées :
- **Abonnement** — 20 € HT / mois (soit 24 € TTC) - **Abonnement** — 20 € HT / mois (soit 24 € TTC)
@@ -48,43 +47,43 @@ Deux formules sont proposées :
La TVA applicable en France est de 20 %. La TVA applicable en France est de 20 %.
""" """
), ),
html.H4("Modes de paiement"), html.H4("Modes de paiement"),
dcc.Markdown( dcc.Markdown(
""" """
Les cartes bancaires des réseaux Visa et Mastercard sont acceptées. Les cartes bancaires des réseaux Visa et Mastercard sont acceptées.
Il est également possible de payer par virement bancaire à condition de payer un an d'abonnement. Il est également possible de payer par virement bancaire à condition de payer un an d'abonnement.
""" """
), ),
html.H4("Période d'essai"), html.H4("Période d'essai"),
dcc.Markdown( dcc.Markdown(
""" """
Une période d'essai gratuite est proposée lors de la souscription. Une période d'essai gratuite est proposée lors de la souscription.
Sa durée est indiquée avant validation. Aucun prélèvement n'est effectué pendant cette période. Sa durée est indiquée avant validation. Aucun prélèvement n'est effectué pendant cette période.
À son terme, l'abonnement est activé et facturé automatiquement. À son terme, l'abonnement est activé et facturé automatiquement.
La période d'essai est accordée une seule fois par compte. La période d'essai est accordée une seule fois par compte.
""" """
), ),
html.H4("Facturation et paiement"), html.H4("Facturation et paiement"),
dcc.Markdown( dcc.Markdown(
""" """
L'abonnement est facturé mensuellement, à la date anniversaire de la souscription, et donne lieu à l'émission d'une facture visible sur le compte de l'abonné·e. L'abonnement est facturé mensuellement, à la date anniversaire de la souscription, et donne lieu à l'émission d'une facture visible sur le compte de l'abonné·e.
Le paiement est traité par [Frisbii](https://www.frisbii.com), prestataire européen de paiement en ligne. Le paiement est traité par [Frisbii](https://www.frisbii.com), prestataire européen de paiement en ligne.
Les coordonnées bancaires sont conservées exclusivement par Frisbii et ne sont pas transmises à colibre. Les coordonnées bancaires sont conservées exclusivement par Frisbii et ne sont pas transmises à colibre.
""" """
), ),
html.H4("Résiliation"), html.H4("Résiliation"),
dcc.Markdown( dcc.Markdown(
""" """
L'abonnement peut être résilié à tout moment depuis l'espace [Mon compte](/compte/abonnement). L'abonnement peut être résilié à tout moment depuis l'espace [Mon compte](/compte/abonnement).
La résiliation prend effet à la fin de la période mensuelle en cours : l'accès aux fonctionnalités payantes est maintenu jusqu'à cette date, sans remboursement au prorata. La résiliation prend effet à la fin de la période mensuelle en cours : l'accès aux fonctionnalités payantes est maintenu jusqu'à cette date, sans remboursement au prorata.
""" """
), ),
html.H4("Données recueillies"), html.H4("Données recueillies"),
dcc.Markdown( dcc.Markdown(
""" """
La gestion de l'abonnement implique le traitement de données, réparties entre colibre et Frisbii (prestataire de paiement). Conformément au RGPD, colibre ne receuille que les données strictement nécessaire La gestion de l'abonnement implique le traitement de données, réparties entre colibre et Frisbii (prestataire de paiement). Conformément au RGPD, colibre ne receuille que les données strictement nécessaire
au bon fonctionnement du site et de la facturation. au bon fonctionnement du site et de la facturation.
@@ -102,11 +101,14 @@ au bon fonctionnement du site et de la facturation.
Ces données sont utilisées uniquement pour la gestion de votre abonnement et ne sont pas transmises à des tiers à des fins commerciales. Ces données sont utilisées uniquement pour la gestion de votre abonnement et ne sont pas transmises à des tiers à des fins commerciales.
Conformément au RGPD, vous pouvez demander l'accès, la rectification ou la suppression de vos données en [me contactant](/a-propos/contact). Conformément au RGPD, vous pouvez demander l'accès, la rectification ou la suppression de vos données en [me contactant](/a-propos/contact).
""" """
), ),
html.H4("Contact"), html.H4("Contact"),
dcc.Markdown( dcc.Markdown(
"Pour toute question relative à votre abonnement : [page de contact](/a-propos/contact)." "Pour toute question relative à votre abonnement : [page de contact](/a-propos/contact)."
), ),
] ]
) )
return apropos_shell("abonnement", contenu)
def layout(**_):
return apropos_shell("abonnement", subscription_terms)
+11 -5
View File
@@ -40,7 +40,10 @@ def _plan_card(meta: dict, trial: int | None, trial_used: bool):
dbc.CardBody( dbc.CardBody(
[ [
html.H4(meta["label"], className="mb-1"), html.H4(meta["label"], className="mb-1"),
html.P(f"{meta['prix_ht']} € HT / mois", className="text-muted mb-3"), html.P(
f"{meta['prix_ht']} € HT / mois ({str(int(meta['prix_ht']) * 1.2).replace('.0', '')} € TTC)",
className="text-muted mb-3",
),
html.P(meta["description"], className="mb-3"), html.P(meta["description"], className="mb-3"),
badge, badge,
html.A( html.A(
@@ -75,7 +78,7 @@ def _plan_cards(trial_used=False, trial_for=plans.trial_days):
def _explainer(): def _explainer():
col_left = dbc.Col( col_left = dbc.Col(
[html.H4("Fonctionnalités réservées aux abonnées :"), abonnement_features], [html.H4("Fonctionnalités réservées aux abonné·es :"), abonnement_features],
md=6, md=6,
style={ style={
"borderRight": "1px solid var(--bs-border-color)", "borderRight": "1px solid var(--bs-border-color)",
@@ -84,16 +87,19 @@ def _explainer():
) )
col_right = dbc.Col( col_right = dbc.Col(
[ [
html.H4("Ce que les abonnements de soutien permettent"), html.H4("Ce que les abonnements permettent"),
html.Ul( html.Ul(
[ [
html.Li( html.Li(
"Rédaction d'études à partir des données, par exemple sur les " "passer plus de temps à développer colibre et moins de temps à chercher des missions"
),
html.Li(
"rédaction d'études à partir des données, par exemple sur les "
"acheteurs dont les données sont introuvables et les raisons de " "acheteurs dont les données sont introuvables et les raisons de "
"cette non-publication." "cette non-publication."
), ),
html.Li( html.Li(
"Fédération des bonnes volontés souhaitant militer pour une " "fédération des bonnes volontés souhaitant militer pour une "
"législation plus ambitieuse sur la transparence de la commande " "législation plus ambitieuse sur la transparence de la commande "
"publique." "publique."
), ),
+6 -60
View File
@@ -4,6 +4,7 @@ from flask_login import current_user
from src.auth import db as auth_db from src.auth import db as auth_db
from src.pages._compte_shell import account_guard, account_shell from src.pages._compte_shell import account_guard, account_shell
from src.pages.a_propos.abonnement import subscription_terms
from src.subscriptions import client as frisbii_client from src.subscriptions import client as frisbii_client
from src.utils.data import get_annuaire_data from src.utils.data import get_annuaire_data
@@ -15,65 +16,7 @@ register_page(
description="Informations de facturation pour votre abonnement colibre.", description="Informations de facturation pour votre abonnement colibre.",
) )
_CGU_MARKDOWN = """ _CGU_MARKDOWN = subscription_terms
L'accès aux fonctionnalités de base de colibre est gratuit et sans inscription.
Un abonnement payant donne accès à des fonctionnalités supplémentaires qui nécessitent la création d'un compte.
#### Fonctionnalités incluses
Les fonctionnalités accessibles aux abonnés évoluent au fil du développement du service.
La liste à jour est visible depuis la [page d'abonnement](/compte/abonnement).
#### Tarifs
Deux formules sont proposées :
- **Abonnement** — 20 € HT / mois (soit 24 € TTC)
- **Abonnement de soutien** — 50 € HT / mois (soit 60 € TTC) — mêmes fonctionnalités, contribution renforcée au projet
La TVA applicable est de 20 %. Les prix TTC sont affichés lors de la souscription.
#### Période d'essai
Une période d'essai gratuite peut être proposée lors de la souscription.
Sa durée est indiquée avant validation. Aucun prélèvement n'est effectué pendant cette période.
À son terme, l'abonnement est activé et facturé automatiquement.
La période d'essai est accordée une seule fois par utilisateur.
#### Facturation et paiement
L'abonnement est facturé mensuellement, à la date anniversaire de la souscription.
Le paiement est traité par [Frisbii](https://www.frisbii.com), prestataire européen de paiement en ligne.
Les coordonnées bancaires sont conservées exclusivement par Frisbii et ne sont pas transmises à colibre.
#### Résiliation
L'abonnement peut être résilié à tout moment depuis l'espace [Mon compte](/compte/abonnement).
La résiliation prend effet à la fin de la période mensuelle en cours : l'accès aux fonctionnalités payantes est maintenu jusqu'à cette date, sans remboursement au prorata.
#### Données stockées
La gestion de l'abonnement implique le traitement de données personnelles, réparties entre colibre et Frisbii (prestataire de paiement).
**Données stockées par colibre :**
- Adresse e-mail (identification du compte)
- Numéro SIRET (si renseigné, conservé pour pré-remplir les futures souscriptions et alimenter des fonctionnalités)
**Données stockées par Frisbii :**
- Informations de facturation : prénom, nom, adresse postale, code postal, ville, pays, nom de l'entreprise
- Informations de paiement : coordonnées bancaires (accessibles uniquement par Frisbii, jamais transmises à colibre)
- Historique des factures
Ces données sont utilisées uniquement pour la gestion de votre abonnement et ne sont pas transmises à des tiers à des fins commerciales.
Conformément au RGPD, vous pouvez demander l'accès, la rectification ou la suppression de vos données en [me contactant](/a-propos/contact).
#### Contact
Pour toute question relative à votre abonnement : [page de contact](/a-propos/contact).
"""
def _csrf_input(): def _csrf_input():
@@ -244,6 +187,9 @@ def layout(**query):
checkboxes = html.Div( checkboxes = html.Div(
[ [
dcc.Markdown(
"Si vous préférez régler par virement bancaire et une facturation annuelle plutôt qu'un réglement mensuel automatique par carte bancaire, [contactez-moi](/a-propos/contact)."
),
dcc.Checklist( dcc.Checklist(
id="inf-cb-retractation", id="inf-cb-retractation",
options=[ options=[
@@ -287,7 +233,7 @@ def layout(**query):
dbc.Row([col1, col2], className="g-4 mb-4"), dbc.Row([col1, col2], className="g-4 mb-4"),
checkboxes, checkboxes,
html.Button( html.Button(
"Suivant", "Ajout d'une carte de paiement",
id="inf-submit", id="inf-submit",
type="submit", type="submit",
className="btn btn-primary", className="btn btn-primary",