Le format d'import
This content is not available in your language yet.
Pour quitter l’ancien logiciel du club, on importe des fichiers CSV ou XLSX : un fichier par type de données, une correspondance des colonnes, un aperçu, une application qu’on peut relancer sans doublon, et un rapport. Côté club, c’est la page Import (propriétaire) ; côté terminal, bo import. Le code est dans packages/domain/src/import/.
Le déroulé
Section intitulée « Le déroulé »- Envoi d’un CSV (séparateur
;ou,, UTF-8 ou Windows-1252) ou d’un XLSX (première feuille), jusqu’à 5 Mo et 5 000 lignes. Un fichier illisible est refusé avec la raison ; rien n’est conservé. - Correspondance des colonnes du fichier avec les champs de Rebond. Les colonnes nommées comme dans le modèle (ou par un synonyme connu) sont reconnues d’elles-mêmes. La correspondance est enregistrée par club, nom du logiciel source et type : le fichier suivant du même logiciel se range tout seul.
- Aperçu : chaque ligne est vérifiée contre les données actuelles du club et reçoit un statut, à créer, à mettre à jour, ignorée (rien à faire, avec la raison) ou en erreur (avec la raison). Dans un même fichier, les doublons (même identifiant, e-mail ou téléphone) gardent la première ligne.
- Application : une seule transaction pour tout le fichier. Les lignes sont revérifiées, puis écrites par le code du module concerné. Une ligne que la base refuse à ce moment-là (créneau pris entre-temps, e-mail d’un compte d’un autre club) est marquée non importée ; le reste passe quand même.
- Rapport : ce qui n’est pas passé, et pourquoi, vient en premier. Il se télécharge en CSV (ligne, statut, raison, puis les colonnes du fichier).
Ordre conseillé : Terrains, Tarifs, Clients, Formules, Soldes, Réservations. Les trois derniers désignent les clients par leur identifiant d’import, leur e-mail ou leur téléphone.
Les clients importés deviennent des utilisateurs créés avant leur première connexion (e-mail non vérifié) : un lien ou un code reçu plus tard sur cet e-mail ou ce téléphone ouvre le même compte. Les téléphones sont enregistrés au format international (+33…), comme à la connexion par SMS : la base refuse toute autre forme, donc un même numéro est toujours une seule personne.
Relancer un import
Section intitulée « Relancer un import »Chaque ligne importée est reliée à ce qu’elle a créé par son identifiant externe (la colonne Identifiant). À défaut : l’e-mail ou le téléphone pour un client, le nom pour un terrain, le libellé et le sport pour un tarif, le client, le type et le libellé pour une formule, le client pour un solde, le terrain et l’heure de début pour une réservation. Relancer le même fichier ne crée rien de nouveau :
| Type | Mêmes valeurs | Valeurs changées |
|---|---|---|
| Clients | ignorée | niveau mis à jour ; le nom, l’e-mail et le téléphone appartiennent au compte de la personne et ne sont pas réécrits |
| Terrains | ignorée | nom, zone, site mis à jour (un autre sport est refusé) |
| Tarifs | ignorée | tarif mis à jour (supprimé à l’accueil depuis : recréé) |
| Formules, soldes | ignorée | refusée avec la raison : l’argent et les formules vendues ne sont jamais réécrits, corrigez à l’accueil (recharge, remboursement, fiche client) |
| Réservations | ignorée | refusée : déplacez-la sur le planning |
- Un client déjà au club (même e-mail ou téléphone, par exemple inscrit depuis l’application joueur) est relié, pas dupliqué.
- Un solde n’est repris qu’une fois par client, quel que soit le système d’identifiants d’un fichier suivant.
- Deux fichiers du même type appliqués en même temps passent l’un après l’autre (par club et par type) : le second voit les liens du premier.
- Un e-mail ou un téléphone qui appartient au compte d’un autre club est invisible pour ce club (RLS) : la ligne échoue avec cette raison, et la personne rejoint le club en se connectant.
Argent et formules
Section intitulée « Argent et formules »- Soldes : une écriture de crédit de porte-monnaie par client, libellée
Reprise de solde · <source>, dans la chaîne d’empreintes du journal. Elle est refusée si la caisse du jour est déjà clôturée. Pendant l’application d’un fichier de soldes, les encaissements à l’accueil attendent quelques secondes. Ce n’est pas un paiement : rien n’entre dans la caisse, le Z ni le FEC. Les soldes négatifs sont refusés (une dette relève de l’ardoise). Voir solde d’ouverture. - Formules : le droit est créé avec les séances restantes, à prix nul, sans nouvelle commande. Les carnets à 0 séance et les formules expirées sont ignorés.
- Chaque fichier appliqué laisse une entrée d’historique
import.applied(qui, source, fichier, comptes).
Réservations
Section intitulée « Réservations »Seules les réservations à venir sont importées (les passées sont ignorées). Elles sont créées confirmées, sans pré-réservation, avec les mêmes règles qu’à l’accueil : horaires, fermetures. Une réservation qui ne tombe pas sur un créneau (début entre deux créneaux, ou durée que le sport ne propose pas) est reprise telle quelle, marquée « hors créneau » dans l’aperçu et comptée (counts.offGrid) dans le rapport. La base de données décide des chevauchements et un conflit est signalé, jamais forcé. Le prix vient des tarifs du jour et la part reste à régler ; l’organisateur est le propriétaire qui applique le fichier, le client est le participant.
Les colonnes
Section intitulée « Les colonnes »Les en-têtes sont reconnus sans tenir compte de la casse, des accents ni de la ponctuation. Montants en euros (12,50, 1 234,50 €), dates JJ/MM/AAAA (ou AAAA-MM-JJ), heures 18:30 ou 18h30 dans le fuseau du club, téléphones 06 12 34 56 78 (enregistrés +33612345678).
Terrains (resources)
Section intitulée « Terrains (resources) »| Colonne | Obligatoire | Sens | Exemple |
|---|---|---|---|
| Identifiant | Identifiant du terrain dans l’ancien logiciel. Relancer un import avec le même identifiant met à jour au lieu de créer. | T-8 | |
| Nom | oui | Nom du terrain, unique dans le club. | Padel 4 |
| Sport | oui | Sport du club, par son nom (Padel, Squash…). | Padel |
| Site | Site du club. Facultatif quand le club n’a qu’un site. | Rochecorbon | |
| Zone | Regroupement affiché au planning (Intérieur, Extérieur…). |
Tarifs (tariffs)
Section intitulée « Tarifs (tariffs) »| Colonne | Obligatoire | Sens | Exemple |
|---|---|---|---|
| Identifiant | Identifiant du tarif dans l’ancien logiciel. Relancer un import avec le même identifiant met à jour au lieu de créer. | TAR-3 | |
| Libellé | oui | Nom du tarif. | Padel heures creuses |
| Sport | oui | Sport du club, par son nom (Padel, Squash…). | Padel |
| Terrain | Nom du terrain tel qu’il existe dans Rebond (ou son identifiant d’import). | Padel 1 | |
| Période | Période déjà définie au club (« Heures creuses »). Sinon, les jours et heures ci-dessous créent la période. | Heures creuses | |
| Jours | Jours concernés : « tous », « semaine », « week-end », « lun-ven » ou « lun,mer,ven ». Vide = tous. | lun-ven | |
| Début | Heure de début de la plage (incluse). Vide = 00:00. | 09:00 | |
| Fin | Heure de fin de la plage (exclue). Vide = 24:00. | 12:00 | |
| Durée | Durée de réservation concernée, en minutes. Vide = toutes. | 90 | |
| Client | « adhérent », « non-adhérent » ou vide pour tous. | non-adhérent | |
| Prix | oui | Prix de la réservation en euros, TTC. | 36,00 |
| Priorité | Le tarif de plus haute priorité l’emporte. Vide = 0. | 0 | |
| Valable du | Date de début de validité (JJ/MM/AAAA). | ||
| Valable au | Date de fin de validité, incluse. |
Clients (memberships)
Section intitulée « Clients (memberships) »Au moins l’un des deux : Email ou Téléphone.
| Colonne | Obligatoire | Sens | Exemple |
|---|---|---|---|
| Identifiant | Identifiant du client dans l’ancien logiciel. Relancer un import avec le même identifiant met à jour au lieu de créer. | C-1042 | |
| Nom | oui | Nom de famille. | Martin |
| Prénom | Prénom. | Léa | |
| Adresse email. Email ou téléphone obligatoire : c’est ce qui évite les doublons. | lea.martin@exemple.fr | ||
| Téléphone | Numéro de mobile, au format 06 12 34 56 78 ou +33 6 12 34 56 78. | 06 12 34 56 78 | |
| Niveau | Niveau de jeu, de 1 à 7 (décimales acceptées). | 4,5 |
Formules (entitlements)
Section intitulée « Formules (entitlements) »| Colonne | Obligatoire | Sens | Exemple |
|---|---|---|---|
| Identifiant | Identifiant de la formule dans l’ancien logiciel. Relancer un import avec le même identifiant ne crée rien de plus ; des valeurs changées sont refusées, à corriger au desk. | F-77 | |
| Client | oui | Identifiant du client (colonne Identifiant du fichier clients), son email ou son téléphone. | C-1042 |
| Type | oui | « carnet » (séances), « adhésion » (annuelle), « mensuel », ou le nom d’une formule du catalogue (« Annuel squash ») dont les conditions s’appliquent. | carnet |
| Libellé | Nom de la formule, affiché dans la fiche client. Vide quand le type est une formule du catalogue : son nom. | Carnet 10 séances | |
| Sport | Sport du club, par son nom (Padel, Squash…). | Padel | |
| Séances restantes | Carnets : séances encore jouables aujourd’hui. Obligatoire pour un carnet. | 6 | |
| Séances achetées | Carnets : nombre de séances à l’achat. Vide = séances restantes. | 10 | |
| Début | Date de début de validité. Vide = aujourd’hui. | 01/09/2026 | |
| Fin | Date de fin, incluse. Obligatoire pour une adhésion ; vide = sans fin pour un carnet. | 31/08/2027 |
Soldes portefeuille (wallets)
Section intitulée « Soldes portefeuille (wallets) »| Colonne | Obligatoire | Sens | Exemple |
|---|---|---|---|
| Identifiant | Identifiant du solde dans l’ancien logiciel. Relancer un import avec le même identifiant ne crée rien de plus ; des valeurs changées sont refusées, à corriger au desk. | S-1042 | |
| Client | oui | Identifiant du client (colonne Identifiant du fichier clients), son email ou son téléphone. | C-1042 |
| Solde | oui | Argent que le club détient pour le client, en euros. Repris tel quel dans le portefeuille. | 25,50 |
Réservations à venir (bookings)
Section intitulée « Réservations à venir (bookings) »Au moins l’un des deux : Durée ou Fin.
| Colonne | Obligatoire | Sens | Exemple |
|---|---|---|---|
| Identifiant | Identifiant de la réservation dans l’ancien logiciel. Relancer un import avec le même identifiant ne crée rien de plus ; des valeurs changées sont refusées, à corriger au desk. | R-5531 | |
| Terrain | oui | Nom du terrain tel qu’il existe dans Rebond (ou son identifiant d’import). | Padel 1 |
| Date | oui | Jour de la réservation (JJ/MM/AAAA). | 14/11/2026 |
| Heure | oui | Heure de début, heure du club. | 18:30 |
| Durée | Durée en minutes. Durée ou heure de fin obligatoire. | 90 | |
| Fin | Heure de fin (à la place de la durée). | ||
| Client | oui | Identifiant du client (colonne Identifiant du fichier clients), son email ou son téléphone. | C-1042 |
| Type | « partie », « partie ouverte » ou « cours ». Vide = partie. | partie | |
| Titre | Texte affiché sur le planning. |
Des exemples de fichiers sont dans e2e/fixtures/import/.
Depuis le terminal : bo import
Section intitulée « Depuis le terminal : bo import »bo import fait le même parcours que la page Import (envoi, correspondance, aperçu, application), à travers l’API de ce worktree, comme propriétaire du club, avec une session de développement (DEV_IDENTITY). Il sert à répéter une reprise en local ou sur une copie restaurée des données du club ; sur un club déployé, le propriétaire utilise la page Import.
pnpm bo import memberships --template # le modèle CSV ; les clés des champs avec --jsonpnpm bo import memberships chemin/clients.xlsx # envoi + correspondance + aperçu (comptes, lignes en erreur)pnpm bo import memberships chemin/clients.xlsx --apply # écrit ; rapport à côté du fichier (<nom>.rapport.csv)- Types :
resources,tariffs,memberships,entitlements,wallets,bookings. --source <logiciel>: le logiciel d’origine ; la correspondance est enregistrée par source.--map "lastName=Nom client,email=Mail"remplace la correspondance proposée (clés des champs :--template --json). Un en-tête qui contient une virgule ne peut pas être donné ainsi.--club boet--as <email du propriétaire>choisissent le club et le propriétaire.
Voir aussi
Section intitulée « Voir aussi »- La page Import de l’accueil, et le parcours Importer son club.
- Les notions : import, solde d’ouverture, droit.
- La référence de la CLI.