External adapter to import membership from helloasso to paheko
Find a file
2024-01-21 23:45:06 +01:00
src fix(normalize): first name 2024-01-21 23:45:06 +01:00
.env.example feat(config): add ha org slug, ha form name, pk activity name config 2023-12-31 01:07:13 +01:00
.gitignore feat: add membership basic support 2023-11-09 09:14:14 +01:00
Cargo.lock fix(paheko): retry in case of email duplication 2024-01-19 15:58:07 +01:00
Cargo.toml fix(paheko): retry in case of email duplication 2024-01-19 15:58:07 +01:00
README.md refactor: utils organizations and add reference field in CSV sync 2024-01-19 12:54:55 +01:00
sync_csv.sh feat: handle additional donations 2024-01-21 14:37:30 +01:00
TODO.md feat: sort answer by date, olders firsts 2024-01-21 23:35:08 +01:00

HelloAsso Paheko Adapter

HelloAsso <-> Paheko

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'