| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -93,7 +93,7 @@ génère en effet automatiquement une transaction de l'utilisateur vers le club
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Graphe
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				------
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				.. image:: /_static/img/graphs/member.svg
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				.. image:: ../_static/img/graphs/member.svg
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   :alt: Graphe de l'application member
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Adhésions
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -109,15 +109,15 @@ de fin d'adhésion.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				On peut ajouter une adhésion à un utilisateur dans un club à tout non adhérent de ce club. La personne en charge
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				d'adhérer quelqu'un choisit l'utilisateur, les rôles au sein du club et la date de début d'adhésion. Cette date de
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				début d'adhésion doit se situer entre les champs ``club``.``membership_start`` et ``club``.``membership_end``,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				si ces champs sont non nuls. Si ``club``.``parent_club`` n'est pas nul, l'utilisateur doit être membre de ce club.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Le montant de la cotisation est fixé en fonction du statut normalien de l'utilisateur (``club``.``membership_fee_paid``
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				centimes pour les élèves et ``club``.``membership_fee_unpaid`` centimes pour les étudiants). La date de fin est calculée
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				début d'adhésion doit se situer entre les champs ``club.membership_start`` et ``club.membership_end``,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				si ces champs sont non nuls. Si ``club.parent_club`` n'est pas nul, l'utilisateur doit être membre de ce club.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Le montant de la cotisation est fixé en fonction du statut normalien de l'utilisateur (``club.membership_fee_paid``
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				centimes pour les élèves et ``club.membership_fee_unpaid`` centimes pour les étudiants). La date de fin est calculée
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				comme ce qui suit :
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				* Si ``club``.``membership_duration`` est non nul, alors ``date_end`` = ``date_start`` + ``club.membership_duration``
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				* Si ``club.membership_duration`` est non nul, alors ``date_end`` = ``date_start`` + ``club.membership_duration``
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				* Sinon ``club``, ``date_end`` = ``date_start`` + 424242 jours (suffisant pour tenir au moins une vie)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				* Si ``club``.``membership_end`` est non nul, alors ``date_end`` = min(``date_end``, ``club``.``membership_end``)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				* Si ``club.membership_end`` est non nul, alors ``date_end`` = min(``date_end``, ``club.membership_end``)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Si l'utilisateur n'est pas membre du club ``Kfet``, l'adhésion n'est pas possible si le solde disponible sur sa note est
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				insuffisant. Une fois toute ces contraintes vérifiées, l'adhésion est créée. Une transaction de type
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -127,13 +127,14 @@ Réadhésions
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				~~~~~~~~~~~
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Pour les clubs nécessitant des adhésions (de durée limitée), il est possible de réadhérer au bout d'un an. Dès lors
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				que le jour actuel est après ``club``.``membership_start`` + 1 an, ``club``.``membership_start`` et
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				``club``.membership_end`` sont incrémentés d'un an.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				que le jour actuel est après ``club.membership_start`` + 1 an, ``club.membership_start`` et
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				``club.membership_end`` sont incrémentés d'un an.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Il est possible de réadhérer si :
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				* ``membership``.``date_start`` <= ``today`` <= ``membership``.``date_end`` (l'adhésion en cours est valide)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				* ``membership``.``date_start`` < ``club``.``membership_start`` (si la date de début d'adhésion du club est postérieure à la date de début d'adhésion, qui a donc été mise à jour, on a changé d'année)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				* Il n'y a pas encore de réadhésion (pas d'adhésion au même club vérifiant ``new_membership``.``date_start`` >= ``club``.``membership_start``)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				* ``membership.date_start`` <= ``today`` <= ``membership.date_end`` (l'adhésion en cours est valide)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				* ``membership.date_start`` < ``club.membership_start`` (si la date de début d'adhésion du club est postérieure à la date de début d'adhésion, qui a donc été mise à jour, on a changé d'année)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				* Il n'y a pas encore de réadhésion (pas d'adhésion au même club vérifiant ``new_membership.date_start`` >= ``club.membership_start``)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Un bouton ``Réadhérer`` apparaît dans la liste des adhésions si le droit est permis et si ces contraintes sont vérifiées.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				En réadhérant, une nouvelle adhésion est créée pour l'utilisateur avec les mêmes rôles, commençant le lendemain de la
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				 
 |