Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Création d'un deuxième compteur "épargne" #684

Open
raphodn opened this issue Dec 24, 2022 · 2 comments · Fixed by #767, #768, #769, #770 or #771
Open

Création d'un deuxième compteur "épargne" #684

raphodn opened this issue Dec 24, 2022 · 2 comments · Fixed by #767, #768, #769, #770 or #771
Labels
Elefan : nouveau RI Modifications liées au nouveau Règlement Intérieur voté à l'Elefan Grenoble (fin 2022)

Comments

@raphodn
Copy link
Member

raphodn commented Dec 24, 2022

(ébauche. à détailler)

Quoi ?

L'idée est de pouvoir séparer le compteur du membre en 2 :

  • un compteur-temps "courant" qui enlève 3h (due_duration_by_cycle) à chaque cycle
  • un compteur-temps "épargne" qui permette au membre de faire du bénévolat supplémentaire

Pourquoi ?

Un nouveau règlement intérieur a été voté à l'Elefan à l'automne 2022. Il permet d'avantage de flexibilité dans la réservation et l'annulation des créneaux par les membres.

Ce double compteur permettra de résoudre plusieurs problèmes :

  • la non prise en compte du bénévolat facultatif (actuellement, les compteurs sont remis à 0 à la fin de chaque cycle)
  • permettre aux membres de mieux s'organiser d'un cycle à un autre, pour prendre des vacances ou annuler des créneaux qu'ils ne peuvent pas faire sans pénalités

Comment ?

  • soit utiliser l'objet TimeLog existant (avec type = "épargne")
  • soit créer un nouvel objet

aussi

@raphodn raphodn added the Elefan : nouveau RI Modifications liées au nouveau Règlement Intérieur voté à l'Elefan Grenoble (fin 2022) label Dec 24, 2022
@raphodn raphodn changed the title Création d'un deuxième compte "épargne" Création d'un deuxième compteur "épargne" Dec 24, 2022
@raphodn raphodn changed the title Création d'un deuxième compteur "épargne" Création d'un deuxième compteur-temps "épargne" Dec 24, 2022
@raphodn
Copy link
Member Author

raphodn commented Feb 15, 2023

Implémentation (après discussion avec @symartin @petitalb)

Compteur épargne

des lignes TYPE_SAVING dans l'entité TimeLog

Cas d'usage

Créneau fait en rab

Comment savoir si un créneau est "en rab" ? Regarder le nombre de créneaux déjà validés dans le cycle courant.

Cela rajoute 3 lignes à TimeLog

  • 1 ligne SHIFT_VALIDATED incrémenter le compteur-temps (comme actuellement)
  • 1 ligne TYPE_REGULATE_OPTIONAL_SHIFTS pour envoyer la durée du shift du compteur-temps vers le compteur-épargne (négatif)
  • 1 ligne TYPE_SAVING pour incrémenter le compteur-épargne (positif)

L'utilisateur annule un créneau prévu

Possible seulement si le compteur-épargne est positif (et supérieur à la durée du créneau en question).

Cela rajoute 1 ligne à TimeLog

  • 1 ligne TYPE_SAVING pour décrémenter le compteur-épargne (négatif)
  • 1 ligne ? pour incrémenter le compteur-temps (positif)

A la fin du cycle

On enlève Xh comme d'habitude.

  • le bénévolat facultatif a été régulé au fil de l'eau. Donc pas de régulation nécessaire.
  • si le membre n'a pas fait de créneau, on prend depuis le compteur épargne (et si vide ou insuffisant, on prend le reste depuis le compteur temps)
  • cas particulier : si le membre n'est pas venu à un créneau programmé, on prend depuis son compteur temps (et non épargne)

Pour finir

  • faire des PR et merger sur une branche séparée ? Non mieux : ajouter un parametre pour activer ou pas ce fonctionnement !

Question en suspens

  • quid d'un admin qui souhaite annuler la participation à un créneau, on enlève du compteur-temps ou du compteur-épargne ? lui donner le choix ?
  • quoi faire si on invalide un créneau déjà validé ?
  • quid d'un créneau en fin de cycle non validé, et qui sera validé lors du cycle suivant : cas trop particulier, les membres n'ont qu'à badger..

@raphodn
Copy link
Member Author

raphodn commented Feb 27, 2023

TODO

  • nouveau paramètre use_time_log_saving
  • nouveau TimeLog type TYPE_SAVING
  • onShiftValidated : incrémenter le compteur épargne si due_duration_by_cycle dépassé
  • onMemberCycleEnd : (à compléter)
  • Membership.getTimeCount : ne pas prendre en compte TYPE_SAVING dans le calcul du compteur temps
  • SearchUserFormHelper : ne pas prendre en compte TYPE_SAVING dans le calcul du compteur temps
  • Affichage basique dans l'onglet "Compteur de temps"
  • Affichage basique dans la home de l'utilisateur

Annulation de créneau

voir #686

  • onShiftFreed : vérifier que le membre peut bien annuler son créneau (v1) + décrémenter le compteur épargne + incrémenter le compteur temps
  • Règles avancées sur l'annulation de créneau : 10 jours à l'avance, orienter vers le BDM sinon
  • Annulation d'un créneau coté admin : lui donner le choix d'utiliser ou nom le compteur épargne ?

Optimisations à faire dans un second temps

  • améliorer les calculs des TimeCount : remplacer les for loops par des queries SQL (via un TimeLogRepository)

@raphodn raphodn reopened this Feb 27, 2023
@raphodn raphodn reopened this Feb 27, 2023
@raphodn raphodn reopened this Mar 2, 2023
@raphodn raphodn changed the title Création d'un deuxième compteur-temps "épargne" Création d'un deuxième compteur "épargne" Mar 3, 2023
@raphodn raphodn linked a pull request Apr 23, 2023 that will close this issue
@raphodn raphodn linked a pull request May 5, 2023 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment