Enregistrement des contributions en comptabilité via script externe (Commandes #490)


Added by Raphaël Hertzog almost 2 years ago. Updated over 1 year ago.


Status:Fermé Start date:01/18/2013
Priority:Normal Due date:
Assignee:Johan Cwiklinski % Done:

100%

Category:Core
Target version:0.7.5
Commanditaire:Debian France

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).


Related issues

related to Galette - Commandes #394: Possibilité d'éditer des factures. Fermé 10/22/2012

Associated revisions

Revision f8f392c7
Added by Johan Cwiklinski over 1 year ago

Add ExternalScript called after new contribution creation; fixes #490

Revision 84bb469d
Added by Johan Cwiklinski over 1 year ago

Add member informations on post contribution script; refs #490

Revision 3ceedec6
Added by Johan Cwiklinski over 1 year ago

Execute post contribution script, if any; refs #490

Revision 44aa6a07
Added by Johan Cwiklinski over 1 year ago

Call post contribution script even if we are not receiving a real contirbution (that is not stored in Galette); refs #490

History

Updated by Johan Cwiklinski almost 2 years ago

  • Tracker changed from Evolution to Commandes
  • Project changed from Plugins to Galette
  • Assignee set to Johan Cwiklinski

Updated by Johan Cwiklinski almost 2 years ago

  • Commanditaire set to Debian France
  • Target version set to 0.7.5
  • Category set to Core

Updated by Johan Cwiklinski over 1 year ago

  • % Done changed from 0 to 100
  • Status changed from Nouveau to Résolu

Updated by Johan Cwiklinski over 1 year 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 1 year 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 1 year 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 1 year 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 1 year ago

  • Status changed from Résolu to Fermé

Also available in: Atom PDF