# HelloAsso Paheko Adapter [HelloAsso](https://www.helloasso.com/) <-> [Paheko](https://paheko.cloud/) 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) 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' ```