Formulaire d'infos de facturation avant paiement (#abonnement)

- Nouvelle page /compte/abonnement/mes-infos avec formulaire deux
  colonnes (prénom, nom, SIRET, entreprise, adresse, CP, ville, pays)
- Lookup SIRET via l'annuaire des entreprises pour pré-remplissage
- Cases à cocher obligatoires : renonciation rétractation + CGU (modale)
- Le bouton Valider est désactivé tant que les deux cases ne sont pas cochées
- Pays : liste déroulante des 20 pays de la zone euro, France par défaut
- Le SIRET est stocké dans users.siret (migration 0002) pour pré-remplissage
- Pré-remplissage des infos Frisbii (GET customer) si déjà client
- Côté Frisbii : update_customer si client existant, create_customer sinon
- Les URLs accept/cancel sont désormais transmises dans le body Frisbii
- Mise à jour des CGU : distinction données decp.info vs Frisbii

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Colin Maudry
2026-06-29 13:21:10 +02:00
parent 5e5c5170a7
commit b5f529c789
7 changed files with 479 additions and 52 deletions
+16
View File
@@ -162,6 +162,22 @@ def update_password_hash(user_id: int, password_hash: str) -> None:
)
def get_siret(user_id: int) -> str | None:
row = (
get_conn()
.execute("SELECT siret FROM users WHERE id = ?", (user_id,))
.fetchone()
)
return row["siret"] if row else None
def set_siret(user_id: int, siret: str) -> None:
get_conn().execute(
"UPDATE users SET siret = ?, updated_at = ? WHERE id = ?",
(siret, _now(), user_id),
)
def set_pending_email(user_id: int, email: str) -> None:
get_conn().execute(
"UPDATE users SET pending_email = ?, updated_at = ? WHERE id = ?",