Git Product home page Git Product logo

guidoline's Introduction

Guidoline

Gestion d'adhérents Guidoline.

Bulletins d'adhésions

Forms

Cotisations

Dues

Adhérents

Members

Utilisateurs

Users

guidoline's People

Contributors

ziopod avatar bertrandkeller avatar

Watchers

 avatar

Forkers

bertrandkeller

guidoline's Issues

Interface API

Mise en place d'une interface API.

Champs d'usage :

  • Multiples instances d'interfaces Front pour une instance logicielle1 ;
  • Interconnectivité d'instance facilité2 ;
  • Interconnectivité SaaS facilité #53 ;

Footnotes

  1. Faciliterais la mise en place d’interfaces spécialisés pour divers usage (ex. interface de contrôle d'adhésion, logiciel statistiques etc.).

  2. Faciliterais la centralisation (mutualisation) d'instances pour un regroupement d'associations.

  3. Prérequis pour l'interconnectivité SaaS.

Afficher pagination

Ajouter un affichage du nombre de page (xx/xx) en haut à droite du tableau des les listes.

Indication des adhérents actifs

C'est lié à un problème

L'indication des adhérents actifs ou non (adhésion valide) est calculé lorsque le champ is_active est sollicité (lors de l'affichage par exemple). Cf. Model_Members::get().

Amélioration idéale

L'idéale serait une tâche CRON basé sur la date de péremption des adhésions qui déclencherais la mise à jour de la valeur de is_active.

Solution alternative

is_active pourrait être mise à jour manuellement lorsque qu'un bulletin d'adhésions est désactivé. À placer dans Model_Form::update().

Apprentissage, documentation, adoption, stratégie d'implémentation

https://koseven.dev/documentation/api/ORM#update

Extraire de la base de donné un fichier SQL

Analyse statistique de fréquentation.

Deux fois par an nous devons faire une analyse statistique de nos fréquentations.
Nous avons besoins de savoir dans quel atelier les adhérents ont cotiser / ou habitent-ils / le genre de chacun et l'age.

Amélioration idéale

Créer une interface de récupération de donnée à partir des factures ( Atelier Rouen - Atelier Sotteville etc...)

Méthode de comptages

Ajouter des méthodes spécialisés de comptages suivants :

  • Model_Form::count_actives_members()
  • Model_Form::count_inactives_members()

Cela devrais diminuer la taille du cache pour ces données jointes.

Également, évaluer si l'on peut appliquer la même solution pour d'autres jointure e onction de l'affichage (par ex. Model_Member::dues() ou 'on a besoin que du titre et et du lien).

Compatibilité SaaS

Favoriser la compatibilités avec des "logiciels en tant que service" (SaaS).

Fonctionnalités :

  • wrapper d’authentification authentification auprès des services ;
  • wrappper d'échange de données entre le logiciel et les services.

Services visées :

  • Newsletter (Sympa, Mailchimp, Mailjet) : email, nom;
  • Paiement (Stripe) : produits, abonnements, validation, profil client;

Related :

Champs métas

Un mécanisme de métas-données sur a table members permettrais d'ouvrir des fonctionnalités intéressantes.

