Catégorie « Développements perso »

Application web de gestion d'achats groupés

Voici un autre module Change que je suis en train de développer. Pour le coup, il répond à un besoin très spécifique et correspond plus à un extranet qu'à un site web classique. Mais bon, puisque moi j'en avais besoin, peut-être que d'autres en auront l'usage aussi. Ou pas mais on peut difficilement savoir avant d'en parler :)

De quoi s'agit-il ?

Depuis des années, j'achète souvent sur le net, en particulier des biens culturels et ludiques : livres, mangas, DVD CD, jeux de plateaux, jeux à collectionner, jeux vidéos, etc. Grouper les achats permet en général de réduire les frais de port et en bonus allège un peu le coût écologique total des livraisons. Donc on a pris l'habitude avec mes frère, sœur et parents principalement de grouper nos achats de ce type. Ceci implique de gérer des comptes puisqu'à chaque commande, une seule personne paye effectivement et les autres doivent le rembourser. Le même principe vaut pour les cadeaux groupés ou autres courses occasionnellement faites pour le compte des autres.

S'échanger du liquide à chaque fois c'est chiant, donc pendant longtemps on est passés par du mail pour se tenir au courant de l'état du solde de chacun. Mais le mail, c'est quand même assez peu adapté : quand on se plante et qu'on part du mauvais mail pour calculer les nouveaux soldes ou quand on se demande si on a bien pensé à prendre en compte tel ou tel achat c'est vite le bazar. Puis faut faire tous les calculs à la main, c'est lourd et ça introduit un risque d'erreur non négligeable.

Du coup comme on est quand même une famille de développeurs, on se disait que faire une appli web accessible de n'importe où pour gérer tout ça ce serait cool et ça nous faciliterait la vie (enfin sauf ma mère qui elle se cantonne en général à rappeler qu'en achetant moins ça serait tout de suite plus simple, mais avant de prendre sa retraite, elle était prof de maths, pas informaticienne, donc on lui pardonne). Comme toujours, avec les super solutions ça s'est éternisé quelque temps à l'état de projet hypothétique parce que bon, c'est bien beau de se dire qu'il faudrait le faire, mais c'est quand même vachement plus simple que de le faire réellement.

Mais bon, un jour on se dit qu'au final si on veut pas arriver au point où on aura passé plus de temps à se dire qu'il faudrait le faire que le temps nécessaire pour le faire réellement il faut se lancer. Et donc il y a quelques mois j'ai pris mon courage à deux mains et finalisé une première version utilisable (loin d'être complète et ergonomiquement optimale, mais utilisable).

Comme j'ai l'habitude de travailler avec Change, c'est donc un module Change. Ça aurait pu être fait avec n'importe quelle autre techno, mais c'est celle-là que je maitrise.

Bon et donc ça fait quoi concrètement ?

