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

Séparer un bénéficiaire d'un membre #591

Merged
merged 3 commits into from
Nov 20, 2022

Conversation

raphodn
Copy link
Member

@raphodn raphodn commented Nov 3, 2022

Quoi

Tentative rapide pour permettre de séparer 2 bénéficiaires

  • rajouter un bouton pour le bénéficiaire secondaire
  • popup et url pour séparer ce bénéficiaire, et le rattacher à un nouveau membership (ou un membership existant si il est mainBeneficiary d'un vieux membership)

Questions en suspens :

  • Membership.registration ?
  • Nécessité de ré-adhérer
  • compteur de temps, historique de créneaux

Captures d'écran

Bouton sur le bénéficiaire non-principal (réservé aux ADMIN pour l'instant) modale de confirmation
Screenshot from 2022-11-21 09-33-58 Screenshot from 2022-11-21 09-34-27

@petitalb
Copy link
Collaborator

petitalb commented Nov 3, 2022

  • Membership.registration ?

Aucune pour moi, le nouveau membre doit réadhérer.

Ca pourrait être aussi une bonne alternative pour garder les bénéficiary comme actuellement.
=> supprimer un bénéficiary reviendrait à séparer le compte et à fermer le nouveau compte.

  • compteur de temps, historique de créneaux

Le compteur reprend à 0 (comme un nouveau compte) donc pas de log de temps.
Tu perds l'historique des créneaux. Les créneaux c'est lié à un compte, qui dit nouveau compte, il n'y a donc pas d'historique.

$m = $em->getRepository('AppBundle:Membership')->findOneBy(array(), array('member_number' => 'DESC'));
$mm = 1;
if ($m)
$mm = $m->getMemberNumber() + 1;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C'est très dangereux de faire ça. Les id c'est en autoincrement dans la DB, on ne devrait pas les gérer directement dans le code. Si jamais il y a deux créations en même temps, on arriverait dans une situation complètement incohérente.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

En fait, je ne suis pas sur du autoincrement (pas regardé) mais ça devrait être le cas pour être sur de ne pas faire de bétise.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

j'ai repris le bout de code qui existe déjà dans MembershipController > member_new
donc il n'y a pas besoin ? new Membership() va initialiser automatiquement le member_number ?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je ne sais pas comment symfony gère des plusieurs requêtes simultannées, mais s'il y a des threads ce code n'est pas thread safe.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pour moi, faudrait meettre le champs en autoincrement et laisser la DB gérer.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pour l'unicité il y a cette PR qu'on a mergé, mais ça n'avait pas provoqué de migration... #606

Je viens de rajouter la migration

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pour l'id / member_number il faut que je reflechisse aux cas particuliers 🤔 Il doit y avoir une raison d'avoir séparé les 2 non ?

Les 2 numéros ne se suivent pas tout à fait. Si on remonte dans l'historique on voit qu'il y a des trous dans les id par endroit mais pas dans les member_number. J'imagine que c'est quand il y a un problème quelconque lors de la création d'un membership. Les événements semblent assez rare (ça s'est produit 52 fois en tout, 8 fois en 2021 et rien en 2022). Etait-ce du à l'utilisation du bouton "Nouvelle adhésion" ?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je pense que le champ member_number est important à conserver de manière indépendante de l'ID car je crois que dans notre coop à La Rochelle par exemple, la personne qui gère les adhésions utilise ce numéro sur d'autres outils pour identifier les coopérateurs.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@quot17 et c'est embêtant pour vous du coup la séparation telle que proposée ? Vu qu'on va créer un nouveau membre et qu'on va lui associer un nouveau member_number ?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@petitalb non non c'est très bien, je ne crois pas qu'on renseigne les bénéficiaires sur Elefan chez nous actuellement.

@raphodn
Copy link
Member Author

raphodn commented Nov 3, 2022

supprimer un bénéficiary reviendrait à séparer le compte et à fermer le nouveau compte

yes exactement ! séparation + new Membership + membership.isWithdrawn

même si je me dis qu'il y a peut-être moyen de résoudre ca "à la source" (en créant un membership à la création du compte, et le garder somehow même si le beneficiaire est rattaché ? ca permettrait de garder le member_number, et ne pas avoir à recréer un membership quand le bénéficiaire décide de se séparer 🤔 )

aussi pour les stats : ca ne les fausserait pas sur les dates de création

@raphodn
Copy link
Member Author

raphodn commented Nov 15, 2022

@petitalb tu vois des choses qui manquent ? ou ca peut déjà être une première version (réservé aux ADMIN pour l'instant)

idées supplémentaires :

  • créer automatiquement une note sur le membership existant indiquant qu'un des bénéficiaire est parti
  • créer automatiquement une note sur le nouveau membership indiquant qu'il provient d'une séparation

@raphodn raphodn force-pushed the raphodn/member-beneficiary-detach-poc branch from 73a6a15 to 3fe391f Compare November 15, 2022 19:42
@petitalb petitalb force-pushed the raphodn/member-beneficiary-detach-poc branch from 3fe391f to 9fb56a1 Compare November 16, 2022 05:31
@petitalb petitalb changed the title [POC] Séparer un bénéficiaire d'un membre Séparer un bénéficiaire d'un membre Nov 16, 2022
@petitalb petitalb marked this pull request as ready for review November 16, 2022 06:18
@petitalb
Copy link
Collaborator

@petitalb tu vois des choses qui manquent ? ou ca peut déjà être une première version (réservé aux ADMIN pour l'instant)

idées supplémentaires :

* créer automatiquement une note sur le membership existant indiquant qu'un des bénéficiaire est parti

* créer automatiquement une note sur le nouveau membership indiquant qu'il provient d'une séparation

Ca me parait peut-être bien de rajouter les notes avant de merger. Je pense que c'est relativement simple à faire, et ca me parait important de tracer l'action pour comprendre à posteriori ce qui a pu se passer.

Copy link
Member Author

@raphodn raphodn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good ! (je peux pas "approve" car je suis l'auteur de la PR ^^)

$session = new Session();
$member = $beneficiary->getMembership();

$this->denyAccessUnlessGranted('edit', $member);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remplacer par @Security("has_role('ROLE_ADMIN')") ?

{{ form_start(delete_form) }}
<div id="remove-beneficiary-{{ beneficiary.id }}" class="modal">
<div class="modal-content">
<h5><i class="material-icons left small">remove_circle_outline</i>Supprimer le bénéficiaire</h5>
<p>Attention, le bénéficiaire n'aura plus accès à son compte et ses informations seront perdus.</p>
<p>
Attention, le bénéficiaire n'aura plus accès à son compte et ses informations seront perdus.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

peut-être indiquer les autres impacts ?

  • compteur temps reset ?
  • créneaux fixes restent, ...

@raphodn
Copy link
Member Author

raphodn commented Nov 16, 2022

Ca me parait peut-être bien de rajouter les notes avant de merger. Je pense que c'est relativement simple à faire, et ca me parait important de tracer l'action pour comprendre à posteriori ce qui a pu se passer.

@petitalb pour les notes on peut le faire dans une PR séparé (je vais essayer de la faire cette aprem)

  • vu que l'action sera réservé aux Admin pour l'instant il ne devrait pas y en avoir beaucoup d'ici là
  • on peut merger cette PR sans nécessairement la mettre en prod tout de suite (quoique je vais en avoir besoin pour mon créneau BdM de ce soir ^^)

edit : j'ai créé une issue à ce sujet : #619

@raphodn raphodn force-pushed the raphodn/member-beneficiary-detach-poc branch from 9fb56a1 to 8ac9e0f Compare November 20, 2022 16:03
@raphodn raphodn merged commit 42827b5 into master Nov 20, 2022
@raphodn raphodn deleted the raphodn/member-beneficiary-detach-poc branch November 20, 2022 16:08
quot17 pushed a commit to quot17/gestion-compte that referenced this pull request Nov 29, 2022
* Super simple detach mechanism

* [membership] Add uniq constraint on member_number attribute

* Give access to beneficiary delete button to ROLE_ADMIN only

Co-authored-by: Albin PETIT <albin.petit@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Pouvoir séparer un bénéficiaire d'un membre (et lui créer un nouveau membre autonome)
3 participants