Par exemple :

  • gestion d'un status d'adhérent (Adhérents, 'Membre du C.A., Secrétaire`, etc.) ;
  • Ajout de compétences (permettant de mobiliser certains adhérents sur des actions de l'association) ;
  • Marquer un adhérent comme bénévole ;
  • Ajouter des URLs vers sur les fiches adhérents (les réseaux sociaux par exemple).

Mise en place

Nécessite une able supplémentaire au minimum members_metas avec les clefs suivantes :

  • id : Clef unique ;
  • member_id : Liaison vers une entrée members ;
  • key | slug : Identifiant de la méta ;
  • label : Nom humainement lisible de la clef ;
  • value : Valeur de la métas.

Le modèle de members_metas peut être exploité pour ajouter des contraintes :

  • des types obligatoire (Integer, Boolean, String, etc.) ;
  • des valeurs prédéfini pour une clef ;
  • une description de la métas ;
  • des clefs prédéfinis.

Exemples de clefs / valeurs :

key label value
status Status Membre du C.A.
link-strava Fiche Strava https://www.strava.com/athletes/10726216
skill Compétence Course en sac
volunteer Bénévole true

Des tirets exclus les espaces dans le champ de recherche

Description du bug

Lorsque l'on saisie un tiret dans le champ de recherche, les résultat sont peu pertinents.
http://members.guidoline.com/adherents/

Étapes pour reproduire le bug

  1. Allez sur http://members.guidoline.com/adherents/;
  2. Saisir "jean-baptiste" ;
  3. Constater que seul les "jean-baptiste" et non les "jean baptiste" .

Comportement attendu

"jean-baptiste" et "jean baptiste" devrais être dans les résultat de recherche.

Solution possible

Vérifier dans la documentation https://www.mysql.com/fr/ si un paramètre de configuration existe.

Sinon, émuler le filtre dans le modèle de données.

Enregister par

Lors de l'ajout d'un adhérent, ajouter une jonction vers l'utilisateur courant (created_by).

La même chose pourrais être faite pour la dernière modification (updated_by).

Icônes sur Chrome

Les icônes SVG ne s'affiche pas tous sur la dernière version de Chrome sur Windows.

Verrous de liaisons

Certaines données ne devrais pas pourvoir être modifiées et/ou supprimées une fois qu'elles sont liées à d'autres.

Données concernées :

  • subscriptions ;
  • members_subscriptions (dues) ;

En complément (créer un ticket à part pour ça) : la table members_subscriptions devrait clairement être considérée comme des factures (dues) et enregistrer des "instantanées" (identités de la personne, nom et prix du produit).

Pagination sur le résultat d'un recherche

Description du bug

Lors d'un recherche sur la liste des adhérents, la pagination ne conserve pas le terme rechercher.
Page adhérents , URL : /adherents/?rechercher=a

Étapes pour reproduire le bug

  1. La page /adherents;
  2. Lancer une recherche qui produit beaucoup de résultat;
  3. utiliser la pagination;
  4. la recherche est perdue.

Comportement attendu

les termes recherchés devrait être maintenues.

Comportement obtenu

Les termes sont recherchés sont perdues.

Solution temporaire

Inscrire la pagiation manuellement dans la barre d'adresse.
Par exemple /adherents/2?rechercher=a

Solution possible

Propager les termes recherchés dans les liens de navigation.
Soit explicitement, en indiquant un suffixe d'URL au module de pagination.
Soit implicitement, en permettant au module de pagination de scanner l'URL.

Fonctions bénévole

Pouvoir marquer / filtrer les adhérents par volontaire (bénévoles).

Une colonne de donnée est dédié à ce marquage, car celui-ci doit pouvoir être accessible sur les écrans d'agrégat (ex. index des adhérents). Contrairement à la première intention qui était de l'exploiter à travers une taxonomie cf. #3

Exporter liste de mail

Est-il possible d'exporter les emails bénévoles pour les importer au format csv dans notre liste de diffusion newsletter.

Défilement de page en haut par défaut

C'est lié à un problème

La page ne défile pas toujours en haut par défaut. Si bien que lors de la navigation, le contenu n'est visible qu'après un défilement.

Amélioration idéale

Le défilement lors de la navigation devrais toujours conserver une bonne lisibilité.
Comportement idéale du scroll auto après injection de la page :
Au minimum : scroll vers le contenu (Ancre de la cible ou <main>, <body> par défaut).
Tenter : scroll en haut avant de scroll vers le contenu, comme la navigation / fonctionnalité des pages peuvent changer en fonction du contenu, cela permet de jeter un œil au contexte UI avant la lecture.

Apprentissage, documentation, adoption, stratégie d'implémentation

Cela devrais pouvoir se résoudre avec le ScrollBehavior de Vue router.

Choix d'un montant de cotisation libre

Sur le formulaire d'édition d'un adhérent, le champs de cotisation libre est présent mais la prise en compte du montant saisie n'est pas encore fonctionnel.

Synchronisation avec le service Mailjet

Facilité la synchronisation de données avec des services tiers

Certaines données saisies dans le logiciel devrais pouvoir se synchroniser avec Mailjet.
Veuillez décrire de façon claire et précise quel genre de problème vous rencontrez. Par exemple : Lorsque que je veux faire tel action je suis toujours contraint de …

Mise en œuvre de drivers

Mettre en place un système de drivers, cela permettrais de conserver une application agnostique et donc de changer de services plus facilement.

L'idéale serait de permettre plusieurs service en parallèle. Par exemple lors de la mise à jour d'une information de contact, Mailet et une feuille Google sheet pourrait être mise à jour.

Solution alternative

Faciliter l'export des données afin de faciliter la mise à jour des données (cf. #20, #19 ).

Related

Autocompletion des champs des villes

Les champs villes sont mal rempli

Les utilisateur ont tendance à mal remplir les champs ville (fautes de frappes, de syntaxe, etc.).

Autocomplétion

Un script d'auto-completion fermé (strict) sur toutes les villes obligeant l'utilisateur à choisir une ville plutôt que de la saisir.
Un script d'auto-complétion ouvert (libre), sur les villes de la région d'exercice de l'association ou de la France si le choix sur le monde est trop complexe.

Solution alternative

Une solution sans code supplémentaire serait de former les utilisateur à remplir correctement ce champ, et/ou à avoir un opérateur qui corrige la saisie (à partir des codes postaux par exemple).

Apprentissage

Aucun apprentissage et documentation à mettre en œuvre.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.