Commandes #490
closedEnregistrement des contributions en comptabilité via script externe
100%
Description
Nous souhaitons automatiser toute la saisie comptable des renouvellements de cotisation et des donations. Pour cela, il faudrait que l'on puisse configurer galette afin qu'il appelle un script externe lors de la création des contributions et lui passe une structure de données (encodée en JSON) en entrée:
{ "type":"contribution", "amount": 10, "voucher": "/tmp/galette-XXXXXXX.pdf", "category": { "id": 1, "name": "Cotisation annuelle" }, "payment": { "type": "paypal", "fee": 0.56, "paypal_buyer_email": "adherent@example.com", "paypal_txn_id": "6EG67315JL589342H", ... } }Quelques détails:
- "type": type d'écriture comptable remontée par galette. Vaut "contribution" uniquement à l'heure actuelle (cela permet d'étendre l'usage du script à d'autre cas dans le futur, type remboursement de frais)
- "amount": le montant de la contribution (montant brut, i.e. avant les frais éventuels)
- "category": des informations de classification de la contribution, concrètement on file toutes les infos sur le type de contribution (au moins "id" et "libellé")
- "payment": des informations sur le paiement, la clé "type" est obligatoire
et définit le moyen de paiement ("paypal", "check", "transfer", "cash", "other"). La clé "fee" devrait être standardisée pour contenir les frais de paiement qui ont été imputés sur le montant reçu. Dans le cas de paypal, on veut tous les paramètres retournés par paypal (préfixé par "paypal_" pour éviter les soucis). - "voucher" est l'emplacement (possiblement temporaire) d'un fichier (PDF) qui peut servir lieu de pièce justificative à l'écriture comptable (cf http://redmine.ulysses.fr/issues/394 pour la demande de modifier galette pour qu'il sache générer ces documents)
Il faut vérifier que le script se soit bien terminé. S'il renvoie un code d'erreur, il faut envoyer un mail aux administrateurs/trésorier avec la copie de la sortie standard et de la sortie d'erreur ainsi que tous les éléments nécessaires à la saisie comptable manuelle (sauf le justificatif, on doit pouvoir le regénérer facilement depuis galette de toute façon).
Updated by Johan Cwiklinski almost 12 years ago
- Project changed from Plugins to Galette
- Assignee set to Johan Cwiklinski
- Tracker changed from Evolution to Commandes
Updated by Johan Cwiklinski almost 12 years ago
- Category set to Core
- Target version set to 0.7.5
- Commanditaire set to Debian France
Updated by Johan Cwiklinski over 11 years ago
- % Done changed from 0 to 100
- Status changed from Nouveau to Résolu
Appliqué par commit f8f392c76b6928e7ef6bd9e761490fdbbd57e47a.
Updated by Johan Cwiklinski over 11 years ago
Récupérer le code de retour après exécution d'un script n'est pas chose aisée (je ne suis même pas certain que ce soit faisable actuellement).
Dans le normal, lorsque l'on clôt le processus qui exécute le script,on obtient la code de retour standard, et on peut se baser la dessus pour savoir si le script a échoué ou réussi. Dans la pratique, ce retour est plutôt hasardeux.
Plutôt que de pondre une usine à gaz impossible à maintenir, j'ai préféré une solution plus simple (et que le quidam pourra comprendre facilement), à savoir considérer que l'on envoie un courriel à l'administrateur si le script renvoie une sortie (à la mode cron en somme).
À noter : la révision f8f392c7 ne concerne que Galette, et ne comprend donc pas les informations relatives à Paypal. Je souhaite que le côté Galette soit validé avant de modifier le plugin, pour éviter des allers-retours inutiles et sources de bogues. Si tout se passe bien, l'ajout d'informations sur la contribution et le paiement sont déjà prévus, et n'ont qu'à être renseignés.
Updated by Raphaël Hertzog over 11 years ago
Johan Cwiklinski a écrit :
Récupérer le code de retour après exécution d'un script n'est pas chose aisée (je ne suis même pas certain que ce soit faisable actuellement).
$pidstatus = proc_close(...);
$exitcode = pcntl_wexitstatus($pidstatus);
Mais bon c'est spécifique à Unix et il faut peut-être se passer de la deuxième commande pour Windows.
Plutôt que de pondre une usine à gaz impossible à maintenir, j'ai préféré une solution plus simple (et que le quidam pourra comprendre facilement), à savoir considérer que l'on envoie un courriel à l'administrateur si le script renvoie une sortie (à la mode cron en somme).
OK, ca me va aussi.
À noter : la révision f8f392c7 ne concerne que Galette, et ne comprend donc pas les informations relatives à Paypal. Je souhaite que le côté Galette soit validé avant de modifier le plugin, pour éviter des allers-retours inutiles et sources de bogues. Si tout se passe bien, l'ajout d'informations sur la contribution et le paiement sont déjà prévus, et n'ont qu'à être renseignés.
J'imagine que je dois déployer un galette de test donc pour valider cette partie. J'essaie de faire cela mercredi.
Updated by Johan Cwiklinski over 11 years ago
Raphaël Hertzog a écrit :
$pidstatus = proc_close(...);
$exitcode = pcntl_wexitstatus($pidstatus);Mais bon c'est spécifique à Unix et il faut peut-être se passer de la deuxième commande pour Windows.
Le problème, c'est justement que le retour de proc_close
est souvent incorrect :/
Plutôt que de pondre une usine à gaz impossible à maintenir, j'ai préféré une solution plus simple (et que le quidam pourra comprendre facilement), à savoir considérer que l'on envoie un courriel à l'administrateur si le script renvoie une sortie (à la mode cron en somme).
OK, ca me va aussi.
Col :)
À noter : la révision f8f392c7 ne concerne que Galette, et ne comprend donc pas les informations relatives à Paypal. Je souhaite que le côté Galette soit validé avant de modifier le plugin, pour éviter des allers-retours inutiles et sources de bogues. Si tout se passe bien, l'ajout d'informations sur la contribution et le paiement sont déjà prévus, et n'ont qu'à être renseignés.
J'imagine que je dois déployer un galette de test donc pour valider cette partie. J'essaie de faire cela mercredi.
Oui, tout à fait. Merci.
Updated by Raphaël Hertzog over 11 years ago
Il faut rajouter une clé "member" décrivant l'adhérent sous la forme d'un nouveau tableau associatif avec les informations suivantes:
- name: le nom ou la raison sociale
- email: l'adresse email associée
- organization: booléen indiquant si c'est un personne morale (organization) ou pas
- organization_name: nom de l'organisation (présent uniquement si organization=True)
- status: le statut de l'adhérent (membre actif, membre bienfaiteur, etc.)
- country: le pays de l'adhérent (en compta le pays d'origine peut avoir un impact)
À noter que cette clé "member" peut être absente pour une contribution externe anonyme...
Updated by Johan Cwiklinski over 11 years ago
- Status changed from Résolu to Fermé