====== Hackathon système d'information des 8 et 9 avril 2017 ====== « Le mot hackathon désigne un événement où un groupe de développeurs volontaires se réunissent pour faire de la programmation informatique collaborative, sur plusieurs jours. » [[https://fr.wikipedia.org/wiki/Hackathon|Source]]. ===== Objectifs ===== * Ne pas avoir de services impayés. Ne pas oublier le problème numéro 1 : **les adhérent⋅e⋅s ne savent pas ce qu'il⋅elle⋅s doivent à l'asso !** * Améliorer la qualité et l'attractivité des services * Avoir de la visibilité pour prendre des décisions au sein de l'asso ===== Bilan ===== ==== Solution retenue ===== * COIN a été retenu pour l'interface adhérent (et gestion de la comptabilité adhérent⋅e⋅s). Raisons : * parce qu'il est déjà utilisé par d'autres FAI de la FFDN * parce que la techno est connue (Python / Django) * parce que l'implémentation actuelle répond grosso-modo à pas mal de nos besoins (même s'il y a nécessité d'adapter des choses) * Néanmoins COIN ne répond pas au besoin de comptabilité général (compta fournisseur et autres, absence de fonctionnalités et concepts avancés de compta). Il faut donc un outil dédié à la compta générale. Cet outil sera [[http://www.tryton.org/fr/|Tryton]]. * On part donc sur un couple COIN+Tryton. * Tryton gérera la partie compta globale (adhérent⋅e⋅s + fournisseurs + etc.) * COIN gérera "seulement" la génération des factures, la gestion des paiements et du solde des adhérents * COIN fournit aussi l'interface avec les adhérent⋅e⋅s (gestion de stock, interface de résumé des paiements et des factures, services, relance par mail) * Tryton doit pouvoir demander à COIN les factures et les paiements enregistrés de manière à ce que les outils soient synchronisés * On doit pouvoir importer facilement le .csv de la banque vers COIN/Tryton pour prendre en compte facilement/automatiquement les entrées/sorties d'argent Ce hackathon s'est concentré sur la partie COIN. Il y a également eu une grosse discussion sur la gestion des factures et des paiements des adhérent⋅e⋅s. Partant du principe qu'il est généralement difficile de faire l'association entre une facture et un virement bancaire (exemple : membre qui aurait 2 mois de VPN de retard qui paye d'un seul coup 40 € pour rattraper le coup et payer quelques mois d'avance), nous abandonnons l'idée d'une correspondance claire entre facture et virement. À la place : les paiements reçus sont automatiquement alloués aux factures les plus anciennes, et un "solde de compte" est affiché aux adhérents. ==== Travail effectué ===== * Création d'un fork de COIN sur https://code.ffdn.org/ARN/coin en attendant de préciser les choses avec l'équipe de devs de COIN * Création d'un package d'installation Yunohost pour COIN : https://github.com/YunoHost-Apps/coin_ynh * Le package permet l'installation sur la racine d'un domaine. COIN n'est pas encore adapté pour une installation dans un sous-dossier * L'objectif ici était de préparer le terrain pour rendre possible le déploiement de coin_ynh avec l'appli openvpn_ynh (il serait ainsi possible de monter un couple SI + serveur VPN ipv4 publique, de quoi démarrer un petit FAI). * Gestion de la comptabilité des adhérent⋅e⋅s flexible et automatique : https://code.ffdn.org/ARN/coin/commits/flexible-accounting * "Découplage" de la notion de paiements/virement et de factures (initialement très couplés dans COIN) * Allocation automatique des paiements/virement aux factures les plus anciennes * Gestion du solde du compte adhérent⋅e + affichage du solde et des paiements dans l'interface web (en plus des factures) * Fonction d'import des virements adhérent⋅e⋅s à partir du CSV du compte bancaire * Affectation automatique entre les virements et les adhérent⋅e⋅s (autant que possible en fonction d'infos présentes dans le libellé du virement) * Possibilité, pour les nouveaux⋅elles adhérent⋅e⋅s de s'auto-inscrire sur COIN : https://code.ffdn.org/ARN/coin/src/registration * Pour s'inscrire, un visiteur remplit le formulaire, il reçoit un mail de validation, il clique dessus et il est connecté directement et une indication de référence à mettre dans le libellé de son virement qui paiera la cotisation s'affiche. * Il est possible de désactiver cette fonctionnalité en utilisant le paramètre REGISTRATION_OPEN. Dans ce cas l'affichage est modifié pour un mode de fonctionnement où les administrateur⋅rice⋅s du FAI créent les comptes dans l'interface (rétro compatibilité avec le système des autres FAI utilisant COIN). * Le format des libellés de virement est à préciser dans le paramètre BANK_TRANSFER_LABEL * Ce code a été proposé dans l'upstream : https://code.ffdn.org/FFDN/coin/pulls/106 * Permettre aux adhérent⋅e⋅s d'auto-modifier leurs informations : https://code.ffdn.org/FFDN/coin/pulls/107 ==== Travail restant à faire ==== === Première release avec les fonctionnalités Galette + fonctionnalités comptables de COIN + affichage du solde à partir du CSV de la banque === * Liée à la gestion automatique de compta adhérente * Gérer le cas où un paiement est explicitement lié à une facture * Ne pas laisser la possibilité d'une facture à 0 € car, comptablement, une facture correspond à un minimum de 0,01 €. Il n'est pas possible de saisir une facture de 0,00 € dans un programme de comptabilité * [IMPORTANT] Avoir de vrais journaux de la comptabilité adhérente "automatisée" dans COIN en cas de soucis * Vérifier que le découpage facture<->paiement n'introduit pas de bugs dans des parties non testées de COIN * Tester/adapter l'import CSV par rapport au format CSV de la vraie vie et de la vraie banque * Gestion des notifications par mail : * (pour les admins) pas de CSV importé depuis X semaines * (pour les admins et adhérent⋅e⋅s) facture pas payée depuis X semaines * (pour les adhérent⋅e⋅s) émission d'une facture * (pour les adhérent⋅e⋅s) réception d'un paiement * (pour les admins) pas de correspondance trouvée entre un paiement et un⋅e adhérent⋅e ; en attente de correspondance (nécessite probablement de créer un attribut "en attente de matching" pour les paiements) * Gérer les "factures" / "pièces comptables" pour les dons et adhésions. Quelle sémantique utiliser dans l'interface ? « Factures et reçus » * Possibilité de générer des avoirs (vérifier que c'est possible) * Discuter avec les développeur⋅euse⋅s de COIN pour savoir ce qu'il⋅elle⋅s pensent des modifs, idéalement pour merger avec eux. Un mail a été envoyé à la FFDN en ce sens. * Afficher les informations VPN/VPS/Housing de l'adhérent⋅e * Paramétrer COIN * Déployer pour de vrai * Importer les données depuis Galette * Lier le isp.json à db.ffdn.org afin de mettre automatiquement à jour dans la base de données FFDN le nombre d'adhérent⋅e⋅s à l'asso et le nombre d'abonné⋅e⋅s à chaque service === Release "manipulation des services" === * Pilotage des services via COIN * État de mes services * Configuration de mes services (redémarrer VPS, configurer reverses DNS, etc.) * Téléchargement .cube * Assignation des IPs via COIN * (optionnel/bonus) Système de hook sur les événements 'facture payée', 'facture impayée', 'nouvel adhérent', ... ? (Possibilité d'interface avec les services (VPS, VPN, Yunohost?)) === Release esthétique === * (optionnel ?) Avoir un CSS cool/moderne/propre === Release "liaison avec Tryton : comptabilité globale super carrée" === * Installer Tryton (package ynh ? ) * Tryton : créer l'opération bancaire de cotisation pour les 15 premiers euros * Tester Tryton et COIN afin de vérifier que le modèle est valide * Tryton * Test import banque * Test import Facture * Import de tiers * Saisie facture fournisseurs * Vérif de la structure de la BD * Export de certains mouvements * Test API : bug installation apps >> passer par le client loud COIN envoie à Tryton : * les nouveaux adhérent⋅e⋅s (quand le⋅a nouvel⋅le adhérent⋅e est créé dans COIN) * ID * Nom * Prénom * la facture (quand une nouvelle facture est créé dans COIN) * date * montant * ID adhérent * code comptable (credit) OU offre * numéro de facture * les paiements et leur affectation automatique Tryton envoie à COIN * Liste des soldes des comptes tiers adhérents * ID adhérent * solde de son compte * Liste des mouvements non lettrés des comptes de tiers adhérents (= facture non payées + virement non associé à une facture) ===== Remue méninges pré-hackathon des besoins d'ARN en système d'information ===== * Mettre à jour ce que dois payer chaque abonné⋅e. Ne pas oublier le problème numéro 1 : Les adhérent⋅e⋅s ne savent pas ce qu'il⋅elle.s doivent à l'asso ! * Émission de facture * Créer des procédures automatisées pour déployer VPN et VPS * Relier les comptes adhérents à hub.netlib.re * Email automatiques (bienvenu, relances, feedback, etc...) * Un système de rapprochement bancaire à partir de l'export CSV des entrées sur le compte bancaire * Un système de localisation du stock (un pad https://pad.tetaneutral.net/p/stock ?) * Configurer son reverse DNS (VPN, VPS, housing) * Des procédures de suivis (paiement fournisseurs ?) * Suivi de ce qui a été fait ? * Génération de .cube * Génération du .json FFDN * Liaison avec wifi-with-me * Envoi de SMS en cas de panne https://chiliproject.tetaneutral.net/projects/tetaneutral/wiki/AtelierPlateformeSMS * Événement * Nouvelle adhésion * Fin d'adhésion * Souscription à un service * Nouvelle facture ? * Paiement de facture * Non-paiement de facture * Expiration certificat * Espace adhérent: * Mes informations (voir légalement parlant si on est obligé de stocker le nom/prénom) * Statut cotisation * Mes factures * Mes dons (non défiscalisés) * Mes services * Etat de mes services * Configuration de mes services (Redémarrer VPS, configurer reverse DNS) * Téléchargement .cube * Matériel (ce que je prête, ce que l'asso me met à disposition, ce que l'asso stocke chez moi) Comment faire pour qu'un espace adhérent ne soit pas perçu comme un espace client et encourage plutôt au bénévolat à la participation ? * Espace bénévoles/CA * Suivi compta * Rapprochement bancaire * Écriture comptable * Dashboard pour bénévoles ARN ? * Nombre d'IP dispo par services * Nombre d'emplacements dispo dans la demi baie * Ressource utilisable pour les VPS * Nombre de VPN possible * Suivi de la conso * Evolution par service du nombre de souscription * Suivi des actions * Coût moyen par service ??? ==== Comparatif des solutions existantes ==== * COIN https://listes.illyse.org/wws/arc/si Le SI de FAI Maison et Illyse (python 2) https://code.ffdn.org/FFDN/coin * Djadhere https://code.ffdn.org/tetaneutral.net/djadhere Le SI de tetaneutral (python 2) * Odoo 8, 9, 10 ??? (python 2) * Le gros soucis c'est la gouvernance de ce projet et sa pérénité * package odoo_ynh * Il y a quelques modules pour associations * Par contre, faire un espace adhérent⋅e⋅s risque d'être galère * Tryton (python 3) * À mon sens il n'y a pas les bons modules, il y aurait tout à faire http://demo4.2.tryton.org/ * Dolibar (php) * Utilisé par Rhizome et finalement Jocelyn code sur COIN... * package dolibar_ynh * Autres outils : * Proposition de plan comptable https://code.ffdn.org/FFDN/compta * ISP format https://code.ffdn.org/FFDN/isp-format * Réflexion tetaneutral https://pad.tetaneutral.net/p/web https://pad.tetaneutral.net/p/djadhere