diff --git a/apps/member/forms.py b/apps/member/forms.py
index e567fbd5de9aaa3b080f60f82be5e4460bf2c4e7..6fe95f5a1bf37369dbd9ecdc41dc1d773bf62f89 100644
--- a/apps/member/forms.py
+++ b/apps/member/forms.py
@@ -50,6 +50,12 @@ class ClubForm(forms.ModelForm):
 
 
 class MembershipForm(forms.ModelForm):
+    soge = forms.BooleanField(
+        label=_("Inscription paid by Société Générale"),
+        required=False,
+        help_text=_("Check this case is the Société Générale paid the inscription."),
+    )
+
     credit_type = forms.ModelChoiceField(
         queryset=NoteSpecial.objects,
         label=_("Credit type"),
diff --git a/apps/member/views.py b/apps/member/views.py
index f9b761350a3f7bbe33b86aaf2e8eafddf6a17776..50c3b8132c13c418e151af833adee93777185bc9 100644
--- a/apps/member/views.py
+++ b/apps/member/views.py
@@ -18,14 +18,14 @@ from django.views.generic.edit import FormMixin
 from django_tables2.views import SingleTableView
 from rest_framework.authtoken.models import Token
 from note.forms import ImageForm
-from note.models import Alias, NoteUser
+from note.models import Alias, NoteUser, NoteSpecial
 from note.models.transactions import Transaction, SpecialTransaction
 from note.tables import HistoryTable, AliasTable
 from permission.backends import PermissionBackend
 from permission.views import ProtectQuerysetMixin
 
 from .forms import ProfileForm, ClubForm, MembershipForm, CustomAuthenticationForm
-from .models import Club, Membership
+from .models import Club, Membership, Role
 from .tables import ClubTable, UserTable, MembershipTable
 
 
@@ -355,6 +355,16 @@ class ClubAddMemberView(ProtectQuerysetMixin, LoginRequiredMixin, CreateView):
             club = Club.objects.filter(PermissionBackend.filter_queryset(self.request.user, Club, "view"))\
                 .get(pk=self.kwargs["club_pk"])
             form.fields['credit_amount'].initial = club.membership_fee_paid
+
+            if club.name != "BDE":
+                del form.fields['soge']
+            else:
+                fee = 0
+                bde = Club.objects.get(name="BDE")
+                fee += bde.membership_fee_paid
+                kfet = Club.objects.get(name="Kfet")
+                fee += kfet.membership_fee_paid
+                context["total_fee"] = "{:.02f}".format(fee / 100, )
         else:
             old_membership = self.get_queryset().get(pk=self.kwargs["pk"])
             club = old_membership.club
@@ -368,6 +378,16 @@ class ClubAddMemberView(ProtectQuerysetMixin, LoginRequiredMixin, CreateView):
             form.fields['last_name'].initial = user.last_name
             form.fields['first_name'].initial = user.first_name
 
+            if club.name != "BDE" or user.profile.soge:
+                del form.fields['soge']
+            else:
+                fee = 0
+                bde = Club.objects.get(name="BDE")
+                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
+                context["total_fee"] = "{:.02f}".format(fee / 100, )
+
         context['club'] = club
 
         return context
@@ -389,6 +409,18 @@ class ClubAddMemberView(ProtectQuerysetMixin, LoginRequiredMixin, CreateView):
         last_name = form.cleaned_data["last_name"]
         first_name = form.cleaned_data["first_name"]
         bank = form.cleaned_data["bank"]
+        soge = form.cleaned_data["soge"] and not user.profile.soge and club.name == "BDE"
+
+        if soge:
+            credit_type = NoteSpecial.objects.get(special_type="Virement bancaire")
+            bde = club
+            kfet = Club.objects.get(name="Kfet")
+            if user.profile.paid:
+                fee = bde.membership_fee_paid + kfet.membership_fee_paid
+            else:
+                fee = bde.membership_fee_unpaid + kfet.membership_fee_unpaid
+            credit_amount = fee
+            bank = "Société générale"
 
         if credit_type is None:
             credit_amount = 0
@@ -456,6 +488,33 @@ class ClubAddMemberView(ProtectQuerysetMixin, LoginRequiredMixin, CreateView):
                 valid=True,
             )
 
+        if soge:
+            user.profile.soge = True
+            user.profile.save()
+
+            kfet = Club.objects.get(name="Kfet")
+            kfet_fee = kfet.membership_fee_paid if user.profile.paid else kfet.membership_fee_unpaid
+
+            old_membership = Membership.objects.filter(
+                club__name="Kfet",
+                user=user,
+                date_start__lte=datetime.today(),
+                date_end__gte=datetime.today(),
+            )
+
+            membership = Membership.objects.create(
+                club=kfet,
+                user=user,
+                fee=kfet_fee,
+                date_start=old_membership.get().date_end + timedelta(days=1)
+                if old_membership.exists() else form.instance.date_start,
+            )
+            if old_membership.exists():
+                membership.roles.set(old_membership.get().roles.all())
+            else:
+                membership.roles.add(Role.objects.get(name="Adhérent Kfet"))
+            membership.save()
+
         return super().form_valid(form)
 
     def get_success_url(self):
diff --git a/templates/member/add_members.html b/templates/member/add_members.html
index f9b2276d69b14de766fdf1d64ca5c83102aaca46..ad6f1f297a77ec7e2d58e401405fd0414f4a61ce 100644
--- a/templates/member/add_members.html
+++ b/templates/member/add_members.html
@@ -16,14 +16,40 @@
 {% endblock %}
 
 {% block extrajavascript %}
-<script>
-    function autocompleted(user) {
-        $("#id_last_name").val(user.last_name);
-        $("#id_first_name").val(user.first_name);
-        $.getJSON("/api/members/profile/" + user.id + "/", function(profile) {
-            let fee = profile.paid ? {{ club.membership_fee_paid }} : {{ club.membership_fee_unpaid }};
-            $("#id_credit_amount").val((fee / 100).toFixed(2));
-        });
-    }
-</script>
+    <script>
+        function autocompleted(user) {
+            $("#id_last_name").val(user.last_name);
+            $("#id_first_name").val(user.first_name);
+            $.getJSON("/api/members/profile/" + user.id + "/", function(profile) {
+                let fee = profile.paid ? {{ club.membership_fee_paid }} : {{ club.membership_fee_unpaid }};
+                $("#id_credit_amount").val((fee / 100).toFixed(2));
+            });
+        }
+
+        soge_field = $("#id_soge");
+
+        function fillFields() {
+            let checked = soge_field.is(':checked');
+            if (!checked) {
+                $("input").attr('disabled', false);
+                $("#id_user").attr('disabled', true);
+                $("select").attr('disabled', false);
+                return;
+            }
+
+            let credit_type = $("#id_credit_type");
+            credit_type.attr('disabled', true);
+            credit_type.val(4);
+
+            let credit_amount = $("#id_credit_amount");
+            credit_amount.attr('disabled', true);
+            credit_amount.val('{{ total_fee }}');
+
+            let bank = $("#id_bank");
+            bank.attr('disabled', true);
+            bank.val('Société générale');
+        }
+
+        soge_field.change(fillFields);
+    </script>
 {% endblock %}