External adapter to import membership from helloasso to paheko
Matthieu Bessat
64f115d0d5
Sometimes, users import additional users in their helloasso org, for now I ignore them. |
||
---|---|---|
src | ||
.env.example | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
README.md | ||
TODO.md |
HelloAsso Paheko Adapter
The goal is to provide a way for organizations:
- to import helloasso membership information and members into paheko
And with some specifics features:
- manage subscriptions and activities
- implement helloasso custom fields mapping to paheko custom fields
- avoid duplication
Written in ust.
Getting started
Create a .env
file from .env.example
and fill in some secrets.
Run the program dotenv cargo run
Fonctionnement
Arbre de décision au moment de l'import :
- On va déjà récupérer la liste des utilisateurs en mode "summary" UserSummary` cad avec juste l'id, l'email, le prénom et le nom.
- Ensuite on va récupérer la liste des transactions avec helloasso pour cette période comptable
- ce qui compte c'est d'avoir la référence comptable
- on peut faire une req sql qui filtre sur les id ou alors sur un compte
- using accounting/years/{ID_YEAR}/account/journal (GET)
- ou alors req SQL
- On va créer une liste de réponse helloasso à traiter en filtrant les "réponses" d'helloasso. Pour chaque réponse, si l'id helloasso de cette réponse est trouvé dans la liste récupéré avant sur Paheko, alors on l'ignore. Sinon on garde
- Pour chaque réponse à traiter
- On va regarder si l'id de la réponse est trouvé dans une écriture comptable, si oui on ignore
- cela veut dire que la personne est déjà inscrite pour ajd
- On va regarder si l'email est déjà présent dans la liste des adhérents ou ancien adhérents (à N-1)
- Si non, on créé l'utilisateur
- Si oui, on ne créé pas d'utilisateur, on récupère l'id
- On va créer une activité pour cet utilisateur
- On va créer une écriture comptable, le numéro de la pièce comptable étant "HA/{ID_ANSWER}" (à la base je voulais le faire en JSON pour plus de détails, mais c'est trop gros)
- On va regarder si l'id de la réponse est trouvé dans une écriture comptable, si oui on ignore
PB: l'API permet d'importer des activités, mais pas de lier une écriture comptable
ya une table acc_transactions_users
qui permet de lier une transaction avec une activité d'un utilisateur
références helloasso
le order.id
et le answer.id
que retourne l'API d'helloasso sont en fait les mêmes,
Import from CSV
xlsx2csv -n "Adhérents PAPIER" ./wip_matthieu_b.xlsx > ./to_import.csv
cat ./tmp/adhesions_papier_nov2023.csv | cargo run -- --source csv
cat ~/.mnt/etoiledebethleem/copyparty/adhesions/to_import.csv | head -n 25 | sed ':a;N;$!ba;s/\(Champ complémentaire [0-9]\)\n/\1 /g' | sed 's/Champ complémentaire \([0-9]\)/CC \1/g'