Pour l'instant ce module va vraiment à l'essentiel : il gère des "factures" (que j'aurais pu appeler aussi "transactions") correspondant à un achat dans une boutique avec le montant total payé, les réductions et les frais inclus dans ce total et enfin le détail des achats avec la répartition entre les acheteurs.

Formulaire de création d'une facture
Formulaire de création d'une facture

L'outil valide la cohérence globale de ce qui est saisi, en particulier :
- les répartitions doivent correspondre au total des quantités saisies
- le montant payé doit correspondre au total des lignes après application des réductions et frais
On évite ainsi pas mal d'erreurs de saisie.

Validation de la cohérence de la facture
Validation de la cohérence de la facture

Une fois la facture enregistrée, la répartition des coûts entre les différents acheteurs est calculée (les réductions et frais indiqués étant répartis au prorata des achats) et leurs soldes sont automatiquement mis à jour. Les différents intervenants sont alors avertis par e-mail qu'une facture qui les concerne vient d'être saisie.

Détail d'une facture
Détail d'une facture

On peut également consulter la liste des comptes utilisateurs avec leurs soldes et accéder au détail d'un compte qui donne la liste de ses factures.

Liste des comptes
Détail d'une facture
Détail d'un compte
Détail d'un compte

Et enfin on peut également accéder à l'historique complet des factures enregistrées.

Liste des factures
Liste des factures

C'est tout pour le moment, ce qui suffit à répondre nos besoins minimaux et apporte déjà nettement plus de simplicité que le mail et moins d'erreurs grâce aux différents contrôles de cohérence.

Évolutions envisagées

Même si l'ensemble répond aux besoins minimaux, c'est encore loin d'être complet et ergonomique.

Gestion des boutiques

En effet, la création d'une nouvelle boutique implique de passer par le backoffice, ce qui est assez contraignant. De même, il n'y a pas encore de listing des boutiques sur le site qui permettrait de suivre l'historique des dépenses dans chacune d'entre elles.

Saisie des factures

La saisie des factures est encore assez figée : tous les comptes ont systématiquement leur colonne dédiée, ce qui fonctionne à note échelle actuelle de 5 personnes, mais poserait des problèmes avec une plus grosse volumétrie (qui pourrait être vite atteinte si l'on ajoute des acheteurs plus occasionnels).

De même le nombre de lignes est figé d'autorité à 30, ce qui est à la fois beaucoup trop la plupart du temps et pas assez dans certains cas exceptionnels.

Modification et validation des factures

À l'heure actuelle, les factures sont "validées" automatiquement lors de leur saisie. C'est-à-dire qu'elles ne sont pas modifiables et que les soldes des intervenants sont mis à jour immédiatement.

Pour une utilisation plus pratique et rigoureuse, il est prévu d'ajouter une validation par l'ensemble des intervenants avant de mettre à jour les soldes, ceci permettant de détecter les éventuelles erreurs. De plus tant qu'elle n'est pas validée par tout le monde, la facture restera modifiable, voire annulable.

Autres évolutions envisagées

D'autres évolutions seraient intéressantes à mettre en œuvre :

  • Gestion de versements directs : dans notre cas, certaines personnes passent plus fréquemment des commandes que d'autres. Il en résulte que les soldes ont tendance à se déséquilibrer, déséquilibres qui se règlent en général par un versement (liquide, chèque, virement...). Il serait donc intéressant de pouvoir matérialiser dans une entrée dédiée un versement direct d'une personne à une autre dans un formulaire simplifié.
  • Pour certains achats (au hasard les cadeaux), il peut être pratique de ne rendre visibles certaines commandes (voire certaines lignes seulement) que par les personnes concernées (notamment pas le destinataire du cadeau).

Je ne dis pas que tout sera fait et encore moins sous quels délais, mais dans l'idée c'est pour l'instant l'essentiel qu'on ait détecté comme évolutions à faire pour améliorer l'appli.

Accès au code

Comme la plupart de mes modules, celui-ci a vocation à être publié (d'ailleurs en théorie l'Afero GPL l'impose un peu) une fois qu'il sera suffisamment finalisé. Je compte également l'archiver dans un repository publique, mais je n'ai pas encore tranché entre passer par un site existant genre GitHub ou SourceForge comme pour mes précédents modules (qui aurait l'avantage d'une mise en place simplifiée) et m'installer un repository local sur mon serveur avec un accès web aux fichiers (qui d'un côté me plait mieux parce que je garde la maitrise de mon repository plutôt que de le stocker sur une plateforme tierce centralisée, mais implique de passer du temps à le mettre en place).

Quoi qu'il en soit, si jamais quelqu'un est intéressé (sait-on jamais) je peux déjà lui fournir la version actuelle sur simple demande ^^


RBS Change 3.5 et messagerie privée

La version 3.5 de RBS Change est sortie il y a peu avec ps mal de nouveautés et améliorations diverses.

À l'occasion de cette version, le module de messagerie privée que j'ai développé pour L'Assemblée des Funomanciens et publié ici a été reversé dans le pool de modules standards d'RBS Change. Le repository sourceforge se sera donc plus alimenté pour les versions à venir et est remplacé par l'entrée modules.privatemessaging.git du repository d'RBS Change.


Messagerie privée pour RBS Change

Je viens de créer la page dédiée à ce module ainsi que le projet SourceForge pour ce module avec une première version de développement.

Donc au programme de ce module déjà évoqué il y a quelque temps : des messages organisés en conversations à deux participants ou plus. Il est possible d'inviter un nouveau participant en cours de route et de quitter une conversation (elle ne sera effacée en base qu'une fois que tous les participants l'auront quittée).

Cette version n'est pas encore utilisable notamment sur un point : la sélection des destinataires qui doit encore être revue. Mais il y a déjà pas mal de choses fonctionnelles, donc ça valait le coup de l'archiver quelque part ^^

Ce qu'il me reste à faire sur ce module avant d'en sortir une première version stable :

  • comme dit plus haut : implémenter une sélection viable des destinataires (là, c'est une liste à sélection multiple... ça va quand il y a dix membres, mais ça ne tient absolument pas une grande volumétrie).
  • indexer les messages pour qu'on puisse les retrouver dans la recherche, mais en gérant correctement les permissions d'accès pour que seuls les participants de la discussion puissent les voir.
  • d’une manière ou d’une autre (rien n’est encore vraiment arrêté dans la façon de faire), possibilité de marquer des messages/discussions : “à traiter”, “réponse attendue”, “contient des informations importantes”…

Modules à venir pour RBS Change

J'entame progressivement la migration de mes forums vers RBS Change, ce qui implique le développement d'un bon nombre de fonctionnalités qui ne sont pas présentes dans les modules standards. Voici une petite liste de ce que j'ai déjà commencé :

Logos aléatoires

Il s'agit simplement de reproduire l'affichage aléatoire des logos comme c'est le cas sur EDForum. La version actuelle du module se borne à ce fonctionnel strict : toutes les n minutes, on change de logos en choisissant aléatoirement parmi les logos définis en backoffice, chaque logo ayant un poids donné.

C'est clairement pas le plus utile des modules, mais c'est une fonctionnalité simple et il fallait bien commencer quelque part...

Évolutions à venir

À terme, j'ajouterai sans doute une galerie des logos en cours et passés.

Micro-news

Là aussi on reproduit à l'identique une fonctionnalité d'EDForum : il s'agit simplement de mettre en avant des liens d'actualités. Chaque "micro-news" contient un libellé et un lien (soit un document du site, soit une URL externe).

Le module dispose également d'une fonction d'importation de flux RSS externes et les blocs d'affichage s'accompagnent de la génération de flux RSS.

Messagerie privée

Là on entre dans le vif du sujet : après deux modules mineurs, on arrive à une fonctionnalité importante dans tout site communautaire (donc notamment un forum).

J'ai choisi de ne pas reprendre le modèle standard de messagerie privée calquée sur les mails qu'on peut trouver dans la plupart des gestionnaires de forums pour reprendre le principe utilisé sur les forums MesDiscussions.Net (Hardware.fr, JudgeHype ou encore Doctissimo) qui présente les messages plutôt comme des conversations, sous la même forme que les sujets des forums (quand on y pense c'est nettement plus pratique et logique).

Ce module-là est encore loin d'être fini mais il permettra entre autres :

  • un nombre de participants potentiellement supérieur à 2 (nombre maximum réglable par configuration).
  • invitation de nouveaux participants en cours de route.
  • indexation des messages.
  • possibilité de modifier un message tant que personne ne l'a lu.
  • d'une manière ou d'une autre (rien n'est encore vraiment arrêté dans la façon de faire), possibilité de marquer des messages/discussions : "à traiter", "réponse attendue", "contient des informations importantes"...

Pour plus d'informations sur le développement de ce module ou discuter de ses fonctionnalités, rendez-vous sur le sujet dédié sur EDForum.

La page dédiée et le repository SVN seront créés quand j'approcherai suffisamment d'une version utilisable.

Et ensuite ?

Ensuite, je passerai sans doute à la gestion des smileys, l'ajout des bbcodes non-gérés en standard par Change... Ou autre chose selon ce qui m'inspirera le plus sur le moment :p

Quant à mon module de gestion de bibliothèque que j'évoquais lors de la sortie de Change, il a pas mal avancé, mais je le laisse un peu de côté pour le moment puisque je ne le mettrai pas en ligne avant d'avoir migré les forums...

EDIT 16h41 :
Finalement, j'ai fini ce qui manquait dans le module Micro-news, j'ai donc ajouté la page dédiée et initialisé le repository SVN avec la première version du code.


Plugin Post-lister pour Wordpress - version 0.4

Je viens de taguer la version 0.4 de mon plugin Post-lister avec pas mal de petites nouveautés.

La première et la plus importante fait suite à la demande d'Adrian et ajoute de deux nouveaux paramètres permettant d'afficher le contenu des articles et commentaires listés ainsi que l'avatar de l'auteur.

On a ensuite plusieurs améliorations plus mineures :

  • suite à la question de Sandrine, j'ai mis à jour la documentation en listant les options de tris propres à chaque liste et pour faciliter la configuration des widgets, j'ai remplacé le champ texte par un menu déroulant, ce qui évite d'avoir à retenir lesdits paramètres.
  • comme je trouvais les formulaires de configuration des widets un peu hauts, je les ai tous les deux découpés en deux colonnes ce qui évite d'avoir à "scroller" pour en voir le bout.
  • j'ai également complété les liens vers les commentaires dans les listes de commentaires pour qu'ils pointent sur le commentaire en lui-même (via l'ancre prévue à cet effet dans les thèmes bien faits) plutôt que bêtement vers le haut de la page de l'article associé.
  • j'ai enfin corrigé un bug qui faisait que si l'on cliquait sur le bouton "annuler" du formulaire de l'un des widgets puisqu'on enregistrait les modifications, le widget perdait l'ensemble de ses configurations.

Par ailleurs, j'ai également un peu revu la doc et rajouté un fichier readme en français.

Voilà voilà, c'est tout pour cette mise à jour, mais ça me semble déjà pas mal ^^