diff --git a/apps/api/pagination.py b/apps/api/pagination.py
index d897b583dc9498a9a840c63777606b4502928090..1c6b1a1f26f42ea4ce899424b68eaf47bad8e34d 100644
--- a/apps/api/pagination.py
+++ b/apps/api/pagination.py
@@ -1,5 +1,5 @@
 from rest_framework.pagination import PageNumberPagination
 
+
 class CustomPagination(PageNumberPagination):
     page_size_query_param = 'page_size'
-
diff --git a/apps/member/models.py b/apps/member/models.py
index 0b471f12f382791f26e4212bdcc33e6fe8d804b4..3706e47f7e366e71bbda7d091d4b06e1a44744f6 100644
--- a/apps/member/models.py
+++ b/apps/member/models.py
@@ -263,7 +263,7 @@ class Club(models.Model):
 
         today = datetime.date.today()
 
-        if (today - self.membership_start).days >= 365:
+        while (today - self.membership_start).days >= 365:
             if self.membership_start:
                 self.membership_start = datetime.date(self.membership_start.year + 1,
                                                       self.membership_start.month, self.membership_start.day)
diff --git a/apps/member/tests/test_memberships.py b/apps/member/tests/test_memberships.py
index 2dc6dd41a46c26ea712270c4dc45ac8d50a612e3..b26475514f1438e344d14662bedb6d5b911419c7 100644
--- a/apps/member/tests/test_memberships.py
+++ b/apps/member/tests/test_memberships.py
@@ -183,7 +183,7 @@ class TestMemberships(TestCase):
                 club = Club.objects.get(name="Kfet")
             else:
                 club = Club.objects.create(
-                    name="Second club " + ("with BDE" if bde_parent else "without BDE"),
+                    name="Second club without BDE",
                     parent_club=None,
                     email="newclub@example.com",
                     require_memberships=True,
diff --git a/apps/member/views.py b/apps/member/views.py
index 2f6348a6f842b5e0ed65f7fffc1b4102d7822c45..63307383d1d2340628ee9af30936fa0bed723dda 100644
--- a/apps/member/views.py
+++ b/apps/member/views.py
@@ -753,6 +753,10 @@ class ClubAddMemberView(ProtectQuerysetMixin, ProtectedCreateView):
             club = old_membership.club
             user = old_membership.user
 
+        # Update club membership date
+        if PermissionBackend.check_perm(self.request, "member.change_club_membership_start", club):
+            club.update_membership_dates()
+
         form.instance.club = club
 
         # Get form data
diff --git a/apps/note/models/transactions.py b/apps/note/models/transactions.py
index 3c6b4c7ddc38419bb692fc098515a2ca9080e38d..8ec7bf0ac5f46e3cfa5f9506bc982e582188b219 100644
--- a/apps/note/models/transactions.py
+++ b/apps/note/models/transactions.py
@@ -325,8 +325,8 @@ class SpecialTransaction(Transaction):
     def clean(self):
         # SpecialTransaction are only possible with NoteSpecial object
         if self.is_credit() == self.is_debit():
-            raise(ValidationError(_("A special transaction is only possible between a"
-                                    " Note associated to a payment method and a User or a Club")))
+            raise ValidationError(_("A special transaction is only possible between a"
+                                    " Note associated to a payment method and a User or a Club"))
 
     @transaction.atomic
     def save(self, *args, **kwargs):
diff --git a/apps/registration/forms.py b/apps/registration/forms.py
index 64e79d52eb51c0d59fe9f257bdc6d64283c4d8e9..405c9bb21e8d3ce7523bf30e32f9302d789d910a 100644
--- a/apps/registration/forms.py
+++ b/apps/registration/forms.py
@@ -5,6 +5,7 @@ from django import forms
 from django.contrib.auth.forms import UserCreationForm
 from django.contrib.auth.models import User
 from django.utils.translation import gettext_lazy as _
+from member.models import Club
 from note.models import NoteSpecial, Alias
 from note_kfet.inputs import AmountInput
 
@@ -44,14 +45,14 @@ class SignUpForm(UserCreationForm):
         fields = ('first_name', 'last_name', 'username', 'email', )
 
 
-class DeclareSogeAccountOpenedForm(forms.Form):
-    soge_account = forms.BooleanField(
-        label=_("I declare that I opened or I will open soon a bank account in the Société générale with the BDE "
-                "partnership."),
-        help_text=_("Warning: this engages you to open your bank account. If you finally decides to don't open your "
-                    "account, you will have to pay the BDE membership."),
-        required=False,
-    )
+# class DeclareSogeAccountOpenedForm(forms.Form):
+#     soge_account = forms.BooleanField(
+#         label=_("I declare that I opened or I will open soon a bank account in the Société générale with the BDE "
+#                 "partnership."),
+#         help_text=_("Warning: this engages you to open your bank account. If you finally decides to don't open your "
+#                     "account, you will have to pay the BDE membership."),
+#         required=False,
+#     )
 
 
 class WEISignupForm(forms.Form):
@@ -67,11 +68,11 @@ class ValidationForm(forms.Form):
     """
     Validate the inscription of the new users and pay memberships.
     """
-    soge = forms.BooleanField(
-        label=_("Inscription paid by Société Générale"),
-        required=False,
-        help_text=_("Check this case if the Société Générale paid the inscription."),
-    )
+#    soge = forms.BooleanField(
+#        label=_("Inscription paid by Société Générale"),
+#        required=False,
+#        help_text=_("Check this case if the Société Générale paid the inscription."),
+#    )
 
     credit_type = forms.ModelChoiceField(
         queryset=NoteSpecial.objects,
@@ -114,3 +115,12 @@ class ValidationForm(forms.Form):
         required=False,
         initial=True,
     )
+
+    # If the bda exists
+    if Club.objects.filter(name__iexact="bda").exists():
+        # The user can join the bda club at the inscription
+        join_bda = forms.BooleanField(
+            label=_("Join BDA Club"),
+            required=False,
+            initial=False,
+        )
diff --git a/apps/registration/templates/registration/future_profile_detail.html b/apps/registration/templates/registration/future_profile_detail.html
index 577ad21916bbce0766947fe7996fa397c49e2577..be0c084f29e44422579544fc9419bbad09b6c7cf 100644
--- a/apps/registration/templates/registration/future_profile_detail.html
+++ b/apps/registration/templates/registration/future_profile_detail.html
@@ -57,11 +57,13 @@ SPDX-License-Identifier: GPL-3.0-or-later
                         <h4> {% trans "Validate account" %}</h4>
                     </div>
 
+                    {% comment "Soge not for membership (only WEI)" %}
                     {% if declare_soge_account %}
                         <div class="alert alert-info">
                         {% trans "The user declared that he/she opened a bank account in the Société générale." %}
                         </div>
                     {% endif %}
+                    {% endcomment %}
 
                     <div class="card-body" id="profile_infos">
                         {% csrf_token %}
@@ -76,6 +78,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
     </div>
 {% endblock %}
 
+{% comment "Soge not for membership (only WEI)" %}
 {% block extrajavascript %}
     <script>
         soge_field = $("#id_soge");
@@ -118,3 +121,4 @@ SPDX-License-Identifier: GPL-3.0-or-later
         {% endif %}
     </script>
 {% endblock %}
+{% endcomment %}
diff --git a/apps/registration/tests/test_registration.py b/apps/registration/tests/test_registration.py
index 18cf16db9408c43303d6df9997eefc704c1cf331..0b28efcb5dcfc0f3167c1dbecac4382dcd728342 100644
--- a/apps/registration/tests/test_registration.py
+++ b/apps/registration/tests/test_registration.py
@@ -190,7 +190,7 @@ class TestValidateRegistration(TestCase):
 
         # BDE Membership is mandatory
         response = self.client.post(reverse("registration:future_user_detail", args=(self.user.pk,)), data=dict(
-            soge=False,
+            # soge=False,
             credit_type=NoteSpecial.objects.get(special_type="Chèque").id,
             credit_amount=4200,
             last_name="TOTO",
@@ -204,7 +204,7 @@ class TestValidateRegistration(TestCase):
 
         # Same
         response = self.client.post(reverse("registration:future_user_detail", args=(self.user.pk,)), data=dict(
-            soge=False,
+            # soge=False,
             credit_type="",
             credit_amount=0,
             last_name="TOTO",
@@ -218,7 +218,7 @@ class TestValidateRegistration(TestCase):
 
         # The BDE membership is not free
         response = self.client.post(reverse("registration:future_user_detail", args=(self.user.pk,)), data=dict(
-            soge=False,
+            # soge=False,
             credit_type=NoteSpecial.objects.get(special_type="Espèces").id,
             credit_amount=0,
             last_name="TOTO",
@@ -232,7 +232,7 @@ class TestValidateRegistration(TestCase):
 
         # Last and first names are required for a credit
         response = self.client.post(reverse("registration:future_user_detail", args=(self.user.pk,)), data=dict(
-            soge=False,
+            # soge=False,
             credit_type=NoteSpecial.objects.get(special_type="Chèque").id,
             credit_amount=4000,
             last_name="",
@@ -249,7 +249,7 @@ class TestValidateRegistration(TestCase):
         self.user.username = "admïntoto"
         self.user.save()
         response = self.client.post(reverse("registration:future_user_detail", args=(self.user.pk,)), data=dict(
-            soge=False,
+            # soge=False,
             credit_type=NoteSpecial.objects.get(special_type="Chèque").id,
             credit_amount=500,
             last_name="TOTO",
@@ -275,7 +275,7 @@ class TestValidateRegistration(TestCase):
         self.user.profile.save()
 
         response = self.client.post(reverse("registration:future_user_detail", args=(self.user.pk,)), data=dict(
-            soge=False,
+            # soge=False,
             credit_type=NoteSpecial.objects.get(special_type="Chèque").id,
             credit_amount=500,
             last_name="TOTO",
@@ -290,6 +290,7 @@ class TestValidateRegistration(TestCase):
         self.assertTrue(NoteUser.objects.filter(user=self.user).exists())
         self.assertTrue(Membership.objects.filter(club__name="BDE", user=self.user).exists())
         self.assertFalse(Membership.objects.filter(club__name="Kfet", user=self.user).exists())
+        self.assertFalse(Membership.objects.filter(club__name__iexact="BDA", user=self.user).exists())
         self.assertFalse(SogeCredit.objects.filter(user=self.user).exists())
         self.assertEqual(Transaction.objects.filter(
             Q(source=self.user.note) | Q(destination=self.user.note)).count(), 2)
@@ -311,7 +312,7 @@ class TestValidateRegistration(TestCase):
         self.user.profile.save()
 
         response = self.client.post(reverse("registration:future_user_detail", args=(self.user.pk,)), data=dict(
-            soge=False,
+            # soge=False,
             credit_type=NoteSpecial.objects.get(special_type="Espèces").id,
             credit_amount=4000,
             last_name="TOTO",
@@ -326,6 +327,7 @@ class TestValidateRegistration(TestCase):
         self.assertTrue(NoteUser.objects.filter(user=self.user).exists())
         self.assertTrue(Membership.objects.filter(club__name="BDE", user=self.user).exists())
         self.assertTrue(Membership.objects.filter(club__name="Kfet", user=self.user).exists())
+        self.assertFalse(Membership.objects.filter(club__name__iexact="BDA", user=self.user).exists())
         self.assertFalse(SogeCredit.objects.filter(user=self.user).exists())
         self.assertEqual(Transaction.objects.filter(
             Q(source=self.user.note) | Q(destination=self.user.note)).count(), 3)
@@ -333,42 +335,43 @@ class TestValidateRegistration(TestCase):
         response = self.client.get(self.user.profile.get_absolute_url())
         self.assertEqual(response.status_code, 200)
 
-    def test_validate_kfet_registration_with_soge(self):
-        """
-        The user joins the BDE and the Kfet, but the membership is paid by the Société générale.
-        """
-        response = self.client.get(reverse("registration:future_user_detail", args=(self.user.pk,)))
-        self.assertEqual(response.status_code, 200)
-
-        response = self.client.get(self.user.profile.get_absolute_url())
-        self.assertEqual(response.status_code, 404)
-
-        self.user.profile.email_confirmed = True
-        self.user.profile.save()
-
-        response = self.client.post(reverse("registration:future_user_detail", args=(self.user.pk,)), data=dict(
-            soge=True,
-            credit_type=NoteSpecial.objects.get(special_type="Espèces").id,
-            credit_amount=4000,
-            last_name="TOTO",
-            first_name="Toto",
-            bank="Société générale",
-            join_bde=True,
-            join_kfet=True,
-        ))
-        self.assertRedirects(response, self.user.profile.get_absolute_url(), 302, 200)
-        self.user.profile.refresh_from_db()
-        self.assertTrue(self.user.profile.registration_valid)
-        self.assertTrue(NoteUser.objects.filter(user=self.user).exists())
-        self.assertTrue(Membership.objects.filter(club__name="BDE", user=self.user).exists())
-        self.assertTrue(Membership.objects.filter(club__name="Kfet", user=self.user).exists())
-        self.assertTrue(SogeCredit.objects.filter(user=self.user).exists())
-        self.assertEqual(Transaction.objects.filter(
-            Q(source=self.user.note) | Q(destination=self.user.note)).count(), 3)
-        self.assertFalse(Transaction.objects.filter(valid=True).exists())
-
-        response = self.client.get(self.user.profile.get_absolute_url())
-        self.assertEqual(response.status_code, 200)
+#    def test_validate_kfet_registration_with_soge(self):
+#        """
+#        The user joins the BDE and the Kfet, but the membership is paid by the Société générale.
+#        """
+#        response = self.client.get(reverse("registration:future_user_detail", args=(self.user.pk,)))
+#        self.assertEqual(response.status_code, 200)
+#
+#        response = self.client.get(self.user.profile.get_absolute_url())
+#        self.assertEqual(response.status_code, 404)
+#
+#        self.user.profile.email_confirmed = True
+#        self.user.profile.save()
+#
+#        response = self.client.post(reverse("registration:future_user_detail", args=(self.user.pk,)), data=dict(
+#            soge=True,
+#            credit_type=NoteSpecial.objects.get(special_type="Espèces").id,
+#            credit_amount=4000,
+#            last_name="TOTO",
+#            first_name="Toto",
+#            bank="Société générale",
+#            join_bde=True,
+#            join_kfet=True,
+#        ))
+#        self.assertRedirects(response, self.user.profile.get_absolute_url(), 302, 200)
+#        self.user.profile.refresh_from_db()
+#        self.assertTrue(self.user.profile.registration_valid)
+#        self.assertTrue(NoteUser.objects.filter(user=self.user).exists())
+#        self.assertTrue(Membership.objects.filter(club__name="BDE", user=self.user).exists())
+#        self.assertTrue(Membership.objects.filter(club__name="Kfet", user=self.user).exists())
+#        self.assertFalse(Membership.objects.filter(club__name__iexact="BDA", user=self.user).exists())
+#        self.assertTrue(SogeCredit.objects.filter(user=self.user).exists())
+#        self.assertEqual(Transaction.objects.filter(
+#            Q(source=self.user.note) | Q(destination=self.user.note)).count(), 3)
+#        self.assertFalse(Transaction.objects.filter(valid=True).exists())
+#
+#        response = self.client.get(self.user.profile.get_absolute_url())
+#        self.assertEqual(response.status_code, 200)
 
     def test_invalidate_registration(self):
         """
diff --git a/apps/registration/views.py b/apps/registration/views.py
index b256f591c7550c4f0d28a4659cf70493af881d66..eb415bdd34d991c3f3169d869ef7fae18e20cac3 100644
--- a/apps/registration/views.py
+++ b/apps/registration/views.py
@@ -24,7 +24,8 @@ from permission.models import Role
 from permission.views import ProtectQuerysetMixin
 from treasury.models import SogeCredit
 
-from .forms import SignUpForm, ValidationForm, DeclareSogeAccountOpenedForm
+# from .forms import SignUpForm, ValidationForm, DeclareSogeAccountOpenedForm
+from .forms import SignUpForm, ValidationForm
 from .tables import FutureUserTable
 from .tokens import email_validation_token
 
@@ -42,7 +43,7 @@ class UserCreateView(CreateView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context["profile_form"] = self.second_form(self.request.POST if self.request.POST else None)
-        context["soge_form"] = DeclareSogeAccountOpenedForm(self.request.POST if self.request.POST else None)
+#        context["soge_form"] = DeclareSogeAccountOpenedForm(self.request.POST if self.request.POST else None)
         del context["profile_form"].fields["section"]
         del context["profile_form"].fields["report_frequency"]
         del context["profile_form"].fields["last_report"]
@@ -75,12 +76,12 @@ class UserCreateView(CreateView):
 
         user.profile.send_email_validation_link()
 
-        soge_form = DeclareSogeAccountOpenedForm(self.request.POST)
-        if "soge_account" in soge_form.data and soge_form.data["soge_account"]:
-            # If the user declares that a bank account got opened, prepare the soge credit to warn treasurers
-            soge_credit = SogeCredit(user=user)
-            soge_credit._force_save = True
-            soge_credit.save()
+#        soge_form = DeclareSogeAccountOpenedForm(self.request.POST)
+#        if "soge_account" in soge_form.data and soge_form.data["soge_account"]:
+#            # If the user declares that a bank account got opened, prepare the soge credit to warn treasurers
+#            soge_credit = SogeCredit(user=user)
+#            soge_credit._force_save = True
+#            soge_credit.save()
 
         return super().form_valid(form)
 
@@ -237,9 +238,12 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
         fee += bde.membership_fee_paid if user.profile.paid else bde.membership_fee_unpaid
         kfet = Club.objects.get(name="Kfet")
         fee += kfet.membership_fee_paid if user.profile.paid else kfet.membership_fee_unpaid
+        if Club.objects.filter(name__iexact="BDA").exists():
+            bda = Club.objects.get(name__iexact="BDA")
+            fee += bda.membership_fee_paid if user.profile.paid else bda.membership_fee_unpaid
         ctx["total_fee"] = "{:.02f}".format(fee / 100, )
 
-        ctx["declare_soge_account"] = SogeCredit.objects.filter(user=user).exists()
+#        ctx["declare_soge_account"] = SogeCredit.objects.filter(user=user).exists()
 
         return ctx
 
@@ -262,8 +266,13 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
             form.add_error(None, _("An alias with a similar name already exists."))
             return self.form_invalid(form)
 
+        # Check if BDA exist to propose membership at regisration
+        bda_exists = False
+        if Club.objects.filter(name__iexact="BDA").exists():
+            bda_exists = True
+
         # Get form data
-        soge = form.cleaned_data["soge"]
+#        soge = form.cleaned_data["soge"]
         credit_type = form.cleaned_data["credit_type"]
         credit_amount = form.cleaned_data["credit_amount"]
         last_name = form.cleaned_data["last_name"]
@@ -271,11 +280,13 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
         bank = form.cleaned_data["bank"]
         join_bde = form.cleaned_data["join_bde"]
         join_kfet = form.cleaned_data["join_kfet"]
+        if bda_exists:
+            join_bda = form.cleaned_data["join_bda"]
 
-        if soge:
-            # If Société Générale pays the inscription, the user automatically joins the two clubs.
-            join_bde = True
-            join_kfet = True
+#        if soge:
+#            # If Société Générale pays the inscription, the user automatically joins the two clubs.
+#            join_bde = True
+#            join_kfet = True
 
         if not join_bde:
             # This software belongs to the BDE.
@@ -292,15 +303,21 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
         kfet_fee = kfet.membership_fee_paid if user.profile.paid else kfet.membership_fee_unpaid
         # Add extra fee for the full membership
         fee += kfet_fee if join_kfet else 0
+        if bda_exists:
+            bda = Club.objects.get(name__iexact="BDA")
+            bda_fee = bda.membership_fee_paid if user.profile.paid else bda.membership_fee_unpaid
+            # Add extra fee for the bda membership
+            fee += bda_fee if join_bda else 0
 
-        # If the bank pays, then we don't credit now. Treasurers will validate the transaction
-        # and credit the note later.
-        credit_type = None if soge else credit_type
+#        # If the bank pays, then we don't credit now. Treasurers will validate the transaction
+#        # and credit the note later.
+#        credit_type = None if soge else credit_type
 
         # If the user does not select any payment method, then no credit will be performed.
         credit_amount = 0 if credit_type is None else credit_amount
 
-        if fee > credit_amount and not soge:
+#        if fee > credit_amount and not soge:
+        if fee > credit_amount:
             # Check if the user credits enough money
             form.add_error('credit_type',
                            _("The entered amount is not enough for the memberships, should be at least {}")
@@ -320,12 +337,12 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
         user.profile.save()
         user.refresh_from_db()
 
-        if not soge and SogeCredit.objects.filter(user=user).exists():
-            # If the user declared that a bank account was opened but in the validation form the SoGé case was
-            # unchecked, delete the associated credit
-            soge_credit = SogeCredit.objects.get(user=user)
-            soge_credit._force_delete = True
-            soge_credit.delete()
+#        if not soge and SogeCredit.objects.filter(user=user).exists():
+#            # If the user declared that a bank account was opened but in the validation form the SoGé case was
+#            # unchecked, delete the associated credit
+#            soge_credit = SogeCredit.objects.get(user=user)
+#            soge_credit._force_delete = True
+#            soge_credit.delete()
 
         if credit_type is not None and credit_amount > 0:
             # Credit the note
@@ -334,7 +351,8 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
                 destination=user.note,
                 quantity=1,
                 amount=credit_amount,
-                reason="Crédit " + ("Société générale" if soge else credit_type.special_type) + " (Inscription)",
+                reason="Crédit " + credit_type.special_type + " (Inscription)",
+                # reason="Crédit " + ("Société générale" if soge else credit_type.special_type) + " (Inscription)",
                 last_name=last_name,
                 first_name=first_name,
                 bank=bank,
@@ -348,8 +366,8 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
                 user=user,
                 fee=bde_fee,
             )
-            if soge:
-                membership._soge = True
+#            if soge:
+#                membership._soge = True
             membership.save()
             membership.refresh_from_db()
             membership.roles.add(Role.objects.get(name="Adhérent BDE"))
@@ -362,17 +380,29 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
                 user=user,
                 fee=kfet_fee,
             )
-            if soge:
-                membership._soge = True
+#            if soge:
+#                membership._soge = True
             membership.save()
             membership.refresh_from_db()
             membership.roles.add(Role.objects.get(name="Adhérent Kfet"))
             membership.save()
 
-        if soge:
-            soge_credit = SogeCredit.objects.get(user=user)
-            # Update the credit transaction amount
-            soge_credit.save()
+        if bda_exists and join_bda:
+            # Create membership for the user to the BDA starting today
+            membership = Membership(
+                club=bda,
+                user=user,
+                fee=bda_fee,
+            )
+            membership.save()
+            membership.refresh_from_db()
+            membership.roles.add(Role.objects.get(name="Membre de club"))
+            membership.save()
+
+#        if soge:
+#            soge_credit = SogeCredit.objects.get(user=user)
+#            # Update the credit transaction amount
+#            soge_credit.save()
 
         return ret
 
diff --git a/apps/treasury/models.py b/apps/treasury/models.py
index 9198481c3257c52d1c64ad33cbb81a0d242e29e9..fc20da3bcb9e5d98a5c2e8c7d413769fe3c2487c 100644
--- a/apps/treasury/models.py
+++ b/apps/treasury/models.py
@@ -1,6 +1,5 @@
-# Copyright (C) 2018-2021 by BDE ENS Paris-Saclay
+# Copyright (C) 2018-2023 by BDE ENS Paris-Saclay
 # SPDX-License-Identifier: GPL-3.0-or-later
-import datetime
 from datetime import date
 
 from django.conf import settings
@@ -12,7 +11,8 @@ from django.db.models import Q
 from django.template.loader import render_to_string
 from django.utils import timezone
 from django.utils.translation import gettext_lazy as _
-from member.models import Club, Membership
+# from member.models import Club, Membership # Club unused because of disabled soge
+from member.models import Membership
 from note.models import NoteSpecial, SpecialTransaction, MembershipTransaction, NoteUser
 
 
@@ -326,12 +326,12 @@ class SogeCredit(models.Model):
         if self.valid or not self.pk:
             return
 
-        bde = Club.objects.get(name="BDE")
-        kfet = Club.objects.get(name="Kfet")
-        bde_qs = Membership.objects.filter(user=self.user, club=bde, date_start__gte=bde.membership_start)
-        kfet_qs = Membership.objects.filter(user=self.user, club=kfet, date_start__gte=kfet.membership_start)
+# Soge do not pay BDE and kfet memberships since 2022
+#        bde = Club.objects.get(name="BDE")
+#        kfet = Club.objects.get(name="Kfet")
+#        bde_qs = Membership.objects.filter(user=self.user, club=bde, date_start__gte=bde.membership_start)
+#        kfet_qs = Membership.objects.filter(user=self.user, club=kfet, date_start__gte=kfet.membership_start)
 
-## Soge do not pay BDE and kfet memberships this year (2022-2023)
 #        if bde_qs.exists():
 #            m = bde_qs.get()
 #            if MembershipTransaction.objects.filter(membership=m).exists():  # non-free membership
@@ -388,7 +388,6 @@ class SogeCredit(models.Model):
         for tr in self.transactions.all():
             tr.valid = True
             tr._force_save = True
-            tr.created_at = timezone.now()
             tr.save()
 
     @transaction.atomic
@@ -437,12 +436,11 @@ class SogeCredit(models.Model):
         for tr in self.transactions.all():
             tr._force_save = True
             tr.valid = True
-            tr.created_at = timezone.now()
             tr.save()
         if self.credit_transaction:
             # If the soge credit is deleted while the user is not validated yet,
             # there is not credit transaction.
-            # There is a credit transaction iff the user declares that no bank account
+            # There is a credit transaction if the user declares that no bank account
             # was opened after the validation of the account.
             self.credit_transaction.valid = False
             self.credit_transaction.reason += " (invalide)"
diff --git a/apps/wei/forms/registration.py b/apps/wei/forms/registration.py
index e934fb5028db54b849a6d9d1d4b34ccf4f40d45d..408071f46cff7c47fee7c0448e98e701bfee1485 100644
--- a/apps/wei/forms/registration.py
+++ b/apps/wei/forms/registration.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2021 by BDE ENS Paris-Saclay
+# Copyright (C) 2018-2023 by BDE ENS Paris-Saclay
 # SPDX-License-Identifier: GPL-3.0-or-later
 
 from django import forms
@@ -38,7 +38,7 @@ class WEIRegistrationForm(forms.ModelForm):
 
     class Meta:
         model = WEIRegistration
-        exclude = ('wei', )
+        exclude = ('wei', 'clothing_cut')
         widgets = {
             "user": Autocomplete(
                 User,
diff --git a/apps/wei/forms/surveys/wei2021.py b/apps/wei/forms/surveys/wei2021.py
index e515d44795cceed1538451b2ba67d9343a320a3d..cbf615c265072f7d3b0dddbaf34eed3a1571fb3d 100644
--- a/apps/wei/forms/surveys/wei2021.py
+++ b/apps/wei/forms/surveys/wei2021.py
@@ -148,7 +148,7 @@ class WEISurvey2021(WEISurvey):
         buses = cls.get_algorithm_class().get_buses()
         return sum([cls.get_algorithm_class().get_bus_information(bus).scores[word] for bus in buses]) / buses.count()
 
-    @lru_cache()
+#    @lru_cache
     def score(self, bus):
         if not self.is_complete():
             raise ValueError("Survey is not ended, can't calculate score")
@@ -159,11 +159,11 @@ class WEISurvey2021(WEISurvey):
                 - self.word_mean(getattr(self.information, 'word' + str(i))) for i in range(1, 21)) / 20
         return s
 
-    @lru_cache()
+#    @lru_cache()
     def scores_per_bus(self):
         return {bus: self.score(bus) for bus in self.get_algorithm_class().get_buses()}
 
-    @lru_cache()
+#    @lru_cache()
     def ordered_buses(self):
         values = list(self.scores_per_bus().items())
         values.sort(key=lambda item: -item[1])
diff --git a/apps/wei/forms/surveys/wei2022.py b/apps/wei/forms/surveys/wei2022.py
index cb2b4adb634ed1c2ac9b4a7ddc7ca1cef5b287d3..0c8a16d4a3665bab0f320c67d155add0614da43e 100644
--- a/apps/wei/forms/surveys/wei2022.py
+++ b/apps/wei/forms/surveys/wei2022.py
@@ -14,17 +14,17 @@ from .base import WEISurvey, WEISurveyInformation, WEISurveyAlgorithm, WEIBusInf
 from ...models import WEIMembership
 
 WORDS = [
-	'ABBA', 'After', 'Alcoolique anonyme', 'Ambiance festive', 'Années 2000', 'Apéro', 'Art',
-	'Baby foot billard biere pong', 'BBQ', 'Before', 'Bière pong', 'Bon enfant', 'Calme', 'Canapé',
-	'Chanson paillarde', 'Chanson populaire', 'Chartreuse', 'Cheerleader', 'Chill', 'Choré',
-	'Cinéma', 'Cocktail', 'Comédie musicle', 'Commercial', 'Copaing', 'Danse', 'Dancefloor',
-	'Electro', 'Fanfare', 'Gin tonic', 'Inclusif', 'Jazz', "Jeux d'alcool", 'Jeux de carte',
-	'Jeux de rôle', 'Jeux de société', 'JUL', 'Jus de fruit', 'Kfet', 'Kleptomanie assurée',
-	'LGBTQ+', 'Livre', 'Morning beer', 'Musique', 'NAPS', 'Paillettes', 'Pastis', 'Paté Hénaff',
-	'Peluche', 'Pena baiona', "Peu d'alcool", 'Pilier de bar', 'PMU', 'Poulpe', 'Punch', 'Rap',
-	'Réveil', 'Rock', 'Rugby', 'Sandwich', 'Serge', 'Shot', 'Sociable', 'Spectacle', 'Techno',
-	'Techno house', 'Thérapie Taxi', 'Tradition kchanaises', 'Troisième mi-temps', 'Turn up',
-	'Vodka', 'Vodka pomme', 'Volley', 'Vomi stratégique'
+    'ABBA', 'After', 'Alcoolique anonyme', 'Ambiance festive', 'Années 2000', 'Apéro', 'Art',
+    'Baby foot billard biere pong', 'BBQ', 'Before', 'Bière pong', 'Bon enfant', 'Calme', 'Canapé',
+    'Chanson paillarde', 'Chanson populaire', 'Chartreuse', 'Cheerleader', 'Chill', 'Choré',
+    'Cinéma', 'Cocktail', 'Comédie musicle', 'Commercial', 'Copaing', 'Danse', 'Dancefloor',
+    'Electro', 'Fanfare', 'Gin tonic', 'Inclusif', 'Jazz', "Jeux d'alcool", 'Jeux de carte',
+    'Jeux de rôle', 'Jeux de société', 'JUL', 'Jus de fruit', 'Kfet', 'Kleptomanie assurée',
+    'LGBTQ+', 'Livre', 'Morning beer', 'Musique', 'NAPS', 'Paillettes', 'Pastis', 'Paté Hénaff',
+    'Peluche', 'Pena baiona', "Peu d'alcool", 'Pilier de bar', 'PMU', 'Poulpe', 'Punch', 'Rap',
+    'Réveil', 'Rock', 'Rugby', 'Sandwich', 'Serge', 'Shot', 'Sociable', 'Spectacle', 'Techno',
+    'Techno house', 'Thérapie Taxi', 'Tradition kchanaises', 'Troisième mi-temps', 'Turn up',
+    'Vodka', 'Vodka pomme', 'Volley', 'Vomi stratégique'
 ]
 
 
@@ -151,7 +151,7 @@ class WEISurvey2022(WEISurvey):
         buses = cls.get_algorithm_class().get_buses()
         return sum([cls.get_algorithm_class().get_bus_information(bus).scores[word] for bus in buses]) / buses.count()
 
-    @lru_cache()
+#    @lru_cache()
     def score(self, bus):
         if not self.is_complete():
             raise ValueError("Survey is not ended, can't calculate score")
@@ -162,11 +162,11 @@ class WEISurvey2022(WEISurvey):
                 - self.word_mean(getattr(self.information, 'word' + str(i))) for i in range(1, 21)) / 20
         return s
 
-    @lru_cache()
+#    @lru_cache()
     def scores_per_bus(self):
         return {bus: self.score(bus) for bus in self.get_algorithm_class().get_buses()}
 
-    @lru_cache()
+#    @lru_cache()
     def ordered_buses(self):
         values = list(self.scores_per_bus().items())
         values.sort(key=lambda item: -item[1])
diff --git a/apps/wei/migrations/0006_unisex_clothing_cut.py b/apps/wei/migrations/0006_unisex_clothing_cut.py
new file mode 100644
index 0000000000000000000000000000000000000000..c2ed7c97560b2e22f82ac025bbba9541f0590f7c
--- /dev/null
+++ b/apps/wei/migrations/0006_unisex_clothing_cut.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.2.28 on 2023-07-09 09:51
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('wei', '0005_auto_20230128_1850'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='weiregistration',
+            name='clothing_cut',
+            field=models.CharField(choices=[('male', 'Male'), ('female', 'Female'), ('unisex', 'Unisex')], default='unisex', max_length=16, verbose_name='clothing cut'),
+        ),
+    ]
diff --git a/apps/wei/migrations/0007_help_text_emergency_contact.py b/apps/wei/migrations/0007_help_text_emergency_contact.py
new file mode 100644
index 0000000000000000000000000000000000000000..4437db7d20ae9d649653175cb377d18a1f52fa4e
--- /dev/null
+++ b/apps/wei/migrations/0007_help_text_emergency_contact.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.2.28 on 2023-07-09 12:46
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('wei', '0006_unisex_clothing_cut'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='weiregistration',
+            name='emergency_contact_name',
+            field=models.CharField(help_text='The emergency contact must not be a WEI participant', max_length=255, verbose_name='emergency contact name'),
+        ),
+    ]
diff --git a/apps/wei/models.py b/apps/wei/models.py
index 6b7272b4c0502879bd283d7e4fd68807ae37bf9e..6b05609f42a509686084bfa938cec38aeb97ea6f 100644
--- a/apps/wei/models.py
+++ b/apps/wei/models.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2021 by BDE ENS Paris-Saclay
+# Copyright (C) 2018-2023 by BDE ENS Paris-Saclay
 # SPDX-License-Identifier: GPL-3.0-or-later
 
 import json
@@ -209,7 +209,9 @@ class WEIRegistration(models.Model):
         choices=(
             ('male', _("Male")),
             ('female', _("Female")),
+            ('unisex', _("Unisex")),
         ),
+        default='unisex',
         verbose_name=_("clothing cut"),
     )
 
@@ -235,6 +237,7 @@ class WEIRegistration(models.Model):
     emergency_contact_name = models.CharField(
         max_length=255,
         verbose_name=_("emergency contact name"),
+        help_text=_("The emergency contact must not be a WEI participant")
     )
 
     emergency_contact_phone = PhoneNumberField(
diff --git a/apps/wei/templates/wei/weimembership_form.html b/apps/wei/templates/wei/weimembership_form.html
index 7d1059b7f6cd169384877abc61a8494f6c23b206..017b0dd702cbdf3bc5a0a718e09a26981b00f14e 100644
--- a/apps/wei/templates/wei/weimembership_form.html
+++ b/apps/wei/templates/wei/weimembership_form.html
@@ -56,7 +56,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
                 <dd class="col-xl-6">{{ registration.get_gender_display }}</dd>
 
                 <dt class="col-xl-6">{% trans 'clothing cut'|capfirst %}</dt>
-                <dd class="col-xl-6">{{ registration.clothing_cut }}</dd>
+                <dd class="col-xl-6">{{ registration.get_clothing_cut_display }}</dd>
 
                 <dt class="col-xl-6">{% trans 'clothing size'|capfirst %}</dt>
                 <dd class="col-xl-6">{{ registration.clothing_size }}</dd>
diff --git a/docs/api/wei.rst b/docs/api/wei.rst
index 8c92c0263e6282c40de187c0f7cd8c8f4b32df4b..125ac9b41ce4ed85201e773509bf72f072ce88b0 100644
--- a/docs/api/wei.rst
+++ b/docs/api/wei.rst
@@ -448,6 +448,10 @@ Options
                           "value": "female",
                           "display_name": "Femme"
                       }
+                      {
+                          "value": "unisex",
+                          "display_name": "Unisexe"
+                      },
                   ]
               },
               "clothing_size": {
diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po
index 8404af4d41e7daf522d4ccfb01f093d7d6587769..0900b1b4699413125b641ab29f93413d0519fff5 100644
--- a/locale/de/LC_MESSAGES/django.po
+++ b/locale/de/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-03-31 17:08+0200\n"
+"POT-Creation-Date: 2023-07-09 14:46+0200\n"
 "PO-Revision-Date: 2020-11-16 20:02+0000\n"
 "Last-Translator: bleizi <bleizi@crans.org>\n"
 "Language-Team: German <http://translate.ynerant.fr/projects/nk20/nk20/de/>\n"
@@ -115,7 +115,7 @@ msgid "type"
 msgstr "Type"
 
 #: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:307
-#: apps/note/models/notes.py:148 apps/treasury/models.py:286
+#: apps/note/models/notes.py:148 apps/treasury/models.py:287
 #: apps/wei/models.py:173 apps/wei/templates/wei/attribute_bus_1A.html:13
 #: apps/wei/templates/wei/survey.html:15
 msgid "user"
@@ -258,19 +258,19 @@ msgstr "Eingetreten um "
 msgid "remove"
 msgstr "entfernen"
 
-#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:200
+#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:201
 msgid "Type"
 msgstr "Type"
 
 #: apps/activity/tables.py:84 apps/member/forms.py:186
-#: apps/registration/forms.py:91 apps/treasury/forms.py:131
+#: apps/registration/forms.py:92 apps/treasury/forms.py:131
 #: apps/wei/forms/registration.py:104
 msgid "Last name"
 msgstr "Nachname"
 
 #: apps/activity/tables.py:86 apps/member/forms.py:191
 #: apps/note/templates/note/transaction_form.html:138
-#: apps/registration/forms.py:96 apps/treasury/forms.py:133
+#: apps/registration/forms.py:97 apps/treasury/forms.py:133
 #: apps/wei/forms/registration.py:109
 msgid "First name"
 msgstr "Vorname"
@@ -549,24 +549,24 @@ msgid "This image cannot be loaded."
 msgstr "Dieses Bild kann nicht geladen werden."
 
 #: apps/member/forms.py:141 apps/member/views.py:103
-#: apps/registration/forms.py:33 apps/registration/views.py:262
+#: apps/registration/forms.py:34 apps/registration/views.py:266
 msgid "An alias with a similar name already exists."
 msgstr "Ein ähnliches Alias ist schon benutzt."
 
-#: apps/member/forms.py:165 apps/registration/forms.py:71
+#: apps/member/forms.py:165
 msgid "Inscription paid by Société Générale"
 msgstr "Mitgliedschaft von der Société Générale bezahlt"
 
-#: apps/member/forms.py:167 apps/registration/forms.py:73
+#: apps/member/forms.py:167
 msgid "Check this case if the Société Générale paid the inscription."
 msgstr "Die Société Générale die Mitgliedschaft bezahlt."
 
-#: apps/member/forms.py:172 apps/registration/forms.py:78
+#: apps/member/forms.py:172 apps/registration/forms.py:79
 #: apps/wei/forms/registration.py:91
 msgid "Credit type"
 msgstr "Kredittype"
 
-#: apps/member/forms.py:173 apps/registration/forms.py:79
+#: apps/member/forms.py:173 apps/registration/forms.py:80
 #: apps/wei/forms/registration.py:92
 msgid "No credit"
 msgstr "Kein Kredit"
@@ -575,13 +575,13 @@ msgstr "Kein Kredit"
 msgid "You can credit the note of the user."
 msgstr "Sie dûrfen diese Note kreditieren."
 
-#: apps/member/forms.py:179 apps/registration/forms.py:84
+#: apps/member/forms.py:179 apps/registration/forms.py:85
 #: apps/wei/forms/registration.py:97
 msgid "Credit amount"
 msgstr "Kreditanzahl"
 
 #: apps/member/forms.py:196 apps/note/templates/note/transaction_form.html:144
-#: apps/registration/forms.py:101 apps/treasury/forms.py:135
+#: apps/registration/forms.py:102 apps/treasury/forms.py:135
 #: apps/wei/forms/registration.py:114
 msgid "Bank"
 msgstr "Bank"
@@ -1193,7 +1193,7 @@ msgstr "Speichern"
 msgid "Registrations"
 msgstr "Anmeldung"
 
-#: apps/member/views.py:73 apps/registration/forms.py:23
+#: apps/member/views.py:73 apps/registration/forms.py:24
 msgid "This address must be valid."
 msgstr "Diese Adresse muss gültig sein."
 
@@ -1249,11 +1249,11 @@ msgstr "Die Mitgliedschaft muss nach {:%m-%d-Y} anfängen."
 msgid "The membership must begin before {:%m-%d-%Y}."
 msgstr "Die Mitgliedschaft muss vor {:%m-%d-Y} anfängen."
 
-#: apps/member/views.py:876
+#: apps/member/views.py:880
 msgid "Manage roles of an user in the club"
 msgstr "Rollen in diesen Club bearbeiten"
 
-#: apps/member/views.py:901
+#: apps/member/views.py:905
 msgid "Members of the club"
 msgstr "Mitlglieder dieses Club"
 
@@ -1570,7 +1570,7 @@ msgstr "Sondertranskationen"
 msgid "membership transaction"
 msgstr "Mitgliedschafttransaktion"
 
-#: apps/note/models/transactions.py:385 apps/treasury/models.py:293
+#: apps/note/models/transactions.py:385 apps/treasury/models.py:294
 msgid "membership transactions"
 msgstr "Mitgliedschaftttransaktionen"
 
@@ -1689,7 +1689,7 @@ msgid "Amount"
 msgstr "Anzahl"
 
 #: apps/note/templates/note/transaction_form.html:132
-#: apps/treasury/models.py:55
+#: apps/treasury/models.py:56
 msgid "Name"
 msgstr "Name"
 
@@ -1982,29 +1982,15 @@ msgstr "Alle Rechten"
 msgid "registration"
 msgstr "Anmeldung"
 
-#: apps/registration/forms.py:39
+#: apps/registration/forms.py:40
 msgid "This email address is already used."
 msgstr "Diese email adresse ist schon benutzt."
 
-#: apps/registration/forms.py:49
-#, fuzzy
-#| msgid "You already opened an account in the Société générale."
-msgid ""
-"I declare that I opened or I will open soon a bank account in the Société "
-"générale with the BDE partnership."
-msgstr "Sie haben bereits ein Konto in der Société générale eröffnet."
-
-#: apps/registration/forms.py:51
-msgid ""
-"Warning: this engages you to open your bank account. If you finally decides "
-"to don't open your account, you will have to pay the BDE membership."
-msgstr ""
-
-#: apps/registration/forms.py:59
+#: apps/registration/forms.py:60
 msgid "Register to the WEI"
 msgstr "Zu WEI anmelden"
 
-#: apps/registration/forms.py:61
+#: apps/registration/forms.py:62
 msgid ""
 "Check this case if you want to register to the WEI. If you hesitate, you "
 "will be able to register later, after validating your account in the Kfet."
@@ -2013,14 +1999,18 @@ msgstr ""
 "falls Zweifel, können Sie sich später nach Bestätigung Ihres Kontos im Kfet "
 "registrieren."
 
-#: apps/registration/forms.py:106
+#: apps/registration/forms.py:107
 msgid "Join BDE Club"
 msgstr "BDE Mitglieder werden"
 
-#: apps/registration/forms.py:113
+#: apps/registration/forms.py:114
 msgid "Join Kfet Club"
 msgstr "Kfet Mitglieder werden"
 
+#: apps/registration/forms.py:123
+msgid "Join BDA Club"
+msgstr "BDA Mitglieder werden"
+
 #: apps/registration/templates/registration/email_validation_complete.html:15
 msgid "Your email have successfully been validated."
 msgstr "Ihre E-Mail wurde erfolgreich validiert."
@@ -2069,14 +2059,14 @@ msgstr "Registrierung löschen"
 msgid "Validate account"
 msgstr "Konto validieren"
 
-#: apps/registration/templates/registration/future_profile_detail.html:62
+#: apps/registration/templates/registration/future_profile_detail.html:63
 #, fuzzy
 #| msgid "You already opened an account in the Société générale."
 msgid ""
 "The user declared that he/she opened a bank account in the Société générale."
 msgstr "Sie haben bereits ein Konto in der Société générale eröffnet."
 
-#: apps/registration/templates/registration/future_profile_detail.html:71
+#: apps/registration/templates/registration/future_profile_detail.html:73
 #: apps/wei/templates/wei/weimembership_form.html:127
 #: apps/wei/templates/wei/weimembership_form.html:186
 msgid "Validate registration"
@@ -2128,54 +2118,54 @@ msgstr "Danke"
 msgid "The Note Kfet team."
 msgstr "Die NoteKfet Team."
 
-#: apps/registration/views.py:40
+#: apps/registration/views.py:41
 msgid "Register new user"
 msgstr "Neuen User registrieren"
 
-#: apps/registration/views.py:98
+#: apps/registration/views.py:99
 msgid "Email validation"
 msgstr "Email validierung"
 
-#: apps/registration/views.py:100
+#: apps/registration/views.py:101
 msgid "Validate email"
 msgstr "Email validieren"
 
-#: apps/registration/views.py:144
+#: apps/registration/views.py:145
 msgid "Email validation unsuccessful"
 msgstr "Email validierung unerfolgreich"
 
-#: apps/registration/views.py:155
+#: apps/registration/views.py:156
 msgid "Email validation email sent"
 msgstr "Validierungsemail wurde gesendet"
 
-#: apps/registration/views.py:163
+#: apps/registration/views.py:164
 msgid "Resend email validation link"
 msgstr "E-Mail-Validierungslink erneut senden"
 
-#: apps/registration/views.py:181
+#: apps/registration/views.py:182
 msgid "Pre-registered users list"
 msgstr "Vorregistrierte Userliste"
 
-#: apps/registration/views.py:205
+#: apps/registration/views.py:206
 msgid "Unregistered users"
 msgstr "Unregistrierte Users"
 
-#: apps/registration/views.py:218
+#: apps/registration/views.py:219
 msgid "Registration detail"
 msgstr "Registrierung Detailen"
 
-#: apps/registration/views.py:282
+#: apps/registration/views.py:293
 msgid "You must join the BDE."
 msgstr "Sie müssen die BDE beitreten."
 
-#: apps/registration/views.py:306
+#: apps/registration/views.py:323
 msgid ""
 "The entered amount is not enough for the memberships, should be at least {}"
 msgstr ""
 "Der eingegebene Betrag reicht für die Mitgliedschaft nicht aus, sollte "
 "mindestens {} betragen"
 
-#: apps/registration/views.py:387
+#: apps/registration/views.py:417
 msgid "Invalidate pre-registration"
 msgstr "Ungültige Vorregistrierung"
 
@@ -2183,7 +2173,7 @@ msgstr "Ungültige Vorregistrierung"
 msgid "Treasury"
 msgstr "Quaestor"
 
-#: apps/treasury/forms.py:26 apps/treasury/models.py:94
+#: apps/treasury/forms.py:26 apps/treasury/models.py:95
 #: apps/treasury/templates/treasury/invoice_form.html:22
 msgid "This invoice is locked and can no longer be edited."
 msgstr "Diese Rechnung ist gesperrt und kann nicht mehr bearbeitet werden."
@@ -2196,7 +2186,7 @@ msgstr "Ãœberweisung ist bereits geschlossen."
 msgid "You can't change the type of the remittance."
 msgstr "Sie können die Art der Überweisung nicht ändern."
 
-#: apps/treasury/forms.py:125 apps/treasury/models.py:268
+#: apps/treasury/forms.py:125 apps/treasury/models.py:269
 #: apps/treasury/tables.py:97 apps/treasury/tables.py:105
 #: apps/treasury/templates/treasury/invoice_list.html:16
 #: apps/treasury/templates/treasury/remittance_list.html:16
@@ -2212,112 +2202,112 @@ msgstr "Keine beigefügte Überweisung"
 msgid "Invoice identifier"
 msgstr "Rechnungskennung"
 
-#: apps/treasury/models.py:41
+#: apps/treasury/models.py:42
 msgid "BDE"
 msgstr "BDE"
 
-#: apps/treasury/models.py:46
+#: apps/treasury/models.py:47
 msgid "Object"
 msgstr "Objekt"
 
-#: apps/treasury/models.py:50
+#: apps/treasury/models.py:51
 msgid "Description"
 msgstr "Beschreibung"
 
-#: apps/treasury/models.py:59
+#: apps/treasury/models.py:60
 msgid "Address"
 msgstr "Adresse"
 
-#: apps/treasury/models.py:64 apps/treasury/models.py:194
+#: apps/treasury/models.py:65 apps/treasury/models.py:195
 msgid "Date"
 msgstr "Datum"
 
-#: apps/treasury/models.py:68
+#: apps/treasury/models.py:69
 msgid "Acquitted"
 msgstr "Bezahlt"
 
-#: apps/treasury/models.py:73
+#: apps/treasury/models.py:74
 msgid "Locked"
 msgstr "Gesperrt"
 
-#: apps/treasury/models.py:74
+#: apps/treasury/models.py:75
 msgid "An invoice can't be edited when it is locked."
 msgstr "Eine Rechnung kann nicht bearbeitet werden, wenn sie gesperrt ist."
 
-#: apps/treasury/models.py:80
+#: apps/treasury/models.py:81
 msgid "tex source"
 msgstr "Tex Quelle"
 
-#: apps/treasury/models.py:114 apps/treasury/models.py:130
+#: apps/treasury/models.py:115 apps/treasury/models.py:131
 msgid "invoice"
 msgstr "Rechnung"
 
-#: apps/treasury/models.py:115
+#: apps/treasury/models.py:116
 msgid "invoices"
 msgstr "Rechnungen"
 
-#: apps/treasury/models.py:118
+#: apps/treasury/models.py:119
 #, python-brace-format
 msgid "Invoice #{id}"
 msgstr "Rechnung #{id}"
 
-#: apps/treasury/models.py:135
+#: apps/treasury/models.py:136
 msgid "Designation"
 msgstr "Bezeichnung"
 
-#: apps/treasury/models.py:141
+#: apps/treasury/models.py:142
 msgid "Quantity"
 msgstr "Qualität"
 
-#: apps/treasury/models.py:146
+#: apps/treasury/models.py:147
 msgid "Unit price"
 msgstr "Einzelpreis"
 
-#: apps/treasury/models.py:162
+#: apps/treasury/models.py:163
 msgid "product"
 msgstr "Produkt"
 
-#: apps/treasury/models.py:163
+#: apps/treasury/models.py:164
 msgid "products"
 msgstr "Produkten"
 
-#: apps/treasury/models.py:183
+#: apps/treasury/models.py:184
 msgid "remittance type"
 msgstr "Ãœberweisungstyp"
 
-#: apps/treasury/models.py:184
+#: apps/treasury/models.py:185
 msgid "remittance types"
 msgstr "Ãœberweisungstypen"
 
-#: apps/treasury/models.py:205
+#: apps/treasury/models.py:206
 msgid "Comment"
 msgstr "Kommentar"
 
-#: apps/treasury/models.py:210
+#: apps/treasury/models.py:211
 msgid "Closed"
 msgstr "Geschlossen"
 
-#: apps/treasury/models.py:214
+#: apps/treasury/models.py:215
 msgid "remittance"
 msgstr "Ãœberweisung"
 
-#: apps/treasury/models.py:215
+#: apps/treasury/models.py:216
 msgid "remittances"
 msgstr "Ãœberweisungen"
 
-#: apps/treasury/models.py:248
+#: apps/treasury/models.py:249
 msgid "Remittance #{:d}: {}"
 msgstr "Ãœberweisung #{:d}:{}"
 
-#: apps/treasury/models.py:272
+#: apps/treasury/models.py:273
 msgid "special transaction proxy"
 msgstr "spezielle Transaktion Proxy"
 
-#: apps/treasury/models.py:273
+#: apps/treasury/models.py:274
 msgid "special transaction proxies"
 msgstr "spezielle Transaktion Proxies"
 
-#: apps/treasury/models.py:299
+#: apps/treasury/models.py:300
 msgid "credit transaction"
 msgstr "Kredit Transaktion"
 
@@ -2329,16 +2319,16 @@ msgstr ""
 "Dieser Benutzer hat nicht genug Geld, um die Mitgliedschaften mit seiner "
 "Note zu bezahlen."
 
-#: apps/treasury/models.py:453
+#: apps/treasury/models.py:452
 #: apps/treasury/templates/treasury/sogecredit_detail.html:10
 msgid "Credit from the Société générale"
 msgstr "Kredit von der Société générale"
 
-#: apps/treasury/models.py:454
+#: apps/treasury/models.py:453
 msgid "Credits from the Société générale"
 msgstr "Krediten von der Société générale"
 
-#: apps/treasury/models.py:457
+#: apps/treasury/models.py:456
 #, python-brace-format
 msgid "Soge credit for {user}"
 msgstr "Kredit von der Société générale für {user}"
@@ -2602,7 +2592,7 @@ msgid "The selected user is not validated. Please validate its account first"
 msgstr ""
 
 #: apps/wei/forms/registration.py:59 apps/wei/models.py:126
-#: apps/wei/models.py:323
+#: apps/wei/models.py:326
 msgid "bus"
 msgstr "Bus"
 
@@ -2727,40 +2717,48 @@ msgstr "Nicht binär"
 msgid "gender"
 msgstr "Geschlecht"
 
-#: apps/wei/models.py:213 apps/wei/templates/wei/weimembership_form.html:58
+#: apps/wei/models.py:212
+msgid "Unisex"
+msgstr "Unisex"
+
+#: apps/wei/models.py:215 apps/wei/templates/wei/weimembership_form.html:58
 msgid "clothing cut"
 msgstr "Kleidung Schnitt"
 
-#: apps/wei/models.py:226 apps/wei/templates/wei/weimembership_form.html:61
+#: apps/wei/models.py:228 apps/wei/templates/wei/weimembership_form.html:61
 msgid "clothing size"
 msgstr "Kleidergröße"
 
-#: apps/wei/models.py:232 apps/wei/templates/wei/attribute_bus_1A.html:28
+#: apps/wei/models.py:234 apps/wei/templates/wei/attribute_bus_1A.html:28
 #: apps/wei/templates/wei/weimembership_form.html:67
 msgid "health issues"
 msgstr "Gesundheitsprobleme"
 
-#: apps/wei/models.py:237 apps/wei/templates/wei/weimembership_form.html:70
+#: apps/wei/models.py:239 apps/wei/templates/wei/weimembership_form.html:70
 msgid "emergency contact name"
 msgstr "Notfall-Kontakt"
 
-#: apps/wei/models.py:242 apps/wei/templates/wei/weimembership_form.html:73
+#: apps/wei/models.py:240
+msgid "The emergency contact must not be a WEI participant"
+msgstr "Der Notfallkontakt darf kein WEI-Teilnehmer sein"
+
+#: apps/wei/models.py:245 apps/wei/templates/wei/weimembership_form.html:73
 msgid "emergency contact phone"
 msgstr "Notfallkontakttelefon"
 
-#: apps/wei/models.py:247 apps/wei/templates/wei/weimembership_form.html:52
+#: apps/wei/models.py:250 apps/wei/templates/wei/weimembership_form.html:52
 msgid "first year"
 msgstr "Erste Jahr"
 
-#: apps/wei/models.py:248
+#: apps/wei/models.py:251
 msgid "Tells if the user is new in the school."
 msgstr "Gibt an, ob der USer neu in der Schule ist."
 
-#: apps/wei/models.py:253
+#: apps/wei/models.py:256
 msgid "registration information"
 msgstr "Registrierung Detailen"
 
-#: apps/wei/models.py:254
+#: apps/wei/models.py:257
 msgid ""
 "Information about the registration (buses for old members, survey for the "
 "new members), encoded in JSON"
@@ -2768,27 +2766,27 @@ msgstr ""
 "Informationen zur Registrierung (Busse für alte Mitglieder, Umfrage für neue "
 "Mitglieder), verschlüsselt in JSON"
 
-#: apps/wei/models.py:312
+#: apps/wei/models.py:315
 msgid "WEI User"
 msgstr "WEI User"
 
-#: apps/wei/models.py:313
+#: apps/wei/models.py:316
 msgid "WEI Users"
 msgstr "WEI Users"
 
-#: apps/wei/models.py:333
+#: apps/wei/models.py:336
 msgid "team"
 msgstr "Team"
 
-#: apps/wei/models.py:343
+#: apps/wei/models.py:346
 msgid "WEI registration"
 msgstr "WEI Registrierung"
 
-#: apps/wei/models.py:347
+#: apps/wei/models.py:350
 msgid "WEI membership"
 msgstr "WEI Mitgliedschaft"
 
-#: apps/wei/models.py:348
+#: apps/wei/models.py:351
 msgid "WEI memberships"
 msgstr "WEI Mitgliedschaften"
 
@@ -3612,6 +3610,13 @@ msgstr ""
 "müssen Ihre E-Mail-Adresse auch überprüfen, indem Sie dem Link folgen, den "
 "Sie erhalten haben."
 
+#, fuzzy
+#~| msgid "You already opened an account in the Société générale."
+#~ msgid ""
+#~ "I declare that I opened or I will open soon a bank account in the Société "
+#~ "générale with the BDE partnership."
+#~ msgstr "Sie haben bereits ein Konto in der Société générale eröffnet."
+
 #~ msgid "This user didn't give her/his caution check."
 #~ msgstr "Dieser User hat seine / ihre Vorsicht nicht überprüft."
 
diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po
index 6e204d6c2774c0cfb19c1dadf923399ce6428259..78a6aae1ebd2202cfe8d023438ac120d8c6d55ff 100644
--- a/locale/es/LC_MESSAGES/django.po
+++ b/locale/es/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-03-31 17:08+0200\n"
+"POT-Creation-Date: 2023-07-09 14:46+0200\n"
 "PO-Revision-Date: 2022-04-11 23:12+0200\n"
 "Last-Translator: bleizi <bleizi@crans.org>\n"
 "Language-Team: \n"
@@ -114,7 +114,7 @@ msgid "type"
 msgstr "tipo"
 
 #: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:307
-#: apps/note/models/notes.py:148 apps/treasury/models.py:286
+#: apps/note/models/notes.py:148 apps/treasury/models.py:287
 #: apps/wei/models.py:173 apps/wei/templates/wei/attribute_bus_1A.html:13
 #: apps/wei/templates/wei/survey.html:15
 msgid "user"
@@ -257,19 +257,19 @@ msgstr "Entrado el "
 msgid "remove"
 msgstr "quitar"
 
-#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:200
+#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:201
 msgid "Type"
 msgstr "Tipo"
 
 #: apps/activity/tables.py:84 apps/member/forms.py:186
-#: apps/registration/forms.py:91 apps/treasury/forms.py:131
+#: apps/registration/forms.py:92 apps/treasury/forms.py:131
 #: apps/wei/forms/registration.py:104
 msgid "Last name"
 msgstr "Apellido"
 
 #: apps/activity/tables.py:86 apps/member/forms.py:191
 #: apps/note/templates/note/transaction_form.html:138
-#: apps/registration/forms.py:96 apps/treasury/forms.py:133
+#: apps/registration/forms.py:97 apps/treasury/forms.py:133
 #: apps/wei/forms/registration.py:109
 msgid "First name"
 msgstr "Nombre"
@@ -546,24 +546,24 @@ msgid "This image cannot be loaded."
 msgstr "Esta imagen no puede ser cargada."
 
 #: apps/member/forms.py:141 apps/member/views.py:103
-#: apps/registration/forms.py:33 apps/registration/views.py:262
+#: apps/registration/forms.py:34 apps/registration/views.py:266
 msgid "An alias with a similar name already exists."
 msgstr "Un alias similar ya existe."
 
-#: apps/member/forms.py:165 apps/registration/forms.py:71
+#: apps/member/forms.py:165
 msgid "Inscription paid by Société Générale"
 msgstr "Registración pagadas por Société Générale"
 
-#: apps/member/forms.py:167 apps/registration/forms.py:73
+#: apps/member/forms.py:167
 msgid "Check this case if the Société Générale paid the inscription."
 msgstr "Marcar esta casilla si Société Générale pagó la registración."
 
-#: apps/member/forms.py:172 apps/registration/forms.py:78
+#: apps/member/forms.py:172 apps/registration/forms.py:79
 #: apps/wei/forms/registration.py:91
 msgid "Credit type"
 msgstr "Tipo de crédito"
 
-#: apps/member/forms.py:173 apps/registration/forms.py:79
+#: apps/member/forms.py:173 apps/registration/forms.py:80
 #: apps/wei/forms/registration.py:92
 msgid "No credit"
 msgstr "No crédito"
@@ -572,13 +572,13 @@ msgstr "No crédito"
 msgid "You can credit the note of the user."
 msgstr "Usted puede acreditar la note del usuario."
 
-#: apps/member/forms.py:179 apps/registration/forms.py:84
+#: apps/member/forms.py:179 apps/registration/forms.py:85
 #: apps/wei/forms/registration.py:97
 msgid "Credit amount"
 msgstr "Valor del crédito"
 
 #: apps/member/forms.py:196 apps/note/templates/note/transaction_form.html:144
-#: apps/registration/forms.py:101 apps/treasury/forms.py:135
+#: apps/registration/forms.py:102 apps/treasury/forms.py:135
 #: apps/wei/forms/registration.py:114
 msgid "Bank"
 msgstr "Banco"
@@ -1180,7 +1180,7 @@ msgstr "Guardar cambios"
 msgid "Registrations"
 msgstr "Registraciones"
 
-#: apps/member/views.py:73 apps/registration/forms.py:23
+#: apps/member/views.py:73 apps/registration/forms.py:24
 msgid "This address must be valid."
 msgstr "Este correo tiene que ser valido."
 
@@ -1236,11 +1236,11 @@ msgstr "La afiliación tiene que empezar después del {:%d-%m-%Y}."
 msgid "The membership must begin before {:%m-%d-%Y}."
 msgstr "La afiliación tiene que empezar antes del {:%d-%m-%Y}."
 
-#: apps/member/views.py:876
+#: apps/member/views.py:880
 msgid "Manage roles of an user in the club"
 msgstr "Gestionar los papeles de un usuario en el club"
 
-#: apps/member/views.py:901
+#: apps/member/views.py:905
 msgid "Members of the club"
 msgstr "Miembros del club"
 
@@ -1557,7 +1557,7 @@ msgstr "Transacciones especiales"
 msgid "membership transaction"
 msgstr "transacción de afiliación"
 
-#: apps/note/models/transactions.py:385 apps/treasury/models.py:293
+#: apps/note/models/transactions.py:385 apps/treasury/models.py:294
 msgid "membership transactions"
 msgstr "transacciones de afiliación"
 
@@ -1676,7 +1676,7 @@ msgid "Amount"
 msgstr "Monto"
 
 #: apps/note/templates/note/transaction_form.html:132
-#: apps/treasury/models.py:55
+#: apps/treasury/models.py:56
 msgid "Name"
 msgstr "Nombre"
 
@@ -1963,31 +1963,15 @@ msgstr "Todos los permisos"
 msgid "registration"
 msgstr "afiliación"
 
-#: apps/registration/forms.py:39
+#: apps/registration/forms.py:40
 msgid "This email address is already used."
 msgstr "Este correo electrónico ya esta utilizado."
 
-#: apps/registration/forms.py:49
-msgid ""
-"I declare that I opened or I will open soon a bank account in the Société "
-"générale with the BDE partnership."
-msgstr ""
-"Declaro que ya abrió una cuenta a la Société Générale en colaboración con el "
-"BDE."
-
-#: apps/registration/forms.py:51
-msgid ""
-"Warning: this engages you to open your bank account. If you finally decides "
-"to don't open your account, you will have to pay the BDE membership."
-msgstr ""
-"Cuidado : esto le obliga abrir su cuenta bancaria. Si cambia de idea y no "
-"abre su cuenta bancaria, tendrá que pagar su afiliación al BDE."
-
-#: apps/registration/forms.py:59
+#: apps/registration/forms.py:60
 msgid "Register to the WEI"
 msgstr "Registrarse en el WEI"
 
-#: apps/registration/forms.py:61
+#: apps/registration/forms.py:62
 msgid ""
 "Check this case if you want to register to the WEI. If you hesitate, you "
 "will be able to register later, after validating your account in the Kfet."
@@ -1995,14 +1979,18 @@ msgstr ""
 "Marcar esta casilla si usted quiere registrarse en el WEI. Si duda, podrá "
 "registrarse más tarde, después de validar su cuenta Note Kfet."
 
-#: apps/registration/forms.py:106
+#: apps/registration/forms.py:107
 msgid "Join BDE Club"
 msgstr "Afiliarse al club BDE"
 
-#: apps/registration/forms.py:113
+#: apps/registration/forms.py:114
 msgid "Join Kfet Club"
 msgstr "Afiliarse al club Kfet"
 
+#: apps/registration/forms.py:123
+msgid "Join BDA Club"
+msgstr "Afiliarse al club BDA"
+
 #: apps/registration/templates/registration/email_validation_complete.html:15
 msgid "Your email have successfully been validated."
 msgstr "Su correo electrónico fue validado con éxito."
@@ -2051,12 +2039,12 @@ msgstr "Suprimir afiliación"
 msgid "Validate account"
 msgstr "Validar la cuenta"
 
-#: apps/registration/templates/registration/future_profile_detail.html:62
+#: apps/registration/templates/registration/future_profile_detail.html:63
 msgid ""
 "The user declared that he/she opened a bank account in the Société générale."
 msgstr "El usuario declara que ya abrió una cuenta a la Société Générale."
 
-#: apps/registration/templates/registration/future_profile_detail.html:71
+#: apps/registration/templates/registration/future_profile_detail.html:73
 #: apps/wei/templates/wei/weimembership_form.html:127
 #: apps/wei/templates/wei/weimembership_form.html:186
 msgid "Validate registration"
@@ -2108,54 +2096,54 @@ msgstr "Gracias"
 msgid "The Note Kfet team."
 msgstr "El equipo Note Kfet."
 
-#: apps/registration/views.py:40
+#: apps/registration/views.py:41
 msgid "Register new user"
 msgstr "Registrar un nuevo usuario"
 
-#: apps/registration/views.py:98
+#: apps/registration/views.py:99
 msgid "Email validation"
 msgstr "Validación del correo electrónico"
 
-#: apps/registration/views.py:100
+#: apps/registration/views.py:101
 msgid "Validate email"
 msgstr "Validar el correo electrónico"
 
-#: apps/registration/views.py:144
+#: apps/registration/views.py:145
 msgid "Email validation unsuccessful"
 msgstr "La validación del correo electrónico fracasó"
 
-#: apps/registration/views.py:155
+#: apps/registration/views.py:156
 msgid "Email validation email sent"
 msgstr "Correo de validación enviado"
 
-#: apps/registration/views.py:163
+#: apps/registration/views.py:164
 msgid "Resend email validation link"
 msgstr "Reenviar el enlace de validación"
 
-#: apps/registration/views.py:181
+#: apps/registration/views.py:182
 msgid "Pre-registered users list"
 msgstr "Lista de los usuarios con afiliación pendiente"
 
-#: apps/registration/views.py:205
+#: apps/registration/views.py:206
 msgid "Unregistered users"
 msgstr "Usuarios con afiliación pendiente"
 
-#: apps/registration/views.py:218
+#: apps/registration/views.py:219
 msgid "Registration detail"
 msgstr "Detalles de la afiliación"
 
-#: apps/registration/views.py:282
+#: apps/registration/views.py:293
 msgid "You must join the BDE."
 msgstr "Usted tiene que afiliarse al BDE."
 
-#: apps/registration/views.py:306
+#: apps/registration/views.py:323
 msgid ""
 "The entered amount is not enough for the memberships, should be at least {}"
 msgstr ""
 "El monto dado no es suficiente para las afiliaciones, tiene que ser al menos "
 "{}"
 
-#: apps/registration/views.py:387
+#: apps/registration/views.py:417
 msgid "Invalidate pre-registration"
 msgstr "Invalidar la afiliación"
 
@@ -2163,7 +2151,7 @@ msgstr "Invalidar la afiliación"
 msgid "Treasury"
 msgstr "Tesorería"
 
-#: apps/treasury/forms.py:26 apps/treasury/models.py:94
+#: apps/treasury/forms.py:26 apps/treasury/models.py:95
 #: apps/treasury/templates/treasury/invoice_form.html:22
 msgid "This invoice is locked and can no longer be edited."
 msgstr "Esta factura esta bloqueada y no puede ser modificada."
@@ -2176,7 +2164,7 @@ msgstr "El descuento ya esta cerrado."
 msgid "You can't change the type of the remittance."
 msgstr "No puede cambiar el tipo de descuento."
 
-#: apps/treasury/forms.py:125 apps/treasury/models.py:268
+#: apps/treasury/forms.py:125 apps/treasury/models.py:269
 #: apps/treasury/tables.py:97 apps/treasury/tables.py:105
 #: apps/treasury/templates/treasury/invoice_list.html:16
 #: apps/treasury/templates/treasury/remittance_list.html:16
@@ -2192,112 +2180,112 @@ msgstr "No hay descuento relacionado"
 msgid "Invoice identifier"
 msgstr "Numero de factura"
 
-#: apps/treasury/models.py:41
+#: apps/treasury/models.py:42
 msgid "BDE"
 msgstr "BDE"
 
-#: apps/treasury/models.py:46
+#: apps/treasury/models.py:47
 msgid "Object"
 msgstr "Asunto"
 
-#: apps/treasury/models.py:50
+#: apps/treasury/models.py:51
 msgid "Description"
 msgstr "Descripción"
 
-#: apps/treasury/models.py:59
+#: apps/treasury/models.py:60
 msgid "Address"
 msgstr "Dirección"
 
-#: apps/treasury/models.py:64 apps/treasury/models.py:194
+#: apps/treasury/models.py:65 apps/treasury/models.py:195
 msgid "Date"
 msgstr "Fecha"
 
-#: apps/treasury/models.py:68
+#: apps/treasury/models.py:69
 msgid "Acquitted"
 msgstr "Pagada"
 
-#: apps/treasury/models.py:73
+#: apps/treasury/models.py:74
 msgid "Locked"
 msgstr "Bloqueada"
 
-#: apps/treasury/models.py:74
+#: apps/treasury/models.py:75
 msgid "An invoice can't be edited when it is locked."
 msgstr "Une factura no puede ser modificada cuando esta bloqueada."
 
-#: apps/treasury/models.py:80
+#: apps/treasury/models.py:81
 msgid "tex source"
 msgstr "código fuente TeX"
 
-#: apps/treasury/models.py:114 apps/treasury/models.py:130
+#: apps/treasury/models.py:115 apps/treasury/models.py:131
 msgid "invoice"
 msgstr "factura"
 
-#: apps/treasury/models.py:115
+#: apps/treasury/models.py:116
 msgid "invoices"
 msgstr "facturas"
 
-#: apps/treasury/models.py:118
+#: apps/treasury/models.py:119
 #, python-brace-format
 msgid "Invoice #{id}"
 msgstr "Factura n°{id}"
 
-#: apps/treasury/models.py:135
+#: apps/treasury/models.py:136
 msgid "Designation"
 msgstr "Designación"
 
-#: apps/treasury/models.py:141
+#: apps/treasury/models.py:142
 msgid "Quantity"
 msgstr "Cantidad"
 
-#: apps/treasury/models.py:146
+#: apps/treasury/models.py:147
 msgid "Unit price"
 msgstr "Precio unitario"
 
-#: apps/treasury/models.py:162
+#: apps/treasury/models.py:163
 msgid "product"
 msgstr "producto"
 
-#: apps/treasury/models.py:163
+#: apps/treasury/models.py:164
 msgid "products"
 msgstr "productos"
 
-#: apps/treasury/models.py:183
+#: apps/treasury/models.py:184
 msgid "remittance type"
 msgstr "tipo de descuento"
 
-#: apps/treasury/models.py:184
+#: apps/treasury/models.py:185
 msgid "remittance types"
 msgstr "tipos de descuentos"
 
-#: apps/treasury/models.py:205
+#: apps/treasury/models.py:206
 msgid "Comment"
 msgstr "Comentario"
 
-#: apps/treasury/models.py:210
+#: apps/treasury/models.py:211
 msgid "Closed"
 msgstr "Cerrada"
 
-#: apps/treasury/models.py:214
+#: apps/treasury/models.py:215
 msgid "remittance"
 msgstr "descuento"
 
-#: apps/treasury/models.py:215
+#: apps/treasury/models.py:216
 msgid "remittances"
 msgstr "descuentos"
 
-#: apps/treasury/models.py:248
+#: apps/treasury/models.py:249
 msgid "Remittance #{:d}: {}"
 msgstr "Descuento n°{:d} : {}"
 
-#: apps/treasury/models.py:272
+#: apps/treasury/models.py:273
 msgid "special transaction proxy"
 msgstr "proxy de transacción especial"
 
-#: apps/treasury/models.py:273
+#: apps/treasury/models.py:274
 msgid "special transaction proxies"
 msgstr "proxys de transacciones especiales"
 
-#: apps/treasury/models.py:299
+#: apps/treasury/models.py:300
 msgid "credit transaction"
 msgstr "transacción de crédito"
 
@@ -2310,16 +2298,16 @@ msgstr ""
 "afiliaciones. Por favor pídelo acreditar su note antes de invalidar este "
 "crédito."
 
-#: apps/treasury/models.py:453
+#: apps/treasury/models.py:452
 #: apps/treasury/templates/treasury/sogecredit_detail.html:10
 msgid "Credit from the Société générale"
 msgstr "Crédito de la Société Générale"
 
-#: apps/treasury/models.py:454
+#: apps/treasury/models.py:453
 msgid "Credits from the Société générale"
 msgstr "Créditos de la Société Générale"
 
-#: apps/treasury/models.py:457
+#: apps/treasury/models.py:456
 #, python-brace-format
 msgid "Soge credit for {user}"
 msgstr "Crédito de la Société Générale para {user}"
@@ -2574,7 +2562,7 @@ msgstr ""
 "El usuario seleccionado no ha sido validado. Validar esta cuenta primero"
 
 #: apps/wei/forms/registration.py:59 apps/wei/models.py:126
-#: apps/wei/models.py:323
+#: apps/wei/models.py:326
 msgid "bus"
 msgstr "bus"
 
@@ -2699,40 +2687,48 @@ msgstr "No binari@"
 msgid "gender"
 msgstr "género"
 
-#: apps/wei/models.py:213 apps/wei/templates/wei/weimembership_form.html:58
+#: apps/wei/models.py:212
+msgid "Unisex"
+msgstr "Unisex"
+
+#: apps/wei/models.py:215 apps/wei/templates/wei/weimembership_form.html:58
 msgid "clothing cut"
 msgstr "forma de ropa"
 
-#: apps/wei/models.py:226 apps/wei/templates/wei/weimembership_form.html:61
+#: apps/wei/models.py:228 apps/wei/templates/wei/weimembership_form.html:61
 msgid "clothing size"
 msgstr "medida de ropa"
 
-#: apps/wei/models.py:232 apps/wei/templates/wei/attribute_bus_1A.html:28
+#: apps/wei/models.py:234 apps/wei/templates/wei/attribute_bus_1A.html:28
 #: apps/wei/templates/wei/weimembership_form.html:67
 msgid "health issues"
 msgstr "problemas de salud"
 
-#: apps/wei/models.py:237 apps/wei/templates/wei/weimembership_form.html:70
+#: apps/wei/models.py:239 apps/wei/templates/wei/weimembership_form.html:70
 msgid "emergency contact name"
 msgstr "nombre del contacto de emergencia"
 
-#: apps/wei/models.py:242 apps/wei/templates/wei/weimembership_form.html:73
+#: apps/wei/models.py:240
+msgid "The emergency contact must not be a WEI participant"
+msgstr "El contacto de emergencia no debe ser un participante de WEI"
+
+#: apps/wei/models.py:245 apps/wei/templates/wei/weimembership_form.html:73
 msgid "emergency contact phone"
 msgstr "teléfono del contacto de emergencia"
 
-#: apps/wei/models.py:247 apps/wei/templates/wei/weimembership_form.html:52
+#: apps/wei/models.py:250 apps/wei/templates/wei/weimembership_form.html:52
 msgid "first year"
 msgstr "primer año"
 
-#: apps/wei/models.py:248
+#: apps/wei/models.py:251
 msgid "Tells if the user is new in the school."
 msgstr "Indica si el usuario es nuevo en la escuela."
 
-#: apps/wei/models.py:253
+#: apps/wei/models.py:256
 msgid "registration information"
 msgstr "informaciones sobre la afiliación"
 
-#: apps/wei/models.py:254
+#: apps/wei/models.py:257
 msgid ""
 "Information about the registration (buses for old members, survey for the "
 "new members), encoded in JSON"
@@ -2740,27 +2736,27 @@ msgstr ""
 "Informaciones sobre la afiliacion (bus para miembros ancianos, cuestionario "
 "para los nuevos miembros), registrado en JSON"
 
-#: apps/wei/models.py:312
+#: apps/wei/models.py:315
 msgid "WEI User"
 msgstr "Participante WEI"
 
-#: apps/wei/models.py:313
+#: apps/wei/models.py:316
 msgid "WEI Users"
 msgstr "Participantes WEI"
 
-#: apps/wei/models.py:333
+#: apps/wei/models.py:336
 msgid "team"
 msgstr "equipo"
 
-#: apps/wei/models.py:343
+#: apps/wei/models.py:346
 msgid "WEI registration"
 msgstr "Apuntación al WEI"
 
-#: apps/wei/models.py:347
+#: apps/wei/models.py:350
 msgid "WEI membership"
 msgstr "Afiliación al WEI"
 
-#: apps/wei/models.py:348
+#: apps/wei/models.py:351
 msgid "WEI memberships"
 msgstr "Afiliaciones al WEI"
 
@@ -3541,6 +3537,21 @@ msgstr ""
 "pagar su afiliación. Tambien tiene que validar su correo electronico con el "
 "enlace que recibió."
 
+#~ msgid ""
+#~ "I declare that I opened or I will open soon a bank account in the Société "
+#~ "générale with the BDE partnership."
+#~ msgstr ""
+#~ "Declaro que ya abrió una cuenta a la Société Générale en colaboración con "
+#~ "el BDE."
+
+#~ msgid ""
+#~ "Warning: this engages you to open your bank account. If you finally "
+#~ "decides to don't open your account, you will have to pay the BDE "
+#~ "membership."
+#~ msgstr ""
+#~ "Cuidado : esto le obliga abrir su cuenta bancaria. Si cambia de idea y no "
+#~ "abre su cuenta bancaria, tendrá que pagar su afiliación al BDE."
+
 #~ msgid "You are not a Kfet member, so you can't use your note account."
 #~ msgstr "Usted no es un miembro de la Kfet, no puede usar su cuenta note."
 
diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po
index fae66a1408f12e0385c50b4749e3859ca3f5c01d..eabfc3fb7ef43593d534713923d78c85eb5bc089 100644
--- a/locale/fr/LC_MESSAGES/django.po
+++ b/locale/fr/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-03-31 17:08+0200\n"
+"POT-Creation-Date: 2023-07-09 14:46+0200\n"
 "PO-Revision-Date: 2022-04-11 22:05+0200\n"
 "Last-Translator: bleizi <bleizi@crans.org>\n"
 "Language-Team: French <http://translate.ynerant.fr/projects/nk20/nk20/fr/>\n"
@@ -115,7 +115,7 @@ msgid "type"
 msgstr "type"
 
 #: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:307
-#: apps/note/models/notes.py:148 apps/treasury/models.py:286
+#: apps/note/models/notes.py:148 apps/treasury/models.py:287
 #: apps/wei/models.py:173 apps/wei/templates/wei/attribute_bus_1A.html:13
 #: apps/wei/templates/wei/survey.html:15
 msgid "user"
@@ -258,19 +258,19 @@ msgstr "Entré le "
 msgid "remove"
 msgstr "supprimer"
 
-#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:200
+#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:201
 msgid "Type"
 msgstr "Type"
 
 #: apps/activity/tables.py:84 apps/member/forms.py:186
-#: apps/registration/forms.py:91 apps/treasury/forms.py:131
+#: apps/registration/forms.py:92 apps/treasury/forms.py:131
 #: apps/wei/forms/registration.py:104
 msgid "Last name"
 msgstr "Nom de famille"
 
 #: apps/activity/tables.py:86 apps/member/forms.py:191
 #: apps/note/templates/note/transaction_form.html:138
-#: apps/registration/forms.py:96 apps/treasury/forms.py:133
+#: apps/registration/forms.py:97 apps/treasury/forms.py:133
 #: apps/wei/forms/registration.py:109
 msgid "First name"
 msgstr "Prénom"
@@ -548,24 +548,24 @@ msgid "This image cannot be loaded."
 msgstr "Cette image ne peut pas être chargée."
 
 #: apps/member/forms.py:141 apps/member/views.py:103
-#: apps/registration/forms.py:33 apps/registration/views.py:262
+#: apps/registration/forms.py:34 apps/registration/views.py:266
 msgid "An alias with a similar name already exists."
 msgstr "Un alias avec un nom similaire existe déjà."
 
-#: apps/member/forms.py:165 apps/registration/forms.py:71
+#: apps/member/forms.py:165
 msgid "Inscription paid by Société Générale"
 msgstr "Inscription payée par la Société générale"
 
-#: apps/member/forms.py:167 apps/registration/forms.py:73
+#: apps/member/forms.py:167
 msgid "Check this case if the Société Générale paid the inscription."
 msgstr "Cochez cette case si la Société Générale a payé l'inscription."
 
-#: apps/member/forms.py:172 apps/registration/forms.py:78
+#: apps/member/forms.py:172 apps/registration/forms.py:79
 #: apps/wei/forms/registration.py:91
 msgid "Credit type"
 msgstr "Type de rechargement"
 
-#: apps/member/forms.py:173 apps/registration/forms.py:79
+#: apps/member/forms.py:173 apps/registration/forms.py:80
 #: apps/wei/forms/registration.py:92
 msgid "No credit"
 msgstr "Pas de rechargement"
@@ -574,13 +574,13 @@ msgstr "Pas de rechargement"
 msgid "You can credit the note of the user."
 msgstr "Vous pouvez créditer la note de l'utilisateur avant l'adhésion."
 
-#: apps/member/forms.py:179 apps/registration/forms.py:84
+#: apps/member/forms.py:179 apps/registration/forms.py:85
 #: apps/wei/forms/registration.py:97
 msgid "Credit amount"
 msgstr "Montant à créditer"
 
 #: apps/member/forms.py:196 apps/note/templates/note/transaction_form.html:144
-#: apps/registration/forms.py:101 apps/treasury/forms.py:135
+#: apps/registration/forms.py:102 apps/treasury/forms.py:135
 #: apps/wei/forms/registration.py:114
 msgid "Bank"
 msgstr "Banque"
@@ -1183,7 +1183,7 @@ msgstr "Sauvegarder les changements"
 msgid "Registrations"
 msgstr "Inscriptions"
 
-#: apps/member/views.py:73 apps/registration/forms.py:23
+#: apps/member/views.py:73 apps/registration/forms.py:24
 msgid "This address must be valid."
 msgstr "Cette adresse doit être valide."
 
@@ -1239,11 +1239,11 @@ msgstr "L'adhésion doit commencer après le {:%d/%m/%Y}."
 msgid "The membership must begin before {:%m-%d-%Y}."
 msgstr "L'adhésion doit commencer avant le {:%d/%m/%Y}."
 
-#: apps/member/views.py:876
+#: apps/member/views.py:880
 msgid "Manage roles of an user in the club"
 msgstr "Gérer les rôles d'un utilisateur dans le club"
 
-#: apps/member/views.py:901
+#: apps/member/views.py:905
 msgid "Members of the club"
 msgstr "Membres du club"
 
@@ -1563,7 +1563,7 @@ msgstr "Transactions de crédit/retrait"
 msgid "membership transaction"
 msgstr "transaction d'adhésion"
 
-#: apps/note/models/transactions.py:385 apps/treasury/models.py:293
+#: apps/note/models/transactions.py:385 apps/treasury/models.py:294
 msgid "membership transactions"
 msgstr "transactions d'adhésion"
 
@@ -1682,7 +1682,7 @@ msgid "Amount"
 msgstr "Montant"
 
 #: apps/note/templates/note/transaction_form.html:132
-#: apps/treasury/models.py:55
+#: apps/treasury/models.py:56
 msgid "Name"
 msgstr "Nom"
 
@@ -1972,31 +1972,15 @@ msgstr "Tous les droits"
 msgid "registration"
 msgstr "inscription"
 
-#: apps/registration/forms.py:39
+#: apps/registration/forms.py:40
 msgid "This email address is already used."
 msgstr "Cet email est déjà pris."
 
-#: apps/registration/forms.py:49
-msgid ""
-"I declare that I opened or I will open soon a bank account in the Société "
-"générale with the BDE partnership."
-msgstr ""
-"Je déclare avoir ouvert ou ouvrir prochainement un compte à la société "
-"générale avec le partenariat du BDE."
-
-#: apps/registration/forms.py:51
-msgid ""
-"Warning: this engages you to open your bank account. If you finally decides "
-"to don't open your account, you will have to pay the BDE membership."
-msgstr ""
-"Attention : cocher cette case vous engage à ouvrir votre compte. Si vous "
-"décidez de ne pas le faire, vous devrez payer l'adhésion au BDE."
-
-#: apps/registration/forms.py:59
+#: apps/registration/forms.py:60
 msgid "Register to the WEI"
 msgstr "S'inscrire au WEI"
 
-#: apps/registration/forms.py:61
+#: apps/registration/forms.py:62
 msgid ""
 "Check this case if you want to register to the WEI. If you hesitate, you "
 "will be able to register later, after validating your account in the Kfet."
@@ -2005,14 +1989,18 @@ msgstr ""
 "pourrez toujours vous inscrire plus tard, après avoir validé votre compte à "
 "la Kfet."
 
-#: apps/registration/forms.py:106
+#: apps/registration/forms.py:107
 msgid "Join BDE Club"
 msgstr "Adhérer au club BDE"
 
-#: apps/registration/forms.py:113
+#: apps/registration/forms.py:114
 msgid "Join Kfet Club"
 msgstr "Adhérer au club Kfet"
 
+#: apps/registration/forms.py:123
+msgid "Join BDA Club"
+msgstr "Adhérer au club BDA"
+
 #: apps/registration/templates/registration/email_validation_complete.html:15
 msgid "Your email have successfully been validated."
 msgstr "Votre adresse e-mail a bien été validée."
@@ -2061,12 +2049,12 @@ msgstr "Supprimer l'inscription"
 msgid "Validate account"
 msgstr "Valider le compte"
 
-#: apps/registration/templates/registration/future_profile_detail.html:62
+#: apps/registration/templates/registration/future_profile_detail.html:63
 msgid ""
 "The user declared that he/she opened a bank account in the Société générale."
 msgstr "L'utilisateur a déclaré avoir ouvert un compte à la société générale."
 
-#: apps/registration/templates/registration/future_profile_detail.html:71
+#: apps/registration/templates/registration/future_profile_detail.html:73
 #: apps/wei/templates/wei/weimembership_form.html:127
 #: apps/wei/templates/wei/weimembership_form.html:186
 msgid "Validate registration"
@@ -2116,54 +2104,54 @@ msgstr "Merci"
 msgid "The Note Kfet team."
 msgstr "L'équipe de la Note Kfet."
 
-#: apps/registration/views.py:40
+#: apps/registration/views.py:41
 msgid "Register new user"
 msgstr "Enregistrer un nouvel utilisateur"
 
-#: apps/registration/views.py:98
+#: apps/registration/views.py:99
 msgid "Email validation"
 msgstr "Validation de l'adresse mail"
 
-#: apps/registration/views.py:100
+#: apps/registration/views.py:101
 msgid "Validate email"
 msgstr "Valider l'adresse e-mail"
 
-#: apps/registration/views.py:144
+#: apps/registration/views.py:145
 msgid "Email validation unsuccessful"
 msgstr "La validation de l'adresse mail a échoué"
 
-#: apps/registration/views.py:155
+#: apps/registration/views.py:156
 msgid "Email validation email sent"
 msgstr "L'email de vérification de l'adresse email a bien été envoyé"
 
-#: apps/registration/views.py:163
+#: apps/registration/views.py:164
 msgid "Resend email validation link"
 msgstr "Renvoyer le lien de validation"
 
-#: apps/registration/views.py:181
+#: apps/registration/views.py:182
 msgid "Pre-registered users list"
 msgstr "Liste des utilisateurs en attente d'inscription"
 
-#: apps/registration/views.py:205
+#: apps/registration/views.py:206
 msgid "Unregistered users"
 msgstr "Utilisateurs en attente d'inscription"
 
-#: apps/registration/views.py:218
+#: apps/registration/views.py:219
 msgid "Registration detail"
 msgstr "Détails de l'inscription"
 
-#: apps/registration/views.py:282
+#: apps/registration/views.py:293
 msgid "You must join the BDE."
 msgstr "Vous devez adhérer au BDE."
 
-#: apps/registration/views.py:306
+#: apps/registration/views.py:323
 msgid ""
 "The entered amount is not enough for the memberships, should be at least {}"
 msgstr ""
 "Le montant crédité est trop faible pour adhérer, il doit être au minimum de "
 "{}"
 
-#: apps/registration/views.py:387
+#: apps/registration/views.py:417
 msgid "Invalidate pre-registration"
 msgstr "Invalider l'inscription"
 
@@ -2171,7 +2159,7 @@ msgstr "Invalider l'inscription"
 msgid "Treasury"
 msgstr "Trésorerie"
 
-#: apps/treasury/forms.py:26 apps/treasury/models.py:94
+#: apps/treasury/forms.py:26 apps/treasury/models.py:95
 #: apps/treasury/templates/treasury/invoice_form.html:22
 msgid "This invoice is locked and can no longer be edited."
 msgstr "Cette facture est verrouillée et ne peut plus être éditée."
@@ -2184,7 +2172,7 @@ msgstr "La remise est déjà fermée."
 msgid "You can't change the type of the remittance."
 msgstr "Vous ne pouvez pas changer le type de la remise."
 
-#: apps/treasury/forms.py:125 apps/treasury/models.py:268
+#: apps/treasury/forms.py:125 apps/treasury/models.py:269
 #: apps/treasury/tables.py:97 apps/treasury/tables.py:105
 #: apps/treasury/templates/treasury/invoice_list.html:16
 #: apps/treasury/templates/treasury/remittance_list.html:16
@@ -2200,112 +2188,112 @@ msgstr "Pas de remise associée"
 msgid "Invoice identifier"
 msgstr "Numéro de facture"
 
-#: apps/treasury/models.py:41
+#: apps/treasury/models.py:42
 msgid "BDE"
 msgstr "BDE"
 
-#: apps/treasury/models.py:46
+#: apps/treasury/models.py:47
 msgid "Object"
 msgstr "Objet"
 
-#: apps/treasury/models.py:50
+#: apps/treasury/models.py:51
 msgid "Description"
 msgstr "Description"
 
-#: apps/treasury/models.py:59
+#: apps/treasury/models.py:60
 msgid "Address"
 msgstr "Adresse"
 
-#: apps/treasury/models.py:64 apps/treasury/models.py:194
+#: apps/treasury/models.py:65 apps/treasury/models.py:195
 msgid "Date"
 msgstr "Date"
 
-#: apps/treasury/models.py:68
+#: apps/treasury/models.py:69
 msgid "Acquitted"
 msgstr "Acquittée"
 
-#: apps/treasury/models.py:73
+#: apps/treasury/models.py:74
 msgid "Locked"
 msgstr "Verrouillée"
 
-#: apps/treasury/models.py:74
+#: apps/treasury/models.py:75
 msgid "An invoice can't be edited when it is locked."
 msgstr "Une facture ne peut plus être modifiée si elle est verrouillée."
 
-#: apps/treasury/models.py:80
+#: apps/treasury/models.py:81
 msgid "tex source"
 msgstr "fichier TeX source"
 
-#: apps/treasury/models.py:114 apps/treasury/models.py:130
+#: apps/treasury/models.py:115 apps/treasury/models.py:131
 msgid "invoice"
 msgstr "facture"
 
-#: apps/treasury/models.py:115
+#: apps/treasury/models.py:116
 msgid "invoices"
 msgstr "factures"
 
-#: apps/treasury/models.py:118
+#: apps/treasury/models.py:119
 #, python-brace-format
 msgid "Invoice #{id}"
 msgstr "Facture n°{id}"
 
-#: apps/treasury/models.py:135
+#: apps/treasury/models.py:136
 msgid "Designation"
 msgstr "Désignation"
 
-#: apps/treasury/models.py:141
+#: apps/treasury/models.py:142
 msgid "Quantity"
 msgstr "Quantité"
 
-#: apps/treasury/models.py:146
+#: apps/treasury/models.py:147
 msgid "Unit price"
 msgstr "Prix unitaire"
 
-#: apps/treasury/models.py:162
+#: apps/treasury/models.py:163
 msgid "product"
 msgstr "produit"
 
-#: apps/treasury/models.py:163
+#: apps/treasury/models.py:164
 msgid "products"
 msgstr "produits"
 
-#: apps/treasury/models.py:183
+#: apps/treasury/models.py:184
 msgid "remittance type"
 msgstr "type de remise"
 
-#: apps/treasury/models.py:184
+#: apps/treasury/models.py:185
 msgid "remittance types"
 msgstr "types de remises"
 
-#: apps/treasury/models.py:205
+#: apps/treasury/models.py:206
 msgid "Comment"
 msgstr "Commentaire"
 
-#: apps/treasury/models.py:210
+#: apps/treasury/models.py:211
 msgid "Closed"
 msgstr "Fermée"
 
-#: apps/treasury/models.py:214
+#: apps/treasury/models.py:215
 msgid "remittance"
 msgstr "remise"
 
-#: apps/treasury/models.py:215
+#: apps/treasury/models.py:216
 msgid "remittances"
 msgstr "remises"
 
-#: apps/treasury/models.py:248
+#: apps/treasury/models.py:249
 msgid "Remittance #{:d}: {}"
 msgstr "Remise n°{:d} : {}"
 
-#: apps/treasury/models.py:272
+#: apps/treasury/models.py:273
 msgid "special transaction proxy"
 msgstr "proxy de transaction spéciale"
 
-#: apps/treasury/models.py:273
+#: apps/treasury/models.py:274
 msgid "special transaction proxies"
 msgstr "proxys de transactions spéciales"
 
-#: apps/treasury/models.py:299
+#: apps/treasury/models.py:300
 msgid "credit transaction"
 msgstr "transaction de crédit"
 
@@ -2317,16 +2305,16 @@ msgstr ""
 "Cet utilisateur n'a pas assez d'argent pour payer les adhésions avec sa "
 "note. Merci de lui demander de recharger sa note avant d'invalider ce crédit."
 
-#: apps/treasury/models.py:453
+#: apps/treasury/models.py:452
 #: apps/treasury/templates/treasury/sogecredit_detail.html:10
 msgid "Credit from the Société générale"
 msgstr "Crédit de la Société générale"
 
-#: apps/treasury/models.py:454
+#: apps/treasury/models.py:453
 msgid "Credits from the Société générale"
 msgstr "Crédits de la Société générale"
 
-#: apps/treasury/models.py:457
+#: apps/treasury/models.py:456
 #, python-brace-format
 msgid "Soge credit for {user}"
 msgstr "Crédit de la société générale pour l'utilisateur {user}"
@@ -2586,7 +2574,7 @@ msgstr ""
 "compte"
 
 #: apps/wei/forms/registration.py:59 apps/wei/models.py:126
-#: apps/wei/models.py:323
+#: apps/wei/models.py:326
 msgid "bus"
 msgstr "bus"
 
@@ -2711,40 +2699,48 @@ msgstr "Non-binaire"
 msgid "gender"
 msgstr "genre"
 
-#: apps/wei/models.py:213 apps/wei/templates/wei/weimembership_form.html:58
+#: apps/wei/models.py:212
+msgid "Unisex"
+msgstr "Unisexe"
+
+#: apps/wei/models.py:215 apps/wei/templates/wei/weimembership_form.html:58
 msgid "clothing cut"
 msgstr "coupe de vêtement"
 
-#: apps/wei/models.py:226 apps/wei/templates/wei/weimembership_form.html:61
+#: apps/wei/models.py:228 apps/wei/templates/wei/weimembership_form.html:61
 msgid "clothing size"
 msgstr "taille de vêtement"
 
-#: apps/wei/models.py:232 apps/wei/templates/wei/attribute_bus_1A.html:28
+#: apps/wei/models.py:234 apps/wei/templates/wei/attribute_bus_1A.html:28
 #: apps/wei/templates/wei/weimembership_form.html:67
 msgid "health issues"
 msgstr "problèmes de santé"
 
-#: apps/wei/models.py:237 apps/wei/templates/wei/weimembership_form.html:70
+#: apps/wei/models.py:239 apps/wei/templates/wei/weimembership_form.html:70
 msgid "emergency contact name"
 msgstr "nom du contact en cas d'urgence"
 
-#: apps/wei/models.py:242 apps/wei/templates/wei/weimembership_form.html:73
+#: apps/wei/models.py:240
+msgid "The emergency contact must not be a WEI participant"
+msgstr "Le contact en cas d'urgence ne doit pas être une personne qui participe au WEI"
+
+#: apps/wei/models.py:245 apps/wei/templates/wei/weimembership_form.html:73
 msgid "emergency contact phone"
 msgstr "téléphone du contact en cas d'urgence"
 
-#: apps/wei/models.py:247 apps/wei/templates/wei/weimembership_form.html:52
+#: apps/wei/models.py:250 apps/wei/templates/wei/weimembership_form.html:52
 msgid "first year"
 msgstr "première année"
 
-#: apps/wei/models.py:248
+#: apps/wei/models.py:251
 msgid "Tells if the user is new in the school."
 msgstr "Indique si l'utilisateur est nouveau dans l'école."
 
-#: apps/wei/models.py:253
+#: apps/wei/models.py:256
 msgid "registration information"
 msgstr "informations sur l'inscription"
 
-#: apps/wei/models.py:254
+#: apps/wei/models.py:257
 msgid ""
 "Information about the registration (buses for old members, survey for the "
 "new members), encoded in JSON"
@@ -2752,27 +2748,27 @@ msgstr ""
 "Informations sur l'inscription (bus pour les 2A+, questionnaire pour les "
 "1A), encodées en JSON"
 
-#: apps/wei/models.py:312
+#: apps/wei/models.py:315
 msgid "WEI User"
 msgstr "Participant au WEI"
 
-#: apps/wei/models.py:313
+#: apps/wei/models.py:316
 msgid "WEI Users"
 msgstr "Participants au WEI"
 
-#: apps/wei/models.py:333
+#: apps/wei/models.py:336
 msgid "team"
 msgstr "équipe"
 
-#: apps/wei/models.py:343
+#: apps/wei/models.py:346
 msgid "WEI registration"
 msgstr "Inscription au WEI"
 
-#: apps/wei/models.py:347
+#: apps/wei/models.py:350
 msgid "WEI membership"
 msgstr "Adhésion au WEI"
 
-#: apps/wei/models.py:348
+#: apps/wei/models.py:351
 msgid "WEI memberships"
 msgstr "Adhésions au WEI"
 
@@ -3566,3 +3562,18 @@ msgstr ""
 "vous connecter. Vous devez vous rendre à la Kfet et payer les frais "
 "d'adhésion. Vous devez également valider votre adresse email en suivant le "
 "lien que vous avez reçu."
+
+#~ msgid ""
+#~ "I declare that I opened or I will open soon a bank account in the Société "
+#~ "générale with the BDE partnership."
+#~ msgstr ""
+#~ "Je déclare avoir ouvert ou ouvrir prochainement un compte à la société "
+#~ "générale avec le partenariat du BDE."
+
+#~ msgid ""
+#~ "Warning: this engages you to open your bank account. If you finally "
+#~ "decides to don't open your account, you will have to pay the BDE "
+#~ "membership."
+#~ msgstr ""
+#~ "Attention : cocher cette case vous engage à ouvrir votre compte. Si vous "
+#~ "décidez de ne pas le faire, vous devrez payer l'adhésion au BDE."