From a7bdffd71a7a678778355a0834c9ee2830606719 Mon Sep 17 00:00:00 2001
From: Yohann D'ANELLO <ynerant@crans.org>
Date: Sun, 29 Aug 2021 14:10:52 +0200
Subject: [PATCH] [WEI] Change color of validation button of WEI registrations

Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
---
 apps/wei/models.py              |  27 ++
 apps/wei/tables.py              |  32 +-
 apps/wei/views.py               |  15 +-
 locale/de/LC_MESSAGES/django.po | 527 +++++++++++++++++---------------
 locale/es/LC_MESSAGES/django.po | 527 +++++++++++++++++---------------
 locale/fr/LC_MESSAGES/django.po |  84 ++---
 6 files changed, 646 insertions(+), 566 deletions(-)

diff --git a/apps/wei/models.py b/apps/wei/models.py
index 1788019c..b59a0dfd 100644
--- a/apps/wei/models.py
+++ b/apps/wei/models.py
@@ -262,6 +262,33 @@ class WEIRegistration(models.Model):
         """
         self.information_json = json.dumps(information, indent=2)
 
+    @property
+    def fee(self):
+        bde = Club.objects.get(pk=1)
+        kfet = Club.objects.get(pk=2)
+
+        kfet_member = Membership.objects.filter(
+            club_id=kfet.id,
+            user=self.user,
+            date_start__gte=kfet.membership_start,
+        ).exists()
+        bde_member = Membership.objects.filter(
+            club_id=bde.id,
+            user=self.user,
+            date_start__gte=bde.membership_start,
+        ).exists()
+
+        fee = self.wei.membership_fee_paid if self.user.profile.paid \
+            else self.wei.membership_fee_unpaid
+        if not kfet_member:
+            fee += kfet.membership_fee_paid if self.user.profile.paid \
+                else kfet.membership_fee_unpaid
+        if not bde_member:
+            fee += bde.membership_fee_paid if self.user.profile.paid \
+                else bde.membership_fee_unpaid
+
+        return fee
+
     @property
     def is_validated(self):
         try:
diff --git a/apps/wei/tables.py b/apps/wei/tables.py
index a8f1e869..274e8dbd 100644
--- a/apps/wei/tables.py
+++ b/apps/wei/tables.py
@@ -43,6 +43,7 @@ class WEIRegistrationTable(tables.Table):
 
     edit = tables.LinkColumn(
         'wei:wei_update_registration',
+        orderable=False,
         args=[A('pk')],
         verbose_name=_("Edit"),
         text=_("Edit"),
@@ -53,18 +54,14 @@ class WEIRegistrationTable(tables.Table):
             }
         }
     )
-    validate = tables.LinkColumn(
-        'wei:validate_registration',
-        args=[A('pk')],
+
+    validate = tables.Column(
         verbose_name=_("Validate"),
-        text=_("Validate"),
+        orderable=False,
+        accessor=A('pk'),
         attrs={
             'th': {
                 'id': 'validate-membership-header'
-            },
-            'a': {
-                'class': 'btn btn-success',
-                'data-type': 'validate-membership'
             }
         }
     )
@@ -72,6 +69,7 @@ class WEIRegistrationTable(tables.Table):
     delete = tables.LinkColumn(
         'wei:wei_delete_registration',
         args=[A('pk')],
+        orderable=False,
         verbose_name=_("delete"),
         text=_("Delete"),
         attrs={
@@ -96,7 +94,20 @@ class WEIRegistrationTable(tables.Table):
                 registration=record,
             )
         )
-        return _("Validate") if hasperm else format_html("<span class='no-perm'></span>")
+        if not hasperm:
+            return format_html("<span class='no-perm'></span>")
+
+        url = reverse_lazy('wei:validate_registration', args=(record.pk,))
+        text = _('Validate')
+        if record.fee > record.user.note.balance:
+            btn_class = 'btn-secondary'
+            tooltip = _("The user does not have enough money.")
+        else:
+            btn_class = 'btn-success'
+            tooltip = _("The user has enough money, you can validate the registration.")
+
+        return format_html(f"<a class=\"btn {btn_class}\" data-type='validate-membership' data-toggle=\"tooltip\" "
+                           f"title=\"{tooltip}\" href=\"{url}\">{text}</a>")
 
     def render_delete(self, record):
         hasperm = PermissionBackend.check_perm(get_current_authenticated_user(), "wei.delete_weimembership", record)
@@ -108,7 +119,8 @@ class WEIRegistrationTable(tables.Table):
         }
         model = WEIRegistration
         template_name = 'django_tables2/bootstrap4.html'
-        fields = ('user', 'user__first_name', 'user__last_name', 'first_year', 'caution_check',)
+        fields = ('user', 'user__first_name', 'user__last_name', 'first_year', 'caution_check',
+                  'edit', 'validate', 'delete',)
         row_attrs = {
             'class': 'table-row',
             'id': lambda record: "row-" + str(record.pk),
diff --git a/apps/wei/views.py b/apps/wei/views.py
index bb8fec68..c72d41e4 100644
--- a/apps/wei/views.py
+++ b/apps/wei/views.py
@@ -818,22 +818,13 @@ class WEIValidateRegistrationView(ProtectQuerysetMixin, ProtectedCreateView):
             date_start__gte=bde.membership_start,
         ).exists()
 
-        fee = registration.wei.membership_fee_paid if registration.user.profile.paid \
-            else registration.wei.membership_fee_unpaid
-        if not context["kfet_member"]:
-            fee += kfet.membership_fee_paid if registration.user.profile.paid \
-                else kfet.membership_fee_unpaid
-        if not context["bde_member"]:
-            fee += bde.membership_fee_paid if registration.user.profile.paid \
-                else bde.membership_fee_unpaid
-
-        context["fee"] = fee
+        context["fee"] = registration.fee
 
         form = context["form"]
         if registration.soge_credit:
-            form.fields["credit_amount"].initial = fee
+            form.fields["credit_amount"].initial = registration.fee
         else:
-            form.fields["credit_amount"].initial = max(0, fee - registration.user.note.balance)
+            form.fields["credit_amount"].initial = max(0, registration.fee - registration.user.note.balance)
 
         return context
 
diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po
index 06793328..46d60dc6 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: 2020-11-15 23:26+0100\n"
+"POT-Creation-Date: 2021-08-29 14:06+0200\n"
 "PO-Revision-Date: 2020-11-16 20:02+0000\n"
 "Last-Translator: Yohann D'ANELLO <ynerant@crans.org>\n"
 "Language-Team: German <http://translate.ynerant.fr/projects/nk20/nk20/de/>\n"
@@ -52,11 +52,11 @@ msgstr "Sie dürfen höchstens 3 Leute zu dieser Veranstaltung einladen."
 #: apps/member/models.py:199
 #: apps/member/templates/member/includes/club_info.html:4
 #: apps/member/templates/member/includes/profile_info.html:4
-#: apps/note/models/notes.py:232 apps/note/models/transactions.py:26
-#: apps/note/models/transactions.py:46 apps/note/models/transactions.py:300
-#: apps/permission/models.py:333
+#: apps/note/models/notes.py:231 apps/note/models/transactions.py:26
+#: apps/note/models/transactions.py:46 apps/note/models/transactions.py:301
+#: apps/permission/models.py:330
 #: apps/registration/templates/registration/future_profile_detail.html:16
-#: apps/wei/models.py:66 apps/wei/models.py:118
+#: apps/wei/models.py:66 apps/wei/models.py:123
 #: apps/wei/templates/wei/base.html:26
 #: apps/wei/templates/wei/weimembership_form.html:14
 msgid "name"
@@ -90,8 +90,8 @@ msgstr "Vearnstaltungarte"
 
 #: apps/activity/models.py:68
 #: apps/activity/templates/activity/includes/activity_info.html:19
-#: apps/note/models/transactions.py:81 apps/permission/models.py:113
-#: apps/permission/models.py:192 apps/wei/models.py:72 apps/wei/models.py:129
+#: apps/note/models/transactions.py:81 apps/permission/models.py:110
+#: apps/permission/models.py:189 apps/wei/models.py:77 apps/wei/models.py:134
 msgid "description"
 msgstr "Beschreibung"
 
@@ -105,15 +105,14 @@ msgstr "Wo findet die Veranstaltung statt ? (z.B Kfet)."
 
 #: apps/activity/models.py:83
 #: apps/activity/templates/activity/includes/activity_info.html:22
-#: apps/note/models/notes.py:208 apps/note/models/transactions.py:66
-#: apps/permission/models.py:167
+#: apps/note/models/notes.py:207 apps/note/models/transactions.py:66
+#: apps/permission/models.py:164
 msgid "type"
 msgstr "Type"
 
 #: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:305
-#: apps/note/models/notes.py:149 apps/treasury/models.py:278
-#: apps/treasury/templates/treasury/sogecredit_detail.html:14
-#: apps/wei/models.py:160 apps/wei/templates/wei/survey.html:15
+#: apps/note/models/notes.py:148 apps/treasury/models.py:283
+#: apps/wei/models.py:165 apps/wei/templates/wei/survey.html:15
 msgid "user"
 msgstr "User"
 
@@ -167,7 +166,7 @@ msgid "entry time"
 msgstr "Eintrittzeit"
 
 #: apps/activity/models.py:178 apps/note/apps.py:14
-#: apps/note/models/notes.py:78
+#: apps/note/models/notes.py:77
 msgid "note"
 msgstr "Note"
 
@@ -204,12 +203,14 @@ msgid "The balance is negative."
 msgstr "Kontostand ist im Rot."
 
 #: apps/activity/models.py:240
+#: apps/treasury/templates/treasury/sogecredit_detail.html:14
 msgid "last name"
 msgstr "Nachname"
 
 #: apps/activity/models.py:245
 #: apps/member/templates/member/includes/profile_info.html:4
 #: apps/registration/templates/registration/future_profile_detail.html:16
+#: apps/treasury/templates/treasury/sogecredit_detail.html:17
 #: apps/wei/templates/wei/weimembership_form.html:14
 msgid "first name"
 msgstr "Vorname"
@@ -250,7 +251,7 @@ msgstr "Eingetreten um "
 msgid "remove"
 msgstr "entfernen"
 
-#: apps/activity/tables.py:80 apps/note/forms.py:68 apps/treasury/models.py:193
+#: apps/activity/tables.py:80 apps/note/forms.py:68 apps/treasury/models.py:197
 msgid "Type"
 msgstr "Type"
 
@@ -267,11 +268,11 @@ msgstr "Nachname"
 msgid "First name"
 msgstr "Vorname"
 
-#: apps/activity/tables.py:86 apps/note/models/notes.py:87
+#: apps/activity/tables.py:86 apps/note/models/notes.py:86
 msgid "Note"
 msgstr "Note"
 
-#: apps/activity/tables.py:88 apps/member/tables.py:46
+#: apps/activity/tables.py:88 apps/member/tables.py:49
 msgid "Balance"
 msgstr "Kontostand"
 
@@ -286,7 +287,7 @@ msgid "Guest deleted"
 msgstr "Gastliste"
 
 #: apps/activity/templates/activity/activity_entry.html:14
-#: apps/note/models/transactions.py:256
+#: apps/note/models/transactions.py:257
 #: apps/note/templates/note/transaction_form.html:16
 #: apps/note/templates/note/transaction_form.html:148
 #: note_kfet/templates/base.html:73
@@ -294,13 +295,13 @@ msgid "Transfer"
 msgstr "Ãœberweisen"
 
 #: apps/activity/templates/activity/activity_entry.html:18
-#: apps/note/models/transactions.py:316
+#: apps/note/models/transactions.py:317
 #: apps/note/templates/note/transaction_form.html:21
 msgid "Credit"
 msgstr "Kredit"
 
 #: apps/activity/templates/activity/activity_entry.html:21
-#: apps/note/models/transactions.py:316
+#: apps/note/models/transactions.py:317
 #: apps/note/templates/note/transaction_form.html:25
 msgid "Debit"
 msgstr "Soll"
@@ -439,7 +440,7 @@ msgstr "Logs"
 msgid "IP Address"
 msgstr "IP Adresse"
 
-#: apps/logs/models.py:36 apps/permission/models.py:137
+#: apps/logs/models.py:36 apps/permission/models.py:134
 msgid "model"
 msgstr "Model"
 
@@ -460,8 +461,8 @@ msgid "create"
 msgstr "schaffen"
 
 #: apps/logs/models.py:65 apps/note/tables.py:165 apps/note/tables.py:201
-#: apps/permission/models.py:130 apps/treasury/tables.py:38
-#: apps/wei/tables.py:75
+#: apps/permission/models.py:127 apps/treasury/tables.py:38
+#: apps/wei/tables.py:73
 msgid "delete"
 msgstr "entfernen"
 
@@ -500,15 +501,15 @@ msgstr "Mitgliedschaftpreis (bezahlte Studenten)"
 msgid "membership fee (unpaid students)"
 msgstr "Mitgliedschaftpreis (unbezahlte Studenten)"
 
-#: apps/member/admin.py:65 apps/member/models.py:316
+#: apps/member/admin.py:65 apps/member/models.py:317
 msgid "roles"
 msgstr "Rollen"
 
-#: apps/member/admin.py:66 apps/member/models.py:330
+#: apps/member/admin.py:66 apps/member/models.py:331
 msgid "fee"
 msgstr "Preis"
 
-#: apps/member/apps.py:14 apps/wei/tables.py:181 apps/wei/tables.py:212
+#: apps/member/apps.py:14 apps/wei/tables.py:193 apps/wei/tables.py:224
 msgid "member"
 msgstr "Mitglied"
 
@@ -540,8 +541,8 @@ msgstr "Maximal Größe: 2MB"
 msgid "This image cannot be loaded."
 msgstr "Dieses Bild kann nicht geladen werden."
 
-#: apps/member/forms.py:141 apps/member/views.py:100
-#: apps/registration/forms.py:33 apps/registration/views.py:254
+#: apps/member/forms.py:141 apps/member/views.py:101
+#: apps/registration/forms.py:33 apps/registration/views.py:258
 msgid "An alias with a similar name already exists."
 msgstr "Ein ähnliches Alias ist schon benutzt."
 
@@ -587,14 +588,14 @@ msgid "Roles"
 msgstr "Rollen"
 
 #: apps/member/models.py:38
-#: apps/member/templates/member/includes/profile_info.html:34
+#: apps/member/templates/member/includes/profile_info.html:35
 #: apps/registration/templates/registration/future_profile_detail.html:40
 #: apps/wei/templates/wei/weimembership_form.html:44
 msgid "phone number"
 msgstr "Telefonnummer"
 
 #: apps/member/models.py:45
-#: apps/member/templates/member/includes/profile_info.html:28
+#: apps/member/templates/member/includes/profile_info.html:29
 #: apps/registration/templates/registration/future_profile_detail.html:34
 #: apps/wei/templates/wei/weimembership_form.html:38
 msgid "section"
@@ -681,14 +682,14 @@ msgid "Year of entry to the school (None if not ENS student)"
 msgstr "ENS Eintrittjahr (None wenn kein ENS Student)"
 
 #: apps/member/models.py:83
-#: apps/member/templates/member/includes/profile_info.html:38
+#: apps/member/templates/member/includes/profile_info.html:39
 #: apps/registration/templates/registration/future_profile_detail.html:37
 #: apps/wei/templates/wei/weimembership_form.html:41
 msgid "address"
 msgstr "Adresse"
 
 #: apps/member/models.py:90
-#: apps/member/templates/member/includes/profile_info.html:45
+#: apps/member/templates/member/includes/profile_info.html:46
 #: apps/registration/templates/registration/future_profile_detail.html:43
 #: apps/wei/templates/wei/weimembership_form.html:47
 msgid "paid"
@@ -698,7 +699,7 @@ msgstr "bezahlt"
 msgid "Tells if the user receive a salary."
 msgstr "User ist bezahlt."
 
-#: apps/member/models.py:100 apps/treasury/tables.py:146
+#: apps/member/models.py:100 apps/treasury/tables.py:143
 msgid "No"
 msgstr "Nein"
 
@@ -760,7 +761,7 @@ msgstr "Ihre Note Kfet Konto bestätigen"
 
 #: apps/member/models.py:204
 #: apps/member/templates/member/includes/club_info.html:55
-#: apps/member/templates/member/includes/profile_info.html:31
+#: apps/member/templates/member/includes/profile_info.html:32
 #: apps/registration/templates/registration/future_profile_detail.html:22
 #: apps/wei/templates/wei/base.html:70
 #: apps/wei/templates/wei/weimembership_form.html:20
@@ -810,7 +811,7 @@ msgstr ""
 "Maximales Datum einer Mitgliedschaft, nach dem Mitglieder es erneuern müssen."
 
 #: apps/member/models.py:286 apps/member/models.py:311
-#: apps/note/models/notes.py:177
+#: apps/note/models/notes.py:176
 msgid "club"
 msgstr "Club"
 
@@ -818,41 +819,41 @@ msgstr "Club"
 msgid "clubs"
 msgstr "Clubs"
 
-#: apps/member/models.py:321
+#: apps/member/models.py:322
 msgid "membership starts on"
 msgstr "Mitgliedschaft fängt an"
 
-#: apps/member/models.py:325
+#: apps/member/models.py:326
 msgid "membership ends on"
 msgstr "Mitgliedschaft endet am"
 
-#: apps/member/models.py:421
+#: apps/member/models.py:422
 #, python-brace-format
 msgid "The role {role} does not apply to the club {club}."
 msgstr "Die Rolle {role} ist nicht erlaubt für das Club {club}."
 
-#: apps/member/models.py:430 apps/member/views.py:646
+#: apps/member/models.py:431 apps/member/views.py:651
 msgid "User is already a member of the club"
 msgstr "User ist schon ein Mitglied dieser club"
 
-#: apps/member/models.py:442 apps/member/views.py:656
+#: apps/member/models.py:443 apps/member/views.py:661
 msgid "User is not a member of the parent club"
 msgstr "User ist noch nicht Mitglied des Urclubs"
 
-#: apps/member/models.py:495
+#: apps/member/models.py:496
 #, python-brace-format
 msgid "Membership of {user} for the club {club}"
 msgstr "Mitgliedschaft von {user} für das Club {club}"
 
-#: apps/member/models.py:498 apps/note/models/transactions.py:358
+#: apps/member/models.py:499 apps/note/models/transactions.py:389
 msgid "membership"
 msgstr "Mitgliedschaft"
 
-#: apps/member/models.py:499
+#: apps/member/models.py:500
 msgid "memberships"
 msgstr "Mitgliedschaften"
 
-#: apps/member/tables.py:121
+#: apps/member/tables.py:137
 msgid "Renew"
 msgstr "Erneuern"
 
@@ -963,8 +964,8 @@ msgstr ""
 "erlaubt."
 
 #: apps/member/templates/member/club_alias.html:10
-#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:245
-#: apps/member/views.py:448
+#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:253
+#: apps/member/views.py:456
 msgid "Note aliases"
 msgstr "Note Aliases"
 
@@ -1002,7 +1003,7 @@ msgid "Filter roles:"
 msgstr "Rollen filter:"
 
 #: apps/member/templates/member/club_members.html:36
-#: apps/wei/templates/wei/weimembership_list.html:17
+#: apps/wei/templates/wei/weimembership_list.html:19
 msgid "There is no membership found with this pattern."
 msgstr "Keine Mitgliedschaft mit diesem pattern gefunden."
 
@@ -1020,8 +1021,8 @@ msgid "membership fee"
 msgstr "Mitgliedsachftpreis"
 
 #: apps/member/templates/member/includes/club_info.html:43
-#: apps/member/templates/member/includes/profile_info.html:42
-#: apps/treasury/templates/treasury/sogecredit_detail.html:18
+#: apps/member/templates/member/includes/profile_info.html:43
+#: apps/treasury/templates/treasury/sogecredit_detail.html:24
 #: apps/wei/templates/wei/base.html:60
 msgid "balance"
 msgstr "Kontostand"
@@ -1039,6 +1040,7 @@ msgstr "Aliases bearbeiten"
 
 #: apps/member/templates/member/includes/profile_info.html:7
 #: apps/registration/templates/registration/future_profile_detail.html:19
+#: apps/treasury/templates/treasury/sogecredit_detail.html:20
 #: apps/wei/templates/wei/weimembership_form.html:17
 msgid "username"
 msgstr "Username"
@@ -1051,7 +1053,7 @@ msgstr "Kennwort"
 msgid "Change password"
 msgstr "Kennword ändern"
 
-#: apps/member/templates/member/includes/profile_info.html:53
+#: apps/member/templates/member/includes/profile_info.html:55
 msgid "API token"
 msgstr "API token"
 
@@ -1103,43 +1105,43 @@ msgstr "Anmeldung"
 msgid "This address must be valid."
 msgstr "Diese Adresse muss gültig sein."
 
-#: apps/member/views.py:137
+#: apps/member/views.py:138
 msgid "Profile detail"
 msgstr "Profile detail"
 
-#: apps/member/views.py:204
+#: apps/member/views.py:205
 msgid "Search user"
 msgstr "User finden"
 
-#: apps/member/views.py:265
+#: apps/member/views.py:273
 msgid "Update note picture"
 msgstr "Notebild ändern"
 
-#: apps/member/views.py:311
+#: apps/member/views.py:319
 msgid "Manage auth token"
 msgstr "Auth token bearbeiten"
 
-#: apps/member/views.py:338
+#: apps/member/views.py:346
 msgid "Create new club"
 msgstr "Neue Club"
 
-#: apps/member/views.py:357
+#: apps/member/views.py:365
 msgid "Search club"
 msgstr "Club finden"
 
-#: apps/member/views.py:390
+#: apps/member/views.py:398
 msgid "Club detail"
 msgstr "Club Details"
 
-#: apps/member/views.py:471
+#: apps/member/views.py:479
 msgid "Update club"
 msgstr "Club bearbeiten"
 
-#: apps/member/views.py:505
+#: apps/member/views.py:513
 msgid "Add new member to the club"
 msgstr "Neue Mitglieder"
 
-#: apps/member/views.py:637 apps/wei/views.py:928
+#: apps/member/views.py:642 apps/wei/views.py:917
 msgid ""
 "This user don't have enough money to join this club, and can't have a "
 "negative balance."
@@ -1147,20 +1149,14 @@ msgstr ""
 "Diese User hat nicht genug Geld um Mitglied zu werden, und darf nich im Rot "
 "sein."
 
-#: apps/member/views.py:660
+#: apps/member/views.py:665
 msgid "The membership must start after {:%m-%d-%Y}."
 msgstr "Die Mitgliedschaft muss nach {:%m-%d-Y} anfängen."
 
-#: apps/member/views.py:665
+#: apps/member/views.py:670
 msgid "The membership must begin before {:%m-%d-%Y}."
 msgstr "Die Mitgliedschaft muss vor {:%m-%d-Y} anfängen."
 
-#: apps/member/views.py:672 apps/member/views.py:674 apps/member/views.py:676
-#: apps/registration/views.py:304 apps/registration/views.py:306
-#: apps/registration/views.py:308 apps/wei/views.py:933 apps/wei/views.py:937
-msgid "This field is required."
-msgstr "Dies ist ein Pflichtfeld."
-
 #: apps/member/views.py:816
 msgid "Manage roles of an user in the club"
 msgstr "Rollen in diesen Club bearbeiten"
@@ -1184,7 +1180,7 @@ msgid "amount"
 msgstr "Anzahl"
 
 #: apps/note/api/serializers.py:183 apps/note/api/serializers.py:189
-#: apps/note/models/transactions.py:227
+#: apps/note/models/transactions.py:228
 msgid ""
 "The transaction can't be saved since the source note or the destination note "
 "is not active."
@@ -1204,7 +1200,7 @@ msgstr "Empfänger"
 msgid "Reason"
 msgstr "Grund"
 
-#: apps/note/forms.py:79 apps/treasury/tables.py:139
+#: apps/note/forms.py:79 apps/treasury/tables.py:136
 msgid "Valid"
 msgstr "Gültig"
 
@@ -1224,35 +1220,35 @@ msgstr "Erschafft nacht"
 msgid "Created before"
 msgstr "Erschafft vor"
 
-#: apps/note/models/notes.py:32
+#: apps/note/models/notes.py:31
 msgid "account balance"
 msgstr "Kontostand"
 
-#: apps/note/models/notes.py:33
+#: apps/note/models/notes.py:32
 msgid "in centimes, money credited for this instance"
 msgstr "In Cent, der Anzahl Geld für diese Konto"
 
-#: apps/note/models/notes.py:38
+#: apps/note/models/notes.py:37
 msgid "last negative date"
 msgstr "letztes mal im Rot"
 
-#: apps/note/models/notes.py:39
+#: apps/note/models/notes.py:38
 msgid "last time the balance was negative"
 msgstr "letztes mal  im Rot"
 
-#: apps/note/models/notes.py:45
+#: apps/note/models/notes.py:44
 msgid "display image"
 msgstr "Bild"
 
-#: apps/note/models/notes.py:54 apps/note/models/transactions.py:132
+#: apps/note/models/notes.py:53 apps/note/models/transactions.py:132
 msgid "created at"
 msgstr "erschafft am"
 
-#: apps/note/models/notes.py:59
+#: apps/note/models/notes.py:58
 msgid "active"
 msgstr "Aktiv"
 
-#: apps/note/models/notes.py:62
+#: apps/note/models/notes.py:61
 msgid ""
 "Designates whether this note should be treated as active. Unselect this "
 "instead of deleting notes."
@@ -1260,7 +1256,7 @@ msgstr ""
 "Designates whether this note should be treated as active. Unselect this "
 "instead of deleting notes."
 
-#: apps/note/models/notes.py:69
+#: apps/note/models/notes.py:68
 msgid ""
 "The user blocked his/her note manually, eg. when he/she left the school for "
 "holidays. It can be reactivated at any time."
@@ -1268,53 +1264,53 @@ msgstr ""
 "The user blocked his/her note manually, eg. when he/she left the school for "
 "holidays. It can be reactivated at any time."
 
-#: apps/note/models/notes.py:71
+#: apps/note/models/notes.py:70
 msgid "The note is blocked by the the BDE and can't be manually reactivated."
 msgstr "The note is blocked by the the BDE and can't be manually reactivated."
 
-#: apps/note/models/notes.py:79
+#: apps/note/models/notes.py:78
 msgid "notes"
 msgstr "Notes"
 
-#: apps/note/models/notes.py:133
+#: apps/note/models/notes.py:132
 msgid "This alias is already taken."
 msgstr "Dieses Alias ist schon benutzt."
 
-#: apps/note/models/notes.py:153
+#: apps/note/models/notes.py:152
 msgid "one's note"
 msgstr "Jemand Note"
 
-#: apps/note/models/notes.py:154
+#: apps/note/models/notes.py:153
 msgid "users note"
 msgstr "User Note"
 
-#: apps/note/models/notes.py:160
+#: apps/note/models/notes.py:159
 #, python-format
 msgid "%(user)s's note"
 msgstr "%(user)s's note"
 
-#: apps/note/models/notes.py:181
+#: apps/note/models/notes.py:180
 msgid "club note"
 msgstr "Club Note"
 
-#: apps/note/models/notes.py:182
+#: apps/note/models/notes.py:181
 msgid "clubs notes"
 msgstr "Club Notes"
 
-#: apps/note/models/notes.py:188
+#: apps/note/models/notes.py:187
 #, python-format
 msgid "Note of %(club)s club"
 msgstr "%(club)s Note"
 
-#: apps/note/models/notes.py:214
+#: apps/note/models/notes.py:213
 msgid "special note"
 msgstr "Sondernote"
 
-#: apps/note/models/notes.py:215
+#: apps/note/models/notes.py:214
 msgid "special notes"
 msgstr "Sondernoten"
 
-#: apps/note/models/notes.py:238
+#: apps/note/models/notes.py:237
 msgid "Invalid alias"
 msgstr "Unerlaublt Alias"
 
@@ -1391,7 +1387,7 @@ msgid "transaction"
 msgstr "Transaktion"
 
 #: apps/note/models/transactions.py:162
-#: apps/treasury/templates/treasury/sogecredit_detail.html:22
+#: apps/treasury/templates/treasury/sogecredit_detail.html:28
 msgid "transactions"
 msgstr "Transaktionen"
 
@@ -1412,34 +1408,34 @@ msgstr ""
 "Die Notenguthaben müssen zwischen - 92 233 720 368 547 758,08 € und 92 233 "
 "720 368 547 758,07 € liegen."
 
-#: apps/note/models/transactions.py:276
+#: apps/note/models/transactions.py:277
 msgid ""
 "The destination of this transaction must equal to the destination of the "
 "template."
 msgstr ""
 "Der Empfänger dieser Transaktion muss dem Empfänger der Vorlage entsprechen."
 
-#: apps/note/models/transactions.py:286
+#: apps/note/models/transactions.py:287
 msgid "Template"
 msgstr "Vorlage"
 
-#: apps/note/models/transactions.py:289
+#: apps/note/models/transactions.py:290
 msgid "recurrent transaction"
 msgstr "wiederkehrende Transaktion"
 
-#: apps/note/models/transactions.py:290
+#: apps/note/models/transactions.py:291
 msgid "recurrent transactions"
 msgstr "wiederkehrende Transaktionen"
 
-#: apps/note/models/transactions.py:305
+#: apps/note/models/transactions.py:306
 msgid "first_name"
 msgstr "Vorname"
 
-#: apps/note/models/transactions.py:310
+#: apps/note/models/transactions.py:311
 msgid "bank"
 msgstr "Bank"
 
-#: apps/note/models/transactions.py:327
+#: apps/note/models/transactions.py:328
 msgid ""
 "A special transaction is only possible between a Note associated to a "
 "payment method and a User or a Club"
@@ -1447,19 +1443,25 @@ msgstr ""
 "Eine Sondertransaktion ist nur zwischen einer Note, die einer "
 "Zahlungsmethode zugeordnet ist, und einem User oder einem Club möglich"
 
-#: apps/note/models/transactions.py:336
+#: apps/note/models/transactions.py:355 apps/note/models/transactions.py:358
+#: apps/note/models/transactions.py:361 apps/wei/views.py:922
+#: apps/wei/views.py:926
+msgid "This field is required."
+msgstr "Dies ist ein Pflichtfeld."
+
+#: apps/note/models/transactions.py:367
 msgid "Special transaction"
 msgstr "Sondertransaktion"
 
-#: apps/note/models/transactions.py:337
+#: apps/note/models/transactions.py:368
 msgid "Special transactions"
 msgstr "Sondertranskationen"
 
-#: apps/note/models/transactions.py:353
+#: apps/note/models/transactions.py:384
 msgid "membership transaction"
 msgstr "Mitgliedschafttransaktion"
 
-#: apps/note/models/transactions.py:354 apps/treasury/models.py:284
+#: apps/note/models/transactions.py:385 apps/treasury/models.py:289
 msgid "membership transactions"
 msgstr "Mitgliedschaftttransaktionen"
 
@@ -1477,14 +1479,14 @@ msgstr "Kein Grund gegeben"
 
 #: apps/note/tables.py:169 apps/note/tables.py:203 apps/treasury/tables.py:39
 #: apps/treasury/templates/treasury/invoice_confirm_delete.html:30
-#: apps/treasury/templates/treasury/sogecredit_detail.html:59
-#: apps/wei/tables.py:76 apps/wei/tables.py:103
+#: apps/treasury/templates/treasury/sogecredit_detail.html:65
+#: apps/wei/tables.py:74 apps/wei/tables.py:114
 #: apps/wei/templates/wei/weiregistration_confirm_delete.html:31
 msgid "Delete"
 msgstr "Löschen"
 
 #: apps/note/tables.py:197 apps/note/templates/note/conso_form.html:132
-#: apps/wei/tables.py:47 apps/wei/tables.py:48
+#: apps/wei/tables.py:48 apps/wei/tables.py:49
 #: apps/wei/templates/wei/base.html:89
 #: apps/wei/templates/wei/bus_detail.html:20
 #: apps/wei/templates/wei/busteam_detail.html:20
@@ -1563,13 +1565,13 @@ msgstr "Aktion"
 
 #: apps/note/templates/note/transaction_form.html:112
 #: apps/treasury/forms.py:136 apps/treasury/tables.py:67
-#: apps/treasury/tables.py:135
+#: apps/treasury/tables.py:132
 #: apps/treasury/templates/treasury/remittance_form.html:23
 msgid "Amount"
 msgstr "Anzahl"
 
 #: apps/note/templates/note/transaction_form.html:128
-#: apps/treasury/models.py:51
+#: apps/treasury/models.py:52
 msgid "Name"
 msgstr "Name"
 
@@ -1649,53 +1651,53 @@ msgstr "Sie können keine Taste sehen."
 msgid "Search transactions"
 msgstr "Transaktion finden"
 
-#: apps/permission/models.py:92
+#: apps/permission/models.py:89
 #, python-brace-format
 msgid "Can {type} {model}.{field} in {query}"
 msgstr "Kann {type} {model}.{field} in {query}"
 
-#: apps/permission/models.py:94
+#: apps/permission/models.py:91
 #, python-brace-format
 msgid "Can {type} {model} in {query}"
 msgstr "Kann {type} {model} in {query}"
 
-#: apps/permission/models.py:107
+#: apps/permission/models.py:104
 msgid "rank"
 msgstr "Rank"
 
-#: apps/permission/models.py:120
+#: apps/permission/models.py:117
 msgid "permission mask"
 msgstr "Berechtigungsmaske"
 
-#: apps/permission/models.py:121
+#: apps/permission/models.py:118
 msgid "permission masks"
 msgstr "Berechtigungsmasken"
 
-#: apps/permission/models.py:127
+#: apps/permission/models.py:124
 msgid "add"
 msgstr "hinzufügen"
 
-#: apps/permission/models.py:128
+#: apps/permission/models.py:125
 msgid "view"
 msgstr "Schauen"
 
-#: apps/permission/models.py:129
+#: apps/permission/models.py:126
 msgid "change"
 msgstr "bearbeiten"
 
-#: apps/permission/models.py:161
+#: apps/permission/models.py:158
 msgid "query"
 msgstr "Abfrage"
 
-#: apps/permission/models.py:174
+#: apps/permission/models.py:171
 msgid "mask"
 msgstr "Maske"
 
-#: apps/permission/models.py:180
+#: apps/permission/models.py:177
 msgid "field"
 msgstr "Feld"
 
-#: apps/permission/models.py:185
+#: apps/permission/models.py:182
 msgid ""
 "Tells if the permission should be granted even if the membership of the user "
 "is expired."
@@ -1703,28 +1705,28 @@ msgstr ""
 "Gibt an, ob die Berechtigung auch erteilt werden soll, wenn die "
 "Mitgliedschaft des Benutzers abgelaufen ist."
 
-#: apps/permission/models.py:186
+#: apps/permission/models.py:183
 #: apps/permission/templates/permission/all_rights.html:89
 msgid "permanent"
 msgstr "permanent"
 
-#: apps/permission/models.py:197
+#: apps/permission/models.py:194
 msgid "permission"
 msgstr "Berechtigung"
 
-#: apps/permission/models.py:198 apps/permission/models.py:338
+#: apps/permission/models.py:195 apps/permission/models.py:335
 msgid "permissions"
 msgstr "Berechtigungen"
 
-#: apps/permission/models.py:203
+#: apps/permission/models.py:200
 msgid "Specifying field applies only to view and change permission types."
 msgstr "Angabefeld gilt nur zum Anzeigen und Ändern von Berechtigungstypen."
 
-#: apps/permission/models.py:343
+#: apps/permission/models.py:340
 msgid "for club"
 msgstr "Für Club"
 
-#: apps/permission/models.py:353 apps/permission/models.py:354
+#: apps/permission/models.py:350 apps/permission/models.py:351
 msgid "role permissions"
 msgstr "Berechtigung Rollen"
 
@@ -1737,7 +1739,7 @@ msgstr ""
 "Sie haben nicht die Berechtigung, das Feld {field} in dieser Instanz von "
 "Modell {app_label} zu ändern. {model_name}"
 
-#: apps/permission/signals.py:73 apps/permission/views.py:103
+#: apps/permission/signals.py:73 apps/permission/views.py:105
 #, python-brace-format
 msgid ""
 "You don't have the permission to add an instance of model {app_label}."
@@ -1795,7 +1797,7 @@ msgstr "Abfrage:"
 msgid "No associated permission"
 msgstr "Keine zugehörige Berechtigung"
 
-#: apps/permission/views.py:70
+#: apps/permission/views.py:72
 #, python-brace-format
 msgid ""
 "You don't have the permission to update this instance of the model "
@@ -1805,7 +1807,7 @@ msgstr ""
 "diesen Parametern zu aktualisieren. Bitte korrigieren Sie Ihre Daten und "
 "versuchen Sie es erneut."
 
-#: apps/permission/views.py:74
+#: apps/permission/views.py:76
 #, python-brace-format
 msgid ""
 "You don't have the permission to create an instance of the model \"{model}\" "
@@ -1815,11 +1817,11 @@ msgstr ""
 "diesen Parametern zu erstellen. Bitte korrigieren Sie Ihre Daten und "
 "versuchen Sie es erneut."
 
-#: apps/permission/views.py:110 note_kfet/templates/base.html:109
+#: apps/permission/views.py:112 note_kfet/templates/base.html:109
 msgid "Rights"
 msgstr "Rechten"
 
-#: apps/permission/views.py:115
+#: apps/permission/views.py:117
 msgid "All rights"
 msgstr "Alle Rechten"
 
@@ -2009,18 +2011,18 @@ msgstr "Unregistrierte Users"
 msgid "Registration detail"
 msgstr "Registrierung Detailen"
 
-#: apps/registration/views.py:273
+#: apps/registration/views.py:278
 msgid "You must join the BDE."
 msgstr "Sie müssen die BDE beitreten."
 
-#: apps/registration/views.py:297
+#: apps/registration/views.py:302
 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:384
+#: apps/registration/views.py:383
 msgid "Invalidate pre-registration"
 msgstr "Ungültige Vorregistrierung"
 
@@ -2028,7 +2030,7 @@ msgstr "Ungültige Vorregistrierung"
 msgid "Treasury"
 msgstr "Quaestor"
 
-#: apps/treasury/forms.py:25 apps/treasury/models.py:90
+#: apps/treasury/forms.py:25 apps/treasury/models.py:91
 #: 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."
@@ -2041,7 +2043,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:124 apps/treasury/models.py:260
+#: apps/treasury/forms.py:124 apps/treasury/models.py:265
 #: 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
@@ -2053,120 +2055,120 @@ msgstr "Ãœberweisung"
 msgid "No attached remittance"
 msgstr "Keine beigefügte Überweisung"
 
-#: apps/treasury/models.py:23
+#: apps/treasury/models.py:24
 msgid "Invoice identifier"
 msgstr "Rechnungskennung"
 
-#: apps/treasury/models.py:37
+#: apps/treasury/models.py:38
 msgid "BDE"
 msgstr "BDE"
 
-#: apps/treasury/models.py:42
+#: apps/treasury/models.py:43
 msgid "Object"
 msgstr "Objekt"
 
-#: apps/treasury/models.py:46
+#: apps/treasury/models.py:47
 msgid "Description"
 msgstr "Beschreibung"
 
-#: apps/treasury/models.py:55
+#: apps/treasury/models.py:56
 msgid "Address"
 msgstr "Adresse"
 
-#: apps/treasury/models.py:60 apps/treasury/models.py:187
+#: apps/treasury/models.py:61 apps/treasury/models.py:191
 msgid "Date"
 msgstr "Datum"
 
-#: apps/treasury/models.py:64
+#: apps/treasury/models.py:65
 msgid "Acquitted"
 msgstr "Bezahlt"
 
-#: apps/treasury/models.py:69
+#: apps/treasury/models.py:70
 msgid "Locked"
 msgstr "Gesperrt"
 
-#: apps/treasury/models.py:70
+#: apps/treasury/models.py:71
 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:76
+#: apps/treasury/models.py:77
 msgid "tex source"
 msgstr "Tex Quelle"
 
-#: apps/treasury/models.py:110 apps/treasury/models.py:126
+#: apps/treasury/models.py:111 apps/treasury/models.py:127
 msgid "invoice"
 msgstr "Rechnung"
 
-#: apps/treasury/models.py:111
+#: apps/treasury/models.py:112
 msgid "invoices"
 msgstr "Rechnungen"
 
-#: apps/treasury/models.py:114
+#: apps/treasury/models.py:115
 #, python-brace-format
 msgid "Invoice #{id}"
 msgstr "Rechnung #{id}"
 
-#: apps/treasury/models.py:131
+#: apps/treasury/models.py:132
 msgid "Designation"
 msgstr "Bezeichnung"
 
-#: apps/treasury/models.py:135
+#: apps/treasury/models.py:138
 msgid "Quantity"
 msgstr "Qualität"
 
-#: apps/treasury/models.py:139
+#: apps/treasury/models.py:143
 msgid "Unit price"
 msgstr "Einzelpreis"
 
-#: apps/treasury/models.py:155
+#: apps/treasury/models.py:159
 msgid "product"
 msgstr "Produkt"
 
-#: apps/treasury/models.py:156
+#: apps/treasury/models.py:160
 msgid "products"
 msgstr "Produkten"
 
-#: apps/treasury/models.py:176
+#: apps/treasury/models.py:180
 msgid "remittance type"
 msgstr "Ãœberweisungstyp"
 
-#: apps/treasury/models.py:177
+#: apps/treasury/models.py:181
 msgid "remittance types"
 msgstr "Ãœberweisungstypen"
 
-#: apps/treasury/models.py:198
+#: apps/treasury/models.py:202
 msgid "Comment"
 msgstr "Kommentar"
 
-#: apps/treasury/models.py:203
+#: apps/treasury/models.py:207
 msgid "Closed"
 msgstr "Geschlossen"
 
-#: apps/treasury/models.py:207
+#: apps/treasury/models.py:211
 msgid "remittance"
 msgstr "Ãœberweisung"
 
-#: apps/treasury/models.py:208
+#: apps/treasury/models.py:212
 msgid "remittances"
 msgstr "Ãœberweisungen"
 
-#: apps/treasury/models.py:241
+#: apps/treasury/models.py:245
 msgid "Remittance #{:d}: {}"
 msgstr "Ãœberweisung #{:d}:{}"
 
-#: apps/treasury/models.py:264
+#: apps/treasury/models.py:269
 msgid "special transaction proxy"
 msgstr "spezielle Transaktion Proxy"
 
-#: apps/treasury/models.py:265
+#: apps/treasury/models.py:270
 msgid "special transaction proxies"
 msgstr "spezielle Transaktion Proxies"
 
-#: apps/treasury/models.py:290
+#: apps/treasury/models.py:295
 msgid "credit transaction"
 msgstr "Kredit Transaktion"
 
-#: apps/treasury/models.py:374
+#: apps/treasury/models.py:379
 msgid ""
 "This user doesn't have enough money to pay the memberships with its note. "
 "Please ask her/him to credit the note before invalidating this credit."
@@ -2174,16 +2176,16 @@ msgstr ""
 "Dieser Benutzer hat nicht genug Geld, um die Mitgliedschaften mit seiner "
 "Note zu bezahlen."
 
-#: apps/treasury/models.py:389
+#: apps/treasury/models.py:399
 #: 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:390
+#: apps/treasury/models.py:400
 msgid "Credits from the Société générale"
 msgstr "Krediten von der Société générale"
 
-#: apps/treasury/models.py:393
+#: apps/treasury/models.py:403
 #, python-brace-format
 msgid "Soge credit for {user}"
 msgstr "Kredit von der Société générale für {user}"
@@ -2207,7 +2209,7 @@ msgstr "Transaktionanzahl"
 msgid "View"
 msgstr "Schauen"
 
-#: apps/treasury/tables.py:146
+#: apps/treasury/tables.py:143
 msgid "Yes"
 msgstr "Ja"
 
@@ -2312,11 +2314,11 @@ msgstr "Geschlossene Ãœberweisungen"
 msgid "There is no closed remittance yet."
 msgstr "Es gibt noch keine geschlossene Ãœberweisung."
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:29
+#: apps/treasury/templates/treasury/sogecredit_detail.html:35
 msgid "total amount"
 msgstr "Totalanzahlt"
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:35
+#: apps/treasury/templates/treasury/sogecredit_detail.html:41
 msgid ""
 "Warning: Validating this credit implies that all membership transactions "
 "will be validated."
@@ -2324,7 +2326,7 @@ msgstr ""
 "Achtung: Die Validierung dieses Guthabens bedeutet, dass alle "
 "Mitgliedschaftstransaktionen validiert werden."
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:36
+#: apps/treasury/templates/treasury/sogecredit_detail.html:42
 msgid ""
 "If you delete this credit, there all membership transactions will be also "
 "validated, but no credit will be operated."
@@ -2332,7 +2334,7 @@ msgstr ""
 "Wenn Sie dieses Kredit löschen, werden dort auch alle "
 "Mitgliedschaftstransaktionen validiert, es wird jedoch kein Kredit betrieben."
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:37
+#: apps/treasury/templates/treasury/sogecredit_detail.html:43
 msgid ""
 "If this credit is validated, then the user won't be able to ask for a credit "
 "from the Société générale."
@@ -2340,17 +2342,17 @@ msgstr ""
 "Wenn dieses Kredit validiert ist, kann der Benutzer bei der Société générale "
 "kein Guthaben anfordern."
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:38
+#: apps/treasury/templates/treasury/sogecredit_detail.html:44
 msgid "If you think there is an error, please contact the \"respos info\"."
 msgstr ""
 "Wenn Sie glauben, dass ein Fehler vorliegt, wenden Sie sich bitte an die "
 "\"respos info\"."
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:44
+#: apps/treasury/templates/treasury/sogecredit_detail.html:50
 msgid "This credit is already validated."
 msgstr "Dieser Kredit ist bereits validiert."
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:49
+#: apps/treasury/templates/treasury/sogecredit_detail.html:55
 msgid ""
 "Warning: if you don't validate this credit, the note of the user doesn't "
 "have enough money to pay its memberships."
@@ -2358,18 +2360,18 @@ msgstr ""
 "Achtung: Wenn Sie diese Kredit nicht bestätigen, die Note von dem Benutzer "
 "nicht genug Geld hat, um seine Mitgliedschaft zu zahlen."
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:50
+#: apps/treasury/templates/treasury/sogecredit_detail.html:56
 msgid "Please ask the user to credit its note before deleting this credit."
 msgstr ""
 "Bitte bitten Sie den Benutzer, seine Note gutzuschreiben, bevor Sie diese "
 "Kredit löschen."
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:57
-#: apps/wei/tables.py:59 apps/wei/tables.py:60 apps/wei/tables.py:99
+#: apps/treasury/templates/treasury/sogecredit_detail.html:63
+#: apps/wei/tables.py:59 apps/wei/tables.py:101
 msgid "Validate"
 msgstr "Validieren"
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:65
+#: apps/treasury/templates/treasury/sogecredit_detail.html:71
 msgid "Return to credit list"
 msgstr "Zurück zur Kreditlist"
 
@@ -2425,13 +2427,13 @@ msgid "Manage credits from the Société générale"
 msgstr "Krediten von der Société générale handeln"
 
 #: apps/wei/apps.py:10 apps/wei/models.py:49 apps/wei/models.py:50
-#: apps/wei/models.py:61 apps/wei/models.py:167
+#: apps/wei/models.py:61 apps/wei/models.py:172
 #: note_kfet/templates/base.html:103
 msgid "WEI"
 msgstr "WEI"
 
-#: apps/wei/forms/registration.py:51 apps/wei/models.py:113
-#: apps/wei/models.py:283
+#: apps/wei/forms/registration.py:51 apps/wei/models.py:118
+#: apps/wei/models.py:315
 msgid "bus"
 msgstr "Bus"
 
@@ -2457,7 +2459,7 @@ msgstr ""
 "Buschef, freies Elektron)"
 
 #: apps/wei/forms/registration.py:67 apps/wei/forms/registration.py:77
-#: apps/wei/models.py:148
+#: apps/wei/models.py:153
 msgid "WEI Roles"
 msgstr "WEI Rollen"
 
@@ -2469,7 +2471,7 @@ msgstr "Wählen Sie die Rollen aus, an denen Sie interessiert sind."
 msgid "This team doesn't belong to the given bus."
 msgstr "Dieses Team gehört nicht zum angegebenen Bus."
 
-#: apps/wei/forms/surveys/wei2020.py:30
+#: apps/wei/forms/surveys/wei2021.py:31
 msgid "Choose a word:"
 msgstr "Wählen Sie ein Wort:"
 
@@ -2485,103 +2487,109 @@ msgstr "Anfangsdatum"
 msgid "date end"
 msgstr "Abschlussdatum"
 
-#: apps/wei/models.py:77
+#: apps/wei/models.py:70
+#, fuzzy
+#| msgid "The user joined the bus"
+msgid "seat count in the bus"
+msgstr "Der Benutzer ist dem Bus beigetreten"
+
+#: apps/wei/models.py:82
 msgid "survey information"
 msgstr "Umfrage Infos"
 
-#: apps/wei/models.py:78
+#: apps/wei/models.py:83
 msgid "Information about the survey for new members, encoded in JSON"
 msgstr "Informationen zur Umfrage für neue Mitglieder, codiert in JSON"
 
-#: apps/wei/models.py:100
+#: apps/wei/models.py:105
 msgid "Bus"
 msgstr "Bus"
 
-#: apps/wei/models.py:101 apps/wei/templates/wei/weiclub_detail.html:51
+#: apps/wei/models.py:106 apps/wei/templates/wei/weiclub_detail.html:51
 msgid "Buses"
 msgstr "Buses"
 
-#: apps/wei/models.py:122
+#: apps/wei/models.py:127
 msgid "color"
 msgstr "Farbe"
 
-#: apps/wei/models.py:123
+#: apps/wei/models.py:128
 msgid "The color of the T-Shirt, stored with its number equivalent"
 msgstr "Die Farbe des T-Shirts, gespeichert mit der entsprechenden Nummer"
 
-#: apps/wei/models.py:137
+#: apps/wei/models.py:142
 msgid "Bus team"
 msgstr "Bus Team"
 
-#: apps/wei/models.py:138
+#: apps/wei/models.py:143
 msgid "Bus teams"
 msgstr "Bus Teams"
 
-#: apps/wei/models.py:147
+#: apps/wei/models.py:152
 msgid "WEI Role"
 msgstr "WEI Rolle"
 
-#: apps/wei/models.py:172
+#: apps/wei/models.py:177
 msgid "Credit from Société générale"
 msgstr "Kredit von der Société générale"
 
-#: apps/wei/models.py:177
+#: apps/wei/models.py:182
 msgid "Caution check given"
 msgstr "Caution check given"
 
-#: apps/wei/models.py:181 apps/wei/templates/wei/weimembership_form.html:64
+#: apps/wei/models.py:186 apps/wei/templates/wei/weimembership_form.html:64
 msgid "birth date"
 msgstr "Geburtsdatum"
 
-#: apps/wei/models.py:187 apps/wei/models.py:197
+#: apps/wei/models.py:192 apps/wei/models.py:202
 msgid "Male"
 msgstr "Männlich"
 
-#: apps/wei/models.py:188 apps/wei/models.py:198
+#: apps/wei/models.py:193 apps/wei/models.py:203
 msgid "Female"
 msgstr "Weiblich"
 
-#: apps/wei/models.py:189
+#: apps/wei/models.py:194
 msgid "Non binary"
 msgstr "Nicht binär"
 
-#: apps/wei/models.py:191 apps/wei/templates/wei/weimembership_form.html:55
+#: apps/wei/models.py:196 apps/wei/templates/wei/weimembership_form.html:55
 msgid "gender"
 msgstr "Geschlecht"
 
-#: apps/wei/models.py:200 apps/wei/templates/wei/weimembership_form.html:58
+#: apps/wei/models.py:205 apps/wei/templates/wei/weimembership_form.html:58
 msgid "clothing cut"
 msgstr "Kleidung Schnitt"
 
-#: apps/wei/models.py:213 apps/wei/templates/wei/weimembership_form.html:61
+#: apps/wei/models.py:218 apps/wei/templates/wei/weimembership_form.html:61
 msgid "clothing size"
 msgstr "Kleidergröße"
 
-#: apps/wei/models.py:219 apps/wei/templates/wei/weimembership_form.html:67
+#: apps/wei/models.py:224 apps/wei/templates/wei/weimembership_form.html:67
 msgid "health issues"
 msgstr "Gesundheitsprobleme"
 
-#: apps/wei/models.py:224 apps/wei/templates/wei/weimembership_form.html:70
+#: apps/wei/models.py:229 apps/wei/templates/wei/weimembership_form.html:70
 msgid "emergency contact name"
 msgstr "Notfall-Kontakt"
 
-#: apps/wei/models.py:229 apps/wei/templates/wei/weimembership_form.html:73
+#: apps/wei/models.py:234 apps/wei/templates/wei/weimembership_form.html:73
 msgid "emergency contact phone"
 msgstr "Notfallkontakttelefon"
 
-#: apps/wei/models.py:234 apps/wei/templates/wei/weimembership_form.html:52
+#: apps/wei/models.py:239 apps/wei/templates/wei/weimembership_form.html:52
 msgid "first year"
 msgstr "Erste Jahr"
 
-#: apps/wei/models.py:235
+#: apps/wei/models.py:240
 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:240
+#: apps/wei/models.py:245
 msgid "registration information"
 msgstr "Registrierung Detailen"
 
-#: apps/wei/models.py:241
+#: apps/wei/models.py:246
 msgid ""
 "Information about the registration (buses for old members, survey for the "
 "new members), encoded in JSON"
@@ -2589,44 +2597,58 @@ msgstr ""
 "Informationen zur Registrierung (Busse für alte Mitglieder, Umfrage für neue "
 "Mitglieder), verschlüsselt in JSON"
 
-#: apps/wei/models.py:272
+#: apps/wei/models.py:304
 msgid "WEI User"
 msgstr "WEI User"
 
-#: apps/wei/models.py:273
+#: apps/wei/models.py:305
 msgid "WEI Users"
 msgstr "WEI Users"
 
-#: apps/wei/models.py:293
+#: apps/wei/models.py:325
 msgid "team"
 msgstr "Team"
 
-#: apps/wei/models.py:303
+#: apps/wei/models.py:335
 msgid "WEI registration"
 msgstr "WEI Registrierung"
 
-#: apps/wei/models.py:307
+#: apps/wei/models.py:339
 msgid "WEI membership"
 msgstr "WEI Mitgliedschaft"
 
-#: apps/wei/models.py:308
+#: apps/wei/models.py:340
 msgid "WEI memberships"
 msgstr "WEI Mitgliedschaften"
 
-#: apps/wei/tables.py:127
+#: apps/wei/tables.py:104
+msgid "The user does not have enough money."
+msgstr ""
+
+#: apps/wei/tables.py:107
+#, fuzzy
+#| msgid ""
+#| "The note has enough money (%(pretty_fee)s required), the registration is "
+#| "possible."
+msgid "The user has enough money, you can validate the registration."
+msgstr ""
+"Die Note hat genug Geld (%(pretty_fee)s erforderlich), die Registrierung ist "
+"möglich."
+
+#: apps/wei/tables.py:139
 msgid "Year"
 msgstr "Jahr"
 
-#: apps/wei/tables.py:165 apps/wei/templates/wei/bus_detail.html:32
+#: apps/wei/tables.py:177 apps/wei/templates/wei/bus_detail.html:32
 #: apps/wei/templates/wei/busteam_detail.html:50
 msgid "Teams"
 msgstr "Teams"
 
-#: apps/wei/tables.py:174 apps/wei/tables.py:215
+#: apps/wei/tables.py:186 apps/wei/tables.py:227
 msgid "Members count"
 msgstr "Anzahl Mitgliedern"
 
-#: apps/wei/tables.py:181 apps/wei/tables.py:212
+#: apps/wei/tables.py:193 apps/wei/tables.py:224
 msgid "members"
 msgstr "Mitglieder"
 
@@ -2646,11 +2668,11 @@ msgstr "WEI Preis (unbezahlte Studenten)"
 msgid "WEI list"
 msgstr "WEI Liste"
 
-#: apps/wei/templates/wei/base.html:81 apps/wei/views.py:508
+#: apps/wei/templates/wei/base.html:81 apps/wei/views.py:510
 msgid "Register 1A"
 msgstr "1A Registrieren"
 
-#: apps/wei/templates/wei/base.html:85 apps/wei/views.py:576
+#: apps/wei/templates/wei/base.html:85 apps/wei/views.py:578
 msgid "Register 2A+"
 msgstr "2A+ Registrieren"
 
@@ -2673,14 +2695,14 @@ msgstr "Mitglied"
 
 #: apps/wei/templates/wei/bus_detail.html:54
 #: apps/wei/templates/wei/busteam_detail.html:60
-#: apps/wei/templates/wei/weimembership_list.html:29
+#: apps/wei/templates/wei/weimembership_list.html:31
 msgid "View as PDF"
 msgstr "Als PDF schauen"
 
 #: apps/wei/templates/wei/survey.html:11
 #: apps/wei/templates/wei/survey_closed.html:11
-#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:984
-#: apps/wei/views.py:1039 apps/wei/views.py:1049
+#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:973
+#: apps/wei/views.py:1028 apps/wei/views.py:1038
 msgid "Survey WEI"
 msgstr "WEI Umfrage"
 
@@ -2840,7 +2862,7 @@ msgstr ""
 "Mitgliedschaft wird automatisch bearbeitet, die WEI-Registrierung beinhaltet "
 "den Mitgliedsbeitrag."
 
-#: apps/wei/templates/wei/weimembership_list.html:23
+#: apps/wei/templates/wei/weimembership_list.html:27
 msgid "View unvalidated registrations..."
 msgstr "Nicht validierte Registrierungen anzeigen ..."
 
@@ -2858,11 +2880,11 @@ msgstr ""
 "Möchten Sie die Registrierung von %(user)s für die WEI %(wei_name)s wirklich "
 "löschen? Diese Aktion kann nicht rückgängig gemacht werden."
 
-#: apps/wei/templates/wei/weiregistration_list.html:17
+#: apps/wei/templates/wei/weiregistration_list.html:19
 msgid "There is no pre-registration found with this pattern."
 msgstr "Bei diesem Muster wurde keine Vorregistrierung gefunden."
 
-#: apps/wei/templates/wei/weiregistration_list.html:23
+#: apps/wei/templates/wei/weiregistration_list.html:27
 msgid "View validated memberships..."
 msgstr "Validierte Mitgliedschaften anzeigen ..."
 
@@ -2902,31 +2924,31 @@ msgstr "Neue Bus"
 msgid "Update bus"
 msgstr "Bus bearbeiten"
 
-#: apps/wei/views.py:364
+#: apps/wei/views.py:366
 msgid "Manage bus"
 msgstr "Bus ändern"
 
-#: apps/wei/views.py:391
+#: apps/wei/views.py:393
 msgid "Create new team"
 msgstr "Neue Bus Team"
 
-#: apps/wei/views.py:431
+#: apps/wei/views.py:433
 msgid "Update team"
 msgstr "Team bearbeiten"
 
-#: apps/wei/views.py:462
+#: apps/wei/views.py:464
 msgid "Manage WEI team"
 msgstr "WEI Team bearbeiten"
 
-#: apps/wei/views.py:484
+#: apps/wei/views.py:486
 msgid "Register first year student to the WEI"
 msgstr "Registrieren Sie den Erstsemester beim WEI"
 
-#: apps/wei/views.py:530 apps/wei/views.py:611
+#: apps/wei/views.py:532 apps/wei/views.py:613
 msgid "This user is already registered to this WEI."
 msgstr "Dieser Benutzer ist bereits bei dieser WEI registriert."
 
-#: apps/wei/views.py:535
+#: apps/wei/views.py:537
 msgid ""
 "This user can't be in her/his first year since he/she has already "
 "participated to a WEI."
@@ -2934,47 +2956,43 @@ msgstr ""
 "Dieser Benutzer kann nicht in seinem ersten Jahr sein, da er bereits an "
 "einer WEI teilgenommen hat."
 
-#: apps/wei/views.py:552
+#: apps/wei/views.py:554
 msgid "Register old student to the WEI"
 msgstr "Registrieren Sie einen alten Studenten beim WEI"
 
-#: apps/wei/views.py:595 apps/wei/views.py:684
+#: apps/wei/views.py:597 apps/wei/views.py:686
 msgid "You already opened an account in the Société générale."
 msgstr "Sie haben bereits ein Konto in der Société générale eröffnet."
 
-#: apps/wei/views.py:641
+#: apps/wei/views.py:643
 msgid "Update WEI Registration"
 msgstr "WEI Registrierung aktualisieren"
 
-#: apps/wei/views.py:744
+#: apps/wei/views.py:746
 msgid "Delete WEI registration"
 msgstr "WEI Registrierung löschen"
 
-#: apps/wei/views.py:755
+#: apps/wei/views.py:757
 msgid "You don't have the right to delete this WEI registration."
 msgstr "Sie haben nicht das Recht, diese WEI-Registrierung zu löschen."
 
-#: apps/wei/views.py:774
+#: apps/wei/views.py:776
 msgid "Validate WEI registration"
 msgstr "Überprüfen Sie die WEI-Registrierung"
 
-#: apps/wei/views.py:922
-msgid "This user didn't give her/his caution check."
-msgstr "Dieser User hat seine / ihre Vorsicht nicht überprüft."
-
-#: note_kfet/settings/base.py:157
+#: note_kfet/settings/base.py:161
 msgid "German"
 msgstr "Deutsch"
 
-#: note_kfet/settings/base.py:158
+#: note_kfet/settings/base.py:162
 msgid "English"
 msgstr "English"
 
-#: note_kfet/settings/base.py:159
+#: note_kfet/settings/base.py:163
 msgid "Spanish"
 msgstr "Spanisch"
 
-#: note_kfet/settings/base.py:160
+#: note_kfet/settings/base.py:164
 msgid "French"
 msgstr "Französich"
 
@@ -3073,17 +3091,17 @@ msgstr "Registrieren"
 msgid "Log in"
 msgstr "Anmelden"
 
-#: note_kfet/templates/base.html:156
+#: note_kfet/templates/base.html:160
 msgid ""
 "You are not a BDE member anymore. Please renew your membership if you want "
 "to use the note."
 msgstr ""
 
-#: note_kfet/templates/base.html:160
+#: note_kfet/templates/base.html:164
 msgid "You are not a Kfet member, so you can't use your note account."
 msgstr ""
 
-#: note_kfet/templates/base.html:166
+#: note_kfet/templates/base.html:170
 msgid ""
 "Your e-mail address is not validated. Please check your mail inbox and click "
 "on the validation link."
@@ -3091,7 +3109,7 @@ msgstr ""
 "Ihre E-Mail-Adresse ist nicht validiert. Bitte überprüfen Sie Ihren "
 "Posteingang und klicken Sie auf den Validierungslink."
 
-#: note_kfet/templates/base.html:171
+#: note_kfet/templates/base.html:176
 msgid ""
 "You declared that you opened a bank account in the Société générale. The "
 "bank did not validate the creation of the account to the BDE, so the "
@@ -3100,7 +3118,7 @@ msgid ""
 "you go to the end of the account creation."
 msgstr ""
 
-#: note_kfet/templates/base.html:194
+#: note_kfet/templates/base.html:199
 msgid "Contact us"
 msgstr "Kontakt"
 
@@ -3225,6 +3243,9 @@ msgstr ""
 "müssen Ihre E-Mail-Adresse auch überprüfen, indem Sie dem Link folgen, den "
 "Sie erhalten haben."
 
+#~ msgid "This user didn't give her/his caution check."
+#~ msgstr "Dieser User hat seine / ihre Vorsicht nicht überprüft."
+
 #~ msgid "Central Authentication Service"
 #~ msgstr "Central Authentication Service"
 
diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po
index b726917d..e582dab0 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: 2020-11-15 23:26+0100\n"
+"POT-Creation-Date: 2021-08-29 14:06+0200\n"
 "PO-Revision-Date: 2020-11-17 23:47+0100\n"
 "Last-Translator: elkmaennchen <elkmaennchen@crans.org>\n"
 "Language-Team: \n"
@@ -51,11 +51,11 @@ msgstr "Usted no puede invitar más de 3 persona a esta actividad."
 #: apps/member/models.py:199
 #: apps/member/templates/member/includes/club_info.html:4
 #: apps/member/templates/member/includes/profile_info.html:4
-#: apps/note/models/notes.py:232 apps/note/models/transactions.py:26
-#: apps/note/models/transactions.py:46 apps/note/models/transactions.py:300
-#: apps/permission/models.py:333
+#: apps/note/models/notes.py:231 apps/note/models/transactions.py:26
+#: apps/note/models/transactions.py:46 apps/note/models/transactions.py:301
+#: apps/permission/models.py:330
 #: apps/registration/templates/registration/future_profile_detail.html:16
-#: apps/wei/models.py:66 apps/wei/models.py:118
+#: apps/wei/models.py:66 apps/wei/models.py:123
 #: apps/wei/templates/wei/base.html:26
 #: apps/wei/templates/wei/weimembership_form.html:14
 msgid "name"
@@ -89,8 +89,8 @@ msgstr "tipos de actividad"
 
 #: apps/activity/models.py:68
 #: apps/activity/templates/activity/includes/activity_info.html:19
-#: apps/note/models/transactions.py:81 apps/permission/models.py:113
-#: apps/permission/models.py:192 apps/wei/models.py:72 apps/wei/models.py:129
+#: apps/note/models/transactions.py:81 apps/permission/models.py:110
+#: apps/permission/models.py:189 apps/wei/models.py:77 apps/wei/models.py:134
 msgid "description"
 msgstr "descripción"
 
@@ -104,15 +104,14 @@ msgstr "Lugar donde se organiza la actividad, por ejemplo la Kfet."
 
 #: apps/activity/models.py:83
 #: apps/activity/templates/activity/includes/activity_info.html:22
-#: apps/note/models/notes.py:208 apps/note/models/transactions.py:66
-#: apps/permission/models.py:167
+#: apps/note/models/notes.py:207 apps/note/models/transactions.py:66
+#: apps/permission/models.py:164
 msgid "type"
 msgstr "tipo"
 
 #: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:305
-#: apps/note/models/notes.py:149 apps/treasury/models.py:278
-#: apps/treasury/templates/treasury/sogecredit_detail.html:14
-#: apps/wei/models.py:160 apps/wei/templates/wei/survey.html:15
+#: apps/note/models/notes.py:148 apps/treasury/models.py:283
+#: apps/wei/models.py:165 apps/wei/templates/wei/survey.html:15
 msgid "user"
 msgstr "usuario"
 
@@ -166,7 +165,7 @@ msgid "entry time"
 msgstr "hora de entrada"
 
 #: apps/activity/models.py:178 apps/note/apps.py:14
-#: apps/note/models/notes.py:78
+#: apps/note/models/notes.py:77
 msgid "note"
 msgstr "note"
 
@@ -203,12 +202,14 @@ msgid "The balance is negative."
 msgstr "El saldo es negativo."
 
 #: apps/activity/models.py:240
+#: apps/treasury/templates/treasury/sogecredit_detail.html:14
 msgid "last name"
 msgstr "apellido"
 
 #: apps/activity/models.py:245
 #: apps/member/templates/member/includes/profile_info.html:4
 #: apps/registration/templates/registration/future_profile_detail.html:16
+#: apps/treasury/templates/treasury/sogecredit_detail.html:17
 #: apps/wei/templates/wei/weimembership_form.html:14
 msgid "first name"
 msgstr "nombre"
@@ -249,7 +250,7 @@ msgstr "Entrado el "
 msgid "remove"
 msgstr "quitar"
 
-#: apps/activity/tables.py:80 apps/note/forms.py:68 apps/treasury/models.py:193
+#: apps/activity/tables.py:80 apps/note/forms.py:68 apps/treasury/models.py:197
 msgid "Type"
 msgstr "Tipo"
 
@@ -266,11 +267,11 @@ msgstr "Apellido"
 msgid "First name"
 msgstr "Nombre"
 
-#: apps/activity/tables.py:86 apps/note/models/notes.py:87
+#: apps/activity/tables.py:86 apps/note/models/notes.py:86
 msgid "Note"
 msgstr "Note"
 
-#: apps/activity/tables.py:88 apps/member/tables.py:46
+#: apps/activity/tables.py:88 apps/member/tables.py:49
 msgid "Balance"
 msgstr "Saldo de la cuenta"
 
@@ -283,7 +284,7 @@ msgid "Guest deleted"
 msgstr "Invitados suprimidos"
 
 #: apps/activity/templates/activity/activity_entry.html:14
-#: apps/note/models/transactions.py:256
+#: apps/note/models/transactions.py:257
 #: apps/note/templates/note/transaction_form.html:16
 #: apps/note/templates/note/transaction_form.html:148
 #: note_kfet/templates/base.html:73
@@ -291,13 +292,13 @@ msgid "Transfer"
 msgstr "Transferencia"
 
 #: apps/activity/templates/activity/activity_entry.html:18
-#: apps/note/models/transactions.py:316
+#: apps/note/models/transactions.py:317
 #: apps/note/templates/note/transaction_form.html:21
 msgid "Credit"
 msgstr "Crédito"
 
 #: apps/activity/templates/activity/activity_entry.html:21
-#: apps/note/models/transactions.py:316
+#: apps/note/models/transactions.py:317
 #: apps/note/templates/note/transaction_form.html:25
 msgid "Debit"
 msgstr "Débito"
@@ -436,7 +437,7 @@ msgstr "Logs"
 msgid "IP Address"
 msgstr "Dirección IP"
 
-#: apps/logs/models.py:36 apps/permission/models.py:137
+#: apps/logs/models.py:36 apps/permission/models.py:134
 msgid "model"
 msgstr "modelo"
 
@@ -457,8 +458,8 @@ msgid "create"
 msgstr "crear"
 
 #: apps/logs/models.py:65 apps/note/tables.py:165 apps/note/tables.py:201
-#: apps/permission/models.py:130 apps/treasury/tables.py:38
-#: apps/wei/tables.py:75
+#: apps/permission/models.py:127 apps/treasury/tables.py:38
+#: apps/wei/tables.py:73
 msgid "delete"
 msgstr "suprimir"
 
@@ -497,15 +498,15 @@ msgstr "pago de afiliación (estudiantes pagados)"
 msgid "membership fee (unpaid students)"
 msgstr "pago de afiliación (estudiantes no pagados)"
 
-#: apps/member/admin.py:65 apps/member/models.py:316
+#: apps/member/admin.py:65 apps/member/models.py:317
 msgid "roles"
 msgstr "papel"
 
-#: apps/member/admin.py:66 apps/member/models.py:330
+#: apps/member/admin.py:66 apps/member/models.py:331
 msgid "fee"
 msgstr "pago"
 
-#: apps/member/apps.py:14 apps/wei/tables.py:181 apps/wei/tables.py:212
+#: apps/member/apps.py:14 apps/wei/tables.py:193 apps/wei/tables.py:224
 msgid "member"
 msgstr "miembro"
 
@@ -537,8 +538,8 @@ msgstr "Tamaño máximo : 2Mo"
 msgid "This image cannot be loaded."
 msgstr "Esta imagen no puede ser cargada."
 
-#: apps/member/forms.py:141 apps/member/views.py:100
-#: apps/registration/forms.py:33 apps/registration/views.py:254
+#: apps/member/forms.py:141 apps/member/views.py:101
+#: apps/registration/forms.py:33 apps/registration/views.py:258
 msgid "An alias with a similar name already exists."
 msgstr "Un alias similar ya existe."
 
@@ -584,14 +585,14 @@ msgid "Roles"
 msgstr "Papeles"
 
 #: apps/member/models.py:38
-#: apps/member/templates/member/includes/profile_info.html:34
+#: apps/member/templates/member/includes/profile_info.html:35
 #: apps/registration/templates/registration/future_profile_detail.html:40
 #: apps/wei/templates/wei/weimembership_form.html:44
 msgid "phone number"
 msgstr "número de teléfono"
 
 #: apps/member/models.py:45
-#: apps/member/templates/member/includes/profile_info.html:28
+#: apps/member/templates/member/includes/profile_info.html:29
 #: apps/registration/templates/registration/future_profile_detail.html:34
 #: apps/wei/templates/wei/weimembership_form.html:38
 msgid "section"
@@ -678,14 +679,14 @@ msgid "Year of entry to the school (None if not ENS student)"
 msgstr "Año de ingreso en la escuela (None si no un alumn@ ENS)"
 
 #: apps/member/models.py:83
-#: apps/member/templates/member/includes/profile_info.html:38
+#: apps/member/templates/member/includes/profile_info.html:39
 #: apps/registration/templates/registration/future_profile_detail.html:37
 #: apps/wei/templates/wei/weimembership_form.html:41
 msgid "address"
 msgstr "dirección"
 
 #: apps/member/models.py:90
-#: apps/member/templates/member/includes/profile_info.html:45
+#: apps/member/templates/member/includes/profile_info.html:46
 #: apps/registration/templates/registration/future_profile_detail.html:43
 #: apps/wei/templates/wei/weimembership_form.html:47
 msgid "paid"
@@ -695,7 +696,7 @@ msgstr "pagado"
 msgid "Tells if the user receive a salary."
 msgstr "Indica si el usuario percibe un salario."
 
-#: apps/member/models.py:100 apps/treasury/tables.py:146
+#: apps/member/models.py:100 apps/treasury/tables.py:143
 msgid "No"
 msgstr "No"
 
@@ -757,7 +758,7 @@ msgstr "Active su cuenta Note Kfet"
 
 #: apps/member/models.py:204
 #: apps/member/templates/member/includes/club_info.html:55
-#: apps/member/templates/member/includes/profile_info.html:31
+#: apps/member/templates/member/includes/profile_info.html:32
 #: apps/registration/templates/registration/future_profile_detail.html:22
 #: apps/wei/templates/wei/base.html:70
 #: apps/wei/templates/wei/weimembership_form.html:20
@@ -806,7 +807,7 @@ msgstr ""
 "prorrogarla."
 
 #: apps/member/models.py:286 apps/member/models.py:311
-#: apps/note/models/notes.py:177
+#: apps/note/models/notes.py:176
 msgid "club"
 msgstr "club"
 
@@ -814,41 +815,41 @@ msgstr "club"
 msgid "clubs"
 msgstr "clubs"
 
-#: apps/member/models.py:321
+#: apps/member/models.py:322
 msgid "membership starts on"
 msgstr "afiliación empezá el"
 
-#: apps/member/models.py:325
+#: apps/member/models.py:326
 msgid "membership ends on"
 msgstr "afiliación termina el"
 
-#: apps/member/models.py:421
+#: apps/member/models.py:422
 #, python-brace-format
 msgid "The role {role} does not apply to the club {club}."
 msgstr "El papel {role} no se encuentra en el club {club}."
 
-#: apps/member/models.py:430 apps/member/views.py:646
+#: apps/member/models.py:431 apps/member/views.py:651
 msgid "User is already a member of the club"
 msgstr "Usuario ya esta un miembro del club"
 
-#: apps/member/models.py:442 apps/member/views.py:656
+#: apps/member/models.py:443 apps/member/views.py:661
 msgid "User is not a member of the parent club"
 msgstr "Usuario no es un miembro del club pariente"
 
-#: apps/member/models.py:495
+#: apps/member/models.py:496
 #, python-brace-format
 msgid "Membership of {user} for the club {club}"
 msgstr "Afiliación of {user} for the club {club}"
 
-#: apps/member/models.py:498 apps/note/models/transactions.py:358
+#: apps/member/models.py:499 apps/note/models/transactions.py:389
 msgid "membership"
 msgstr "afiliación"
 
-#: apps/member/models.py:499
+#: apps/member/models.py:500
 msgid "memberships"
 msgstr "afiliaciones"
 
-#: apps/member/tables.py:121
+#: apps/member/tables.py:137
 msgid "Renew"
 msgstr "Prorrogar"
 
@@ -956,8 +957,8 @@ msgstr ""
 "nuevo posibles."
 
 #: apps/member/templates/member/club_alias.html:10
-#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:245
-#: apps/member/views.py:448
+#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:253
+#: apps/member/views.py:456
 msgid "Note aliases"
 msgstr "Alias de la note"
 
@@ -995,7 +996,7 @@ msgid "Filter roles:"
 msgstr "Filtrar los papeles :"
 
 #: apps/member/templates/member/club_members.html:36
-#: apps/wei/templates/wei/weimembership_list.html:17
+#: apps/wei/templates/wei/weimembership_list.html:19
 msgid "There is no membership found with this pattern."
 msgstr "No hay afiliación encontrada con esta entrada."
 
@@ -1013,8 +1014,8 @@ msgid "membership fee"
 msgstr "pago de afiliación"
 
 #: apps/member/templates/member/includes/club_info.html:43
-#: apps/member/templates/member/includes/profile_info.html:42
-#: apps/treasury/templates/treasury/sogecredit_detail.html:18
+#: apps/member/templates/member/includes/profile_info.html:43
+#: apps/treasury/templates/treasury/sogecredit_detail.html:24
 #: apps/wei/templates/wei/base.html:60
 msgid "balance"
 msgstr "saldo de la cuenta"
@@ -1032,6 +1033,7 @@ msgstr "Gestionar los alias"
 
 #: apps/member/templates/member/includes/profile_info.html:7
 #: apps/registration/templates/registration/future_profile_detail.html:19
+#: apps/treasury/templates/treasury/sogecredit_detail.html:20
 #: apps/wei/templates/wei/weimembership_form.html:17
 msgid "username"
 msgstr "nombre de usuario"
@@ -1044,7 +1046,7 @@ msgstr "contraseña"
 msgid "Change password"
 msgstr "Cambiar la contraseña"
 
-#: apps/member/templates/member/includes/profile_info.html:53
+#: apps/member/templates/member/includes/profile_info.html:55
 msgid "API token"
 msgstr "Acceso API"
 
@@ -1096,43 +1098,43 @@ msgstr "Registraciones"
 msgid "This address must be valid."
 msgstr "Este correo tiene que ser valido."
 
-#: apps/member/views.py:137
+#: apps/member/views.py:138
 msgid "Profile detail"
 msgstr "Detalles del usuario"
 
-#: apps/member/views.py:204
+#: apps/member/views.py:205
 msgid "Search user"
 msgstr "Buscar un usuario"
 
-#: apps/member/views.py:265
+#: apps/member/views.py:273
 msgid "Update note picture"
 msgstr "Modificar la imagen de la note"
 
-#: apps/member/views.py:311
+#: apps/member/views.py:319
 msgid "Manage auth token"
 msgstr "Gestionar los token de autentificación"
 
-#: apps/member/views.py:338
+#: apps/member/views.py:346
 msgid "Create new club"
 msgstr "Crear un nuevo club"
 
-#: apps/member/views.py:357
+#: apps/member/views.py:365
 msgid "Search club"
 msgstr "Buscar un club"
 
-#: apps/member/views.py:390
+#: apps/member/views.py:398
 msgid "Club detail"
 msgstr "Detalles del club"
 
-#: apps/member/views.py:471
+#: apps/member/views.py:479
 msgid "Update club"
 msgstr "Modificar el club"
 
-#: apps/member/views.py:505
+#: apps/member/views.py:513
 msgid "Add new member to the club"
 msgstr "Añadir un nuevo miembro al club"
 
-#: apps/member/views.py:637 apps/wei/views.py:928
+#: apps/member/views.py:642 apps/wei/views.py:917
 msgid ""
 "This user don't have enough money to join this club, and can't have a "
 "negative balance."
@@ -1140,20 +1142,14 @@ msgstr ""
 "Este usuario no tiene suficiente dinero para unirse a este club, y no puede "
 "tener un saldo negativo."
 
-#: apps/member/views.py:660
+#: apps/member/views.py:665
 msgid "The membership must start after {:%m-%d-%Y}."
 msgstr "La afiliación tiene que empezar después del {:%d-%m-%Y}."
 
-#: apps/member/views.py:665
+#: apps/member/views.py:670
 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:672 apps/member/views.py:674 apps/member/views.py:676
-#: apps/registration/views.py:304 apps/registration/views.py:306
-#: apps/registration/views.py:308 apps/wei/views.py:933 apps/wei/views.py:937
-msgid "This field is required."
-msgstr "Este campo es obligatorio."
-
 #: apps/member/views.py:816
 msgid "Manage roles of an user in the club"
 msgstr "Gestionar los papeles de un usuario en el club"
@@ -1177,7 +1173,7 @@ msgid "amount"
 msgstr "monto"
 
 #: apps/note/api/serializers.py:183 apps/note/api/serializers.py:189
-#: apps/note/models/transactions.py:227
+#: apps/note/models/transactions.py:228
 msgid ""
 "The transaction can't be saved since the source note or the destination note "
 "is not active."
@@ -1197,7 +1193,7 @@ msgstr "Destino"
 msgid "Reason"
 msgstr "Motivo"
 
-#: apps/note/forms.py:79 apps/treasury/tables.py:139
+#: apps/note/forms.py:79 apps/treasury/tables.py:136
 msgid "Valid"
 msgstr "Valido"
 
@@ -1217,35 +1213,35 @@ msgstr "Creado después"
 msgid "Created before"
 msgstr "Creado antes"
 
-#: apps/note/models/notes.py:32
+#: apps/note/models/notes.py:31
 msgid "account balance"
 msgstr "saldo de la cuenta"
 
-#: apps/note/models/notes.py:33
+#: apps/note/models/notes.py:32
 msgid "in centimes, money credited for this instance"
 msgstr "en céntimos, dinero acreditado por este instancia"
 
-#: apps/note/models/notes.py:38
+#: apps/note/models/notes.py:37
 msgid "last negative date"
 msgstr "última fecha en negativo"
 
-#: apps/note/models/notes.py:39
+#: apps/note/models/notes.py:38
 msgid "last time the balance was negative"
 msgstr "último momento en el cual el saldo estaba negativo"
 
-#: apps/note/models/notes.py:45
+#: apps/note/models/notes.py:44
 msgid "display image"
 msgstr "imagen mostrada"
 
-#: apps/note/models/notes.py:54 apps/note/models/transactions.py:132
+#: apps/note/models/notes.py:53 apps/note/models/transactions.py:132
 msgid "created at"
 msgstr "creada el"
 
-#: apps/note/models/notes.py:59
+#: apps/note/models/notes.py:58
 msgid "active"
 msgstr "activo"
 
-#: apps/note/models/notes.py:62
+#: apps/note/models/notes.py:61
 msgid ""
 "Designates whether this note should be treated as active. Unselect this "
 "instead of deleting notes."
@@ -1253,7 +1249,7 @@ msgstr ""
 "Indica si la note tiene que ser considerada como activa. Desmarcar en vez de "
 "suprimir la note."
 
-#: apps/note/models/notes.py:69
+#: apps/note/models/notes.py:68
 msgid ""
 "The user blocked his/her note manually, eg. when he/she left the school for "
 "holidays. It can be reactivated at any time."
@@ -1261,54 +1257,54 @@ msgstr ""
 "El usuario bloqueó su note, por ejemplo cuando se fue de vacaciones. Puede "
 "ser desbloqueada en cualquier momento."
 
-#: apps/note/models/notes.py:71
+#: apps/note/models/notes.py:70
 msgid "The note is blocked by the the BDE and can't be manually reactivated."
 msgstr ""
 "La note esta bloqueada por el BDE y no puede ser desbloqueada por el usuario."
 
-#: apps/note/models/notes.py:79
+#: apps/note/models/notes.py:78
 msgid "notes"
 msgstr "notes"
 
-#: apps/note/models/notes.py:133
+#: apps/note/models/notes.py:132
 msgid "This alias is already taken."
 msgstr "Este alias ya esta utilizado."
 
-#: apps/note/models/notes.py:153
+#: apps/note/models/notes.py:152
 msgid "one's note"
 msgstr "note de un usuario"
 
-#: apps/note/models/notes.py:154
+#: apps/note/models/notes.py:153
 msgid "users note"
 msgstr "notes de los usuarios"
 
-#: apps/note/models/notes.py:160
+#: apps/note/models/notes.py:159
 #, python-format
 msgid "%(user)s's note"
 msgstr "Note de %(user)s"
 
-#: apps/note/models/notes.py:181
+#: apps/note/models/notes.py:180
 msgid "club note"
 msgstr "note de un club"
 
-#: apps/note/models/notes.py:182
+#: apps/note/models/notes.py:181
 msgid "clubs notes"
 msgstr "notes de los clubs"
 
-#: apps/note/models/notes.py:188
+#: apps/note/models/notes.py:187
 #, python-format
 msgid "Note of %(club)s club"
 msgstr "Note del club %(club)s"
 
-#: apps/note/models/notes.py:214
+#: apps/note/models/notes.py:213
 msgid "special note"
 msgstr "note especial"
 
-#: apps/note/models/notes.py:215
+#: apps/note/models/notes.py:214
 msgid "special notes"
 msgstr "notes especiales"
 
-#: apps/note/models/notes.py:238
+#: apps/note/models/notes.py:237
 msgid "Invalid alias"
 msgstr "Alias inválido"
 
@@ -1385,7 +1381,7 @@ msgid "transaction"
 msgstr "transacción"
 
 #: apps/note/models/transactions.py:162
-#: apps/treasury/templates/treasury/sogecredit_detail.html:22
+#: apps/treasury/templates/treasury/sogecredit_detail.html:28
 msgid "transactions"
 msgstr "transacciones"
 
@@ -1406,33 +1402,33 @@ msgstr ""
 "El saldo de la note tiene que ser entre - 92 233 720 368 547 758.08 € y 92 "
 "233 720 368 547 758.07 €."
 
-#: apps/note/models/transactions.py:276
+#: apps/note/models/transactions.py:277
 msgid ""
 "The destination of this transaction must equal to the destination of the "
 "template."
 msgstr ""
 
-#: apps/note/models/transactions.py:286
+#: apps/note/models/transactions.py:287
 msgid "Template"
 msgstr ""
 
-#: apps/note/models/transactions.py:289
+#: apps/note/models/transactions.py:290
 msgid "recurrent transaction"
 msgstr ""
 
-#: apps/note/models/transactions.py:290
+#: apps/note/models/transactions.py:291
 msgid "recurrent transactions"
 msgstr ""
 
-#: apps/note/models/transactions.py:305
+#: apps/note/models/transactions.py:306
 msgid "first_name"
 msgstr "nombre"
 
-#: apps/note/models/transactions.py:310
+#: apps/note/models/transactions.py:311
 msgid "bank"
 msgstr "banco"
 
-#: apps/note/models/transactions.py:327
+#: apps/note/models/transactions.py:328
 msgid ""
 "A special transaction is only possible between a Note associated to a "
 "payment method and a User or a Club"
@@ -1440,19 +1436,25 @@ msgstr ""
 "Una transacción especial solo esta disponible entre una note de un modo de "
 "pago y un usuario o un club"
 
-#: apps/note/models/transactions.py:336
+#: apps/note/models/transactions.py:355 apps/note/models/transactions.py:358
+#: apps/note/models/transactions.py:361 apps/wei/views.py:922
+#: apps/wei/views.py:926
+msgid "This field is required."
+msgstr "Este campo es obligatorio."
+
+#: apps/note/models/transactions.py:367
 msgid "Special transaction"
 msgstr "Transacción especial"
 
-#: apps/note/models/transactions.py:337
+#: apps/note/models/transactions.py:368
 msgid "Special transactions"
 msgstr "Transacciones especiales"
 
-#: apps/note/models/transactions.py:353
+#: apps/note/models/transactions.py:384
 msgid "membership transaction"
 msgstr "transacción de afiliación"
 
-#: apps/note/models/transactions.py:354 apps/treasury/models.py:284
+#: apps/note/models/transactions.py:385 apps/treasury/models.py:289
 msgid "membership transactions"
 msgstr "transacciones de afiliación"
 
@@ -1470,14 +1472,14 @@ msgstr "Ningún motivo dado"
 
 #: apps/note/tables.py:169 apps/note/tables.py:203 apps/treasury/tables.py:39
 #: apps/treasury/templates/treasury/invoice_confirm_delete.html:30
-#: apps/treasury/templates/treasury/sogecredit_detail.html:59
-#: apps/wei/tables.py:76 apps/wei/tables.py:103
+#: apps/treasury/templates/treasury/sogecredit_detail.html:65
+#: apps/wei/tables.py:74 apps/wei/tables.py:114
 #: apps/wei/templates/wei/weiregistration_confirm_delete.html:31
 msgid "Delete"
 msgstr "Suprimir"
 
 #: apps/note/tables.py:197 apps/note/templates/note/conso_form.html:132
-#: apps/wei/tables.py:47 apps/wei/tables.py:48
+#: apps/wei/tables.py:48 apps/wei/tables.py:49
 #: apps/wei/templates/wei/base.html:89
 #: apps/wei/templates/wei/bus_detail.html:20
 #: apps/wei/templates/wei/busteam_detail.html:20
@@ -1556,13 +1558,13 @@ msgstr "Acción"
 
 #: apps/note/templates/note/transaction_form.html:112
 #: apps/treasury/forms.py:136 apps/treasury/tables.py:67
-#: apps/treasury/tables.py:135
+#: apps/treasury/tables.py:132
 #: apps/treasury/templates/treasury/remittance_form.html:23
 msgid "Amount"
 msgstr "Monto"
 
 #: apps/note/templates/note/transaction_form.html:128
-#: apps/treasury/models.py:51
+#: apps/treasury/models.py:52
 msgid "Name"
 msgstr "Nombre"
 
@@ -1642,53 +1644,53 @@ msgstr "Usted no puede ver ningún botón."
 msgid "Search transactions"
 msgstr "Buscar transacciones"
 
-#: apps/permission/models.py:92
+#: apps/permission/models.py:89
 #, python-brace-format
 msgid "Can {type} {model}.{field} in {query}"
 msgstr ""
 
-#: apps/permission/models.py:94
+#: apps/permission/models.py:91
 #, python-brace-format
 msgid "Can {type} {model} in {query}"
 msgstr ""
 
-#: apps/permission/models.py:107
+#: apps/permission/models.py:104
 msgid "rank"
 msgstr "posición"
 
-#: apps/permission/models.py:120
+#: apps/permission/models.py:117
 msgid "permission mask"
 msgstr "antifaz de permisos"
 
-#: apps/permission/models.py:121
+#: apps/permission/models.py:118
 msgid "permission masks"
 msgstr "antifaces de permisos"
 
-#: apps/permission/models.py:127
+#: apps/permission/models.py:124
 msgid "add"
 msgstr "añadir"
 
-#: apps/permission/models.py:128
+#: apps/permission/models.py:125
 msgid "view"
 msgstr "ver"
 
-#: apps/permission/models.py:129
+#: apps/permission/models.py:126
 msgid "change"
 msgstr "cambiar"
 
-#: apps/permission/models.py:161
+#: apps/permission/models.py:158
 msgid "query"
 msgstr "consulta"
 
-#: apps/permission/models.py:174
+#: apps/permission/models.py:171
 msgid "mask"
 msgstr "antifaz"
 
-#: apps/permission/models.py:180
+#: apps/permission/models.py:177
 msgid "field"
 msgstr "campo"
 
-#: apps/permission/models.py:185
+#: apps/permission/models.py:182
 msgid ""
 "Tells if the permission should be granted even if the membership of the user "
 "is expired."
@@ -1696,30 +1698,30 @@ msgstr ""
 "Indica si el permiso tiene que ser dado aunque la afiliación del usuario "
 "terminó."
 
-#: apps/permission/models.py:186
+#: apps/permission/models.py:183
 #: apps/permission/templates/permission/all_rights.html:89
 msgid "permanent"
 msgstr "permanente"
 
-#: apps/permission/models.py:197
+#: apps/permission/models.py:194
 msgid "permission"
 msgstr "permiso"
 
-#: apps/permission/models.py:198 apps/permission/models.py:338
+#: apps/permission/models.py:195 apps/permission/models.py:335
 msgid "permissions"
 msgstr "permisos"
 
-#: apps/permission/models.py:203
+#: apps/permission/models.py:200
 msgid "Specifying field applies only to view and change permission types."
 msgstr ""
 "Especifica el campo interesado, solo funciona para los permisos view y "
 "change."
 
-#: apps/permission/models.py:343
+#: apps/permission/models.py:340
 msgid "for club"
 msgstr "interesa el club"
 
-#: apps/permission/models.py:353 apps/permission/models.py:354
+#: apps/permission/models.py:350 apps/permission/models.py:351
 msgid "role permissions"
 msgstr "permisos por papeles"
 
@@ -1732,7 +1734,7 @@ msgstr ""
 "Usted no tiene permiso a cambiar el campo {field} on this instance of model "
 "{app_label}.{model_name}."
 
-#: apps/permission/signals.py:73 apps/permission/views.py:103
+#: apps/permission/signals.py:73 apps/permission/views.py:105
 #, python-brace-format
 msgid ""
 "You don't have the permission to add an instance of model {app_label}."
@@ -1792,25 +1794,25 @@ msgstr "Consulta :"
 msgid "No associated permission"
 msgstr "No hay permiso relacionado"
 
-#: apps/permission/views.py:70
+#: apps/permission/views.py:72
 #, python-brace-format
 msgid ""
 "You don't have the permission to update this instance of the model "
 "\"{model}\" with these parameters. Please correct your data and retry."
 msgstr ""
 
-#: apps/permission/views.py:74
+#: apps/permission/views.py:76
 #, python-brace-format
 msgid ""
 "You don't have the permission to create an instance of the model \"{model}\" "
 "with these parameters. Please correct your data and retry."
 msgstr ""
 
-#: apps/permission/views.py:110 note_kfet/templates/base.html:109
+#: apps/permission/views.py:112 note_kfet/templates/base.html:109
 msgid "Rights"
 msgstr "Permisos"
 
-#: apps/permission/views.py:115
+#: apps/permission/views.py:117
 msgid "All rights"
 msgstr "Todos los permisos"
 
@@ -1999,18 +2001,18 @@ msgstr "Usuarios con afiliación pendiente"
 msgid "Registration detail"
 msgstr "Detalles de la afiliación"
 
-#: apps/registration/views.py:273
+#: apps/registration/views.py:278
 msgid "You must join the BDE."
 msgstr "Usted tiene que afiliarse al BDE."
 
-#: apps/registration/views.py:297
+#: apps/registration/views.py:302
 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:384
+#: apps/registration/views.py:383
 msgid "Invalidate pre-registration"
 msgstr "Invalidar la afiliación"
 
@@ -2018,7 +2020,7 @@ msgstr "Invalidar la afiliación"
 msgid "Treasury"
 msgstr "Tesorería"
 
-#: apps/treasury/forms.py:25 apps/treasury/models.py:90
+#: apps/treasury/forms.py:25 apps/treasury/models.py:91
 #: 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."
@@ -2031,7 +2033,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:124 apps/treasury/models.py:260
+#: apps/treasury/forms.py:124 apps/treasury/models.py:265
 #: 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
@@ -2043,120 +2045,120 @@ msgstr "Descuento"
 msgid "No attached remittance"
 msgstr "No hay descuento relacionado"
 
-#: apps/treasury/models.py:23
+#: apps/treasury/models.py:24
 msgid "Invoice identifier"
 msgstr "Numero de factura"
 
-#: apps/treasury/models.py:37
+#: apps/treasury/models.py:38
 msgid "BDE"
 msgstr "BDE"
 
-#: apps/treasury/models.py:42
+#: apps/treasury/models.py:43
 msgid "Object"
 msgstr "Asunto"
 
-#: apps/treasury/models.py:46
+#: apps/treasury/models.py:47
 msgid "Description"
 msgstr "Descripción"
 
-#: apps/treasury/models.py:55
+#: apps/treasury/models.py:56
 msgid "Address"
 msgstr "Dirección"
 
-#: apps/treasury/models.py:60 apps/treasury/models.py:187
+#: apps/treasury/models.py:61 apps/treasury/models.py:191
 msgid "Date"
 msgstr "Fecha"
 
-#: apps/treasury/models.py:64
+#: apps/treasury/models.py:65
 msgid "Acquitted"
 msgstr "Pagada"
 
-#: apps/treasury/models.py:69
+#: apps/treasury/models.py:70
 msgid "Locked"
 msgstr "Bloqueada"
 
-#: apps/treasury/models.py:70
+#: apps/treasury/models.py:71
 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:76
+#: apps/treasury/models.py:77
 msgid "tex source"
 msgstr "código fuente TeX"
 
-#: apps/treasury/models.py:110 apps/treasury/models.py:126
+#: apps/treasury/models.py:111 apps/treasury/models.py:127
 msgid "invoice"
 msgstr "factura"
 
-#: apps/treasury/models.py:111
+#: apps/treasury/models.py:112
 msgid "invoices"
 msgstr "facturas"
 
-#: apps/treasury/models.py:114
+#: apps/treasury/models.py:115
 #, python-brace-format
 msgid "Invoice #{id}"
 msgstr "Factura n°{id}"
 
-#: apps/treasury/models.py:131
+#: apps/treasury/models.py:132
 msgid "Designation"
 msgstr "Designación"
 
-#: apps/treasury/models.py:135
+#: apps/treasury/models.py:138
 msgid "Quantity"
 msgstr "Cantidad"
 
-#: apps/treasury/models.py:139
+#: apps/treasury/models.py:143
 msgid "Unit price"
 msgstr "Precio unitario"
 
-#: apps/treasury/models.py:155
+#: apps/treasury/models.py:159
 msgid "product"
 msgstr "producto"
 
-#: apps/treasury/models.py:156
+#: apps/treasury/models.py:160
 msgid "products"
 msgstr "productos"
 
-#: apps/treasury/models.py:176
+#: apps/treasury/models.py:180
 msgid "remittance type"
 msgstr "tipo de descuento"
 
-#: apps/treasury/models.py:177
+#: apps/treasury/models.py:181
 msgid "remittance types"
 msgstr "tipos de descuentos"
 
-#: apps/treasury/models.py:198
+#: apps/treasury/models.py:202
 msgid "Comment"
 msgstr "Comentario"
 
-#: apps/treasury/models.py:203
+#: apps/treasury/models.py:207
 msgid "Closed"
 msgstr "Cerrada"
 
-#: apps/treasury/models.py:207
+#: apps/treasury/models.py:211
 msgid "remittance"
 msgstr "descuento"
 
-#: apps/treasury/models.py:208
+#: apps/treasury/models.py:212
 msgid "remittances"
 msgstr "descuentos"
 
-#: apps/treasury/models.py:241
+#: apps/treasury/models.py:245
 msgid "Remittance #{:d}: {}"
 msgstr "Descuento n°{:d} : {}"
 
-#: apps/treasury/models.py:264
+#: apps/treasury/models.py:269
 msgid "special transaction proxy"
 msgstr "proxy de transacción especial"
 
-#: apps/treasury/models.py:265
+#: apps/treasury/models.py:270
 msgid "special transaction proxies"
 msgstr "proxys de transacciones especiales"
 
-#: apps/treasury/models.py:290
+#: apps/treasury/models.py:295
 msgid "credit transaction"
 msgstr "transacción de crédito"
 
-#: apps/treasury/models.py:374
+#: apps/treasury/models.py:379
 msgid ""
 "This user doesn't have enough money to pay the memberships with its note. "
 "Please ask her/him to credit the note before invalidating this credit."
@@ -2165,16 +2167,16 @@ msgstr ""
 "afiliaciones. Por favor pídelo acreditar su note antes de invalidar este "
 "crédito."
 
-#: apps/treasury/models.py:389
+#: apps/treasury/models.py:399
 #: 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:390
+#: apps/treasury/models.py:400
 msgid "Credits from the Société générale"
 msgstr "Créditos de la Société Générale"
 
-#: apps/treasury/models.py:393
+#: apps/treasury/models.py:403
 #, python-brace-format
 msgid "Soge credit for {user}"
 msgstr "Crédito de la Société Générale para {user}"
@@ -2198,7 +2200,7 @@ msgstr "Cantidad de transacciones"
 msgid "View"
 msgstr "Ver"
 
-#: apps/treasury/tables.py:146
+#: apps/treasury/tables.py:143
 msgid "Yes"
 msgstr "Sí"
 
@@ -2301,11 +2303,11 @@ msgstr "Descuentos cerrados"
 msgid "There is no closed remittance yet."
 msgstr "Por ahora no hay descuentos cerrados."
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:29
+#: apps/treasury/templates/treasury/sogecredit_detail.html:35
 msgid "total amount"
 msgstr "monto total"
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:35
+#: apps/treasury/templates/treasury/sogecredit_detail.html:41
 msgid ""
 "Warning: Validating this credit implies that all membership transactions "
 "will be validated."
@@ -2313,7 +2315,7 @@ msgstr ""
 "Cuidado : Validar este crédito implica que las transacciones de afiliación "
 "serán validadas."
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:36
+#: apps/treasury/templates/treasury/sogecredit_detail.html:42
 msgid ""
 "If you delete this credit, there all membership transactions will be also "
 "validated, but no credit will be operated."
@@ -2321,7 +2323,7 @@ msgstr ""
 "Si suprime este crédito, todas las transacciones de afiliación serán "
 "validadas, pero ningún crédito tendrá lugar."
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:37
+#: apps/treasury/templates/treasury/sogecredit_detail.html:43
 msgid ""
 "If this credit is validated, then the user won't be able to ask for a credit "
 "from the Société générale."
@@ -2329,15 +2331,15 @@ msgstr ""
 "Si este crédito es validado, pues el usuario no podrá pedir más crédito de "
 "la Société Générale."
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:38
+#: apps/treasury/templates/treasury/sogecredit_detail.html:44
 msgid "If you think there is an error, please contact the \"respos info\"."
 msgstr "Si usted cree que hay un error, por favor contacte un \"respo info\"."
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:44
+#: apps/treasury/templates/treasury/sogecredit_detail.html:50
 msgid "This credit is already validated."
 msgstr "Este crédito ya fue validado."
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:49
+#: apps/treasury/templates/treasury/sogecredit_detail.html:55
 msgid ""
 "Warning: if you don't validate this credit, the note of the user doesn't "
 "have enough money to pay its memberships."
@@ -2345,17 +2347,17 @@ msgstr ""
 "Cuidado : si no valida este crédito, la note del usuario no tiene suficiente "
 "dinero para pagar sus afiliaciones."
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:50
+#: apps/treasury/templates/treasury/sogecredit_detail.html:56
 msgid "Please ask the user to credit its note before deleting this credit."
 msgstr ""
 "Por favor pide al usuario acreditar su note antes de suprimir este crédito."
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:57
-#: apps/wei/tables.py:59 apps/wei/tables.py:60 apps/wei/tables.py:99
+#: apps/treasury/templates/treasury/sogecredit_detail.html:63
+#: apps/wei/tables.py:59 apps/wei/tables.py:101
 msgid "Validate"
 msgstr "Validar"
 
-#: apps/treasury/templates/treasury/sogecredit_detail.html:65
+#: apps/treasury/templates/treasury/sogecredit_detail.html:71
 msgid "Return to credit list"
 msgstr "Regresar a la lista de los créditos"
 
@@ -2410,13 +2412,13 @@ msgid "Manage credits from the Société générale"
 msgstr "Gestionar los créditos de la Société Générale"
 
 #: apps/wei/apps.py:10 apps/wei/models.py:49 apps/wei/models.py:50
-#: apps/wei/models.py:61 apps/wei/models.py:167
+#: apps/wei/models.py:61 apps/wei/models.py:172
 #: note_kfet/templates/base.html:103
 msgid "WEI"
 msgstr "WEI"
 
-#: apps/wei/forms/registration.py:51 apps/wei/models.py:113
-#: apps/wei/models.py:283
+#: apps/wei/forms/registration.py:51 apps/wei/models.py:118
+#: apps/wei/models.py:315
 msgid "bus"
 msgstr "bus"
 
@@ -2442,7 +2444,7 @@ msgstr ""
 "electrón libre)"
 
 #: apps/wei/forms/registration.py:67 apps/wei/forms/registration.py:77
-#: apps/wei/models.py:148
+#: apps/wei/models.py:153
 msgid "WEI Roles"
 msgstr "Papeles en el WEI"
 
@@ -2454,7 +2456,7 @@ msgstr "Elegir los papeles que le interesa."
 msgid "This team doesn't belong to the given bus."
 msgstr "Este equipo no pertenece al bus dado."
 
-#: apps/wei/forms/surveys/wei2020.py:30
+#: apps/wei/forms/surveys/wei2021.py:31
 msgid "Choose a word:"
 msgstr "Elegir una palabra :"
 
@@ -2470,105 +2472,111 @@ msgstr "fecha de inicio"
 msgid "date end"
 msgstr "fecha de fin"
 
-#: apps/wei/models.py:77
+#: apps/wei/models.py:70
+#, fuzzy
+#| msgid "The user joined the bus"
+msgid "seat count in the bus"
+msgstr "El usuario se queda con el bus"
+
+#: apps/wei/models.py:82
 msgid "survey information"
 msgstr "informaciones sobre el cuestionario"
 
-#: apps/wei/models.py:78
+#: apps/wei/models.py:83
 msgid "Information about the survey for new members, encoded in JSON"
 msgstr ""
 "Informaciones sobre el cuestionario para los nuevos miembros, registrado en "
 "JSON"
 
-#: apps/wei/models.py:100
+#: apps/wei/models.py:105
 msgid "Bus"
 msgstr "Bus"
 
-#: apps/wei/models.py:101 apps/wei/templates/wei/weiclub_detail.html:51
+#: apps/wei/models.py:106 apps/wei/templates/wei/weiclub_detail.html:51
 msgid "Buses"
 msgstr "Bus"
 
-#: apps/wei/models.py:122
+#: apps/wei/models.py:127
 msgid "color"
 msgstr "color"
 
-#: apps/wei/models.py:123
+#: apps/wei/models.py:128
 msgid "The color of the T-Shirt, stored with its number equivalent"
 msgstr "El color de la camiseta, registrado con su número equivalente"
 
-#: apps/wei/models.py:137
+#: apps/wei/models.py:142
 msgid "Bus team"
 msgstr "Equipo de bus"
 
-#: apps/wei/models.py:138
+#: apps/wei/models.py:143
 msgid "Bus teams"
 msgstr "Equipos de bus"
 
-#: apps/wei/models.py:147
+#: apps/wei/models.py:152
 msgid "WEI Role"
 msgstr "Papeles en el WEI"
 
-#: apps/wei/models.py:172
+#: apps/wei/models.py:177
 msgid "Credit from Société générale"
 msgstr "Crédito de la Société Générale"
 
-#: apps/wei/models.py:177
+#: apps/wei/models.py:182
 msgid "Caution check given"
 msgstr "Cheque de garantía dado"
 
-#: apps/wei/models.py:181 apps/wei/templates/wei/weimembership_form.html:64
+#: apps/wei/models.py:186 apps/wei/templates/wei/weimembership_form.html:64
 msgid "birth date"
 msgstr "fecha de nacimiento"
 
-#: apps/wei/models.py:187 apps/wei/models.py:197
+#: apps/wei/models.py:192 apps/wei/models.py:202
 msgid "Male"
 msgstr "Hombre"
 
-#: apps/wei/models.py:188 apps/wei/models.py:198
+#: apps/wei/models.py:193 apps/wei/models.py:203
 msgid "Female"
 msgstr "Mujer"
 
-#: apps/wei/models.py:189
+#: apps/wei/models.py:194
 msgid "Non binary"
 msgstr "No binari@"
 
-#: apps/wei/models.py:191 apps/wei/templates/wei/weimembership_form.html:55
+#: apps/wei/models.py:196 apps/wei/templates/wei/weimembership_form.html:55
 msgid "gender"
 msgstr "género"
 
-#: apps/wei/models.py:200 apps/wei/templates/wei/weimembership_form.html:58
+#: apps/wei/models.py:205 apps/wei/templates/wei/weimembership_form.html:58
 msgid "clothing cut"
 msgstr "forma de ropa"
 
-#: apps/wei/models.py:213 apps/wei/templates/wei/weimembership_form.html:61
+#: apps/wei/models.py:218 apps/wei/templates/wei/weimembership_form.html:61
 msgid "clothing size"
 msgstr "medida de ropa"
 
-#: apps/wei/models.py:219 apps/wei/templates/wei/weimembership_form.html:67
+#: apps/wei/models.py:224 apps/wei/templates/wei/weimembership_form.html:67
 msgid "health issues"
 msgstr "problemas de salud"
 
-#: apps/wei/models.py:224 apps/wei/templates/wei/weimembership_form.html:70
+#: apps/wei/models.py:229 apps/wei/templates/wei/weimembership_form.html:70
 msgid "emergency contact name"
 msgstr "nombre del contacto de emergencia"
 
-#: apps/wei/models.py:229 apps/wei/templates/wei/weimembership_form.html:73
+#: apps/wei/models.py:234 apps/wei/templates/wei/weimembership_form.html:73
 msgid "emergency contact phone"
 msgstr "teléfono del contacto de emergencia"
 
-#: apps/wei/models.py:234 apps/wei/templates/wei/weimembership_form.html:52
+#: apps/wei/models.py:239 apps/wei/templates/wei/weimembership_form.html:52
 msgid "first year"
 msgstr "primer año"
 
-#: apps/wei/models.py:235
+#: apps/wei/models.py:240
 msgid "Tells if the user is new in the school."
 msgstr "Indica si el usuario es nuevo en la escuela."
 
-#: apps/wei/models.py:240
+#: apps/wei/models.py:245
 msgid "registration information"
 msgstr "informaciones sobre la afiliación"
 
-#: apps/wei/models.py:241
+#: apps/wei/models.py:246
 msgid ""
 "Information about the registration (buses for old members, survey for the "
 "new members), encoded in JSON"
@@ -2576,44 +2584,58 @@ msgstr ""
 "Informaciones sobre la afiliacion (bus para miembros ancianos, cuestionario "
 "para los nuevos miembros), registrado en JSON"
 
-#: apps/wei/models.py:272
+#: apps/wei/models.py:304
 msgid "WEI User"
 msgstr "Participante WEI"
 
-#: apps/wei/models.py:273
+#: apps/wei/models.py:305
 msgid "WEI Users"
 msgstr "Participantes WEI"
 
-#: apps/wei/models.py:293
+#: apps/wei/models.py:325
 msgid "team"
 msgstr "equipo"
 
-#: apps/wei/models.py:303
+#: apps/wei/models.py:335
 msgid "WEI registration"
 msgstr "Apuntación al WEI"
 
-#: apps/wei/models.py:307
+#: apps/wei/models.py:339
 msgid "WEI membership"
 msgstr "Afiliación al WEI"
 
-#: apps/wei/models.py:308
+#: apps/wei/models.py:340
 msgid "WEI memberships"
 msgstr "Afiliaciones al WEI"
 
-#: apps/wei/tables.py:127
+#: apps/wei/tables.py:104
+msgid "The user does not have enough money."
+msgstr ""
+
+#: apps/wei/tables.py:107
+#, fuzzy
+#| msgid ""
+#| "The note has enough money (%(pretty_fee)s required), the registration is "
+#| "possible."
+msgid "The user has enough money, you can validate the registration."
+msgstr ""
+"La note tiene suficiente dinero (%(pretty_fee)s pedidos), la afiliación es "
+"posible."
+
+#: apps/wei/tables.py:139
 msgid "Year"
 msgstr "Año"
 
-#: apps/wei/tables.py:165 apps/wei/templates/wei/bus_detail.html:32
+#: apps/wei/tables.py:177 apps/wei/templates/wei/bus_detail.html:32
 #: apps/wei/templates/wei/busteam_detail.html:50
 msgid "Teams"
 msgstr "Equipos"
 
-#: apps/wei/tables.py:174 apps/wei/tables.py:215
+#: apps/wei/tables.py:186 apps/wei/tables.py:227
 msgid "Members count"
 msgstr "Número de miembros"
 
-#: apps/wei/tables.py:181 apps/wei/tables.py:212
+#: apps/wei/tables.py:193 apps/wei/tables.py:224
 msgid "members"
 msgstr "miembros"
 
@@ -2633,11 +2655,11 @@ msgstr "Pago de entrada del WEI (estudiantes no pagados)"
 msgid "WEI list"
 msgstr "Lista de los WEI"
 
-#: apps/wei/templates/wei/base.html:81 apps/wei/views.py:508
+#: apps/wei/templates/wei/base.html:81 apps/wei/views.py:510
 msgid "Register 1A"
 msgstr "Apuntar un 1A"
 
-#: apps/wei/templates/wei/base.html:85 apps/wei/views.py:576
+#: apps/wei/templates/wei/base.html:85 apps/wei/views.py:578
 msgid "Register 2A+"
 msgstr "Apuntar un 2A+"
 
@@ -2660,14 +2682,14 @@ msgstr "Miembros"
 
 #: apps/wei/templates/wei/bus_detail.html:54
 #: apps/wei/templates/wei/busteam_detail.html:60
-#: apps/wei/templates/wei/weimembership_list.html:29
+#: apps/wei/templates/wei/weimembership_list.html:31
 msgid "View as PDF"
 msgstr "Descargar un PDF"
 
 #: apps/wei/templates/wei/survey.html:11
 #: apps/wei/templates/wei/survey_closed.html:11
-#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:984
-#: apps/wei/views.py:1039 apps/wei/views.py:1049
+#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:973
+#: apps/wei/views.py:1028 apps/wei/views.py:1038
 msgid "Survey WEI"
 msgstr "Cuestionario WEI"
 
@@ -2823,7 +2845,7 @@ msgstr ""
 "Este usuario no es miembro del club Kfet por el año que viene. La afiliación "
 "será hecha automáticamente, la afiliación al WEI incluye el pago de los dos."
 
-#: apps/wei/templates/wei/weimembership_list.html:23
+#: apps/wei/templates/wei/weimembership_list.html:27
 msgid "View unvalidated registrations..."
 msgstr "Ver las inscripciones no validadas..."
 
@@ -2840,11 +2862,11 @@ msgstr ""
 "¿ Usted está seguro que quiere suprimir la inscripción de %(user)s para el "
 "WEI %(wei_name)s ? Este acto es definitivo."
 
-#: apps/wei/templates/wei/weiregistration_list.html:17
+#: apps/wei/templates/wei/weiregistration_list.html:19
 msgid "There is no pre-registration found with this pattern."
 msgstr "No hay pre-inscripción encontrada con esta entrada."
 
-#: apps/wei/templates/wei/weiregistration_list.html:23
+#: apps/wei/templates/wei/weiregistration_list.html:27
 msgid "View validated memberships..."
 msgstr "Ver las inscripciones validadas..."
 
@@ -2884,77 +2906,73 @@ msgstr "Añadir un bus"
 msgid "Update bus"
 msgstr "Modificar el bus"
 
-#: apps/wei/views.py:364
+#: apps/wei/views.py:366
 msgid "Manage bus"
 msgstr "Gestionar el bus"
 
-#: apps/wei/views.py:391
+#: apps/wei/views.py:393
 msgid "Create new team"
 msgstr "Añadir un equipo"
 
-#: apps/wei/views.py:431
+#: apps/wei/views.py:433
 msgid "Update team"
 msgstr "Modificar el equipo"
 
-#: apps/wei/views.py:462
+#: apps/wei/views.py:464
 msgid "Manage WEI team"
 msgstr "Gestionar el equipo"
 
-#: apps/wei/views.py:484
+#: apps/wei/views.py:486
 msgid "Register first year student to the WEI"
 msgstr "Registrar un 1A al WEI"
 
-#: apps/wei/views.py:530 apps/wei/views.py:611
+#: apps/wei/views.py:532 apps/wei/views.py:613
 msgid "This user is already registered to this WEI."
 msgstr "Este usuario ya afilió a este WEI."
 
-#: apps/wei/views.py:535
+#: apps/wei/views.py:537
 msgid ""
 "This user can't be in her/his first year since he/she has already "
 "participated to a WEI."
 msgstr "Este usuario no puede ser un 1A porque ya participó en un WEI."
 
-#: apps/wei/views.py:552
+#: apps/wei/views.py:554
 msgid "Register old student to the WEI"
 msgstr "Registrar un 2A+ al WEI"
 
-#: apps/wei/views.py:595 apps/wei/views.py:684
+#: apps/wei/views.py:597 apps/wei/views.py:686
 msgid "You already opened an account in the Société générale."
 msgstr "Usted ya abrió una cuenta a la Société Générale."
 
-#: apps/wei/views.py:641
+#: apps/wei/views.py:643
 msgid "Update WEI Registration"
 msgstr "Modificar la inscripción WEI"
 
-#: apps/wei/views.py:744
+#: apps/wei/views.py:746
 msgid "Delete WEI registration"
 msgstr "Suprimir la inscripción WEI"
 
-#: apps/wei/views.py:755
+#: apps/wei/views.py:757
 msgid "You don't have the right to delete this WEI registration."
 msgstr "Usted no tiene derecho a suprimir esta inscripción WEI."
 
-#: apps/wei/views.py:774
+#: apps/wei/views.py:776
 msgid "Validate WEI registration"
 msgstr "Validar la inscripción WEI"
 
-#: apps/wei/views.py:922
-msgid "This user didn't give her/his caution check."
-msgstr "Este usuario no dio su cheque de garantía."
-
-#: note_kfet/settings/base.py:157
+#: note_kfet/settings/base.py:161
 msgid "German"
 msgstr "Alemán"
 
-#: note_kfet/settings/base.py:158
+#: note_kfet/settings/base.py:162
 msgid "English"
 msgstr "Ingles"
 
-#: note_kfet/settings/base.py:159
+#: note_kfet/settings/base.py:163
 msgid "Spanish"
 msgstr "Español"
 
-#: note_kfet/settings/base.py:160
+#: note_kfet/settings/base.py:164
 msgid "French"
 msgstr "Francés"
 
@@ -3051,7 +3069,7 @@ msgstr "Registrar"
 msgid "Log in"
 msgstr "Conectarse"
 
-#: note_kfet/templates/base.html:156
+#: note_kfet/templates/base.html:160
 msgid ""
 "You are not a BDE member anymore. Please renew your membership if you want "
 "to use the note."
@@ -3059,11 +3077,11 @@ msgstr ""
 "Usted ya no está miembro del BDE. Por favor renueva su afiliación si quiere "
 "usar la note."
 
-#: note_kfet/templates/base.html:160
+#: note_kfet/templates/base.html:164
 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."
 
-#: note_kfet/templates/base.html:166
+#: note_kfet/templates/base.html:170
 msgid ""
 "Your e-mail address is not validated. Please check your mail inbox and click "
 "on the validation link."
@@ -3071,7 +3089,7 @@ msgstr ""
 "Su correo electrónico no fue validado. Por favor mire en sus correos y haga "
 "clic en el enlace de validación."
 
-#: note_kfet/templates/base.html:171
+#: note_kfet/templates/base.html:176
 msgid ""
 "You declared that you opened a bank account in the Société générale. The "
 "bank did not validate the creation of the account to the BDE, so the "
@@ -3084,7 +3102,7 @@ msgstr ""
 "afiliación no está pagada. El proceso de convalidación puede durar unos "
 "días. Por favor comprueba que fue hasta el final de la creación de la cuenta."
 
-#: note_kfet/templates/base.html:194
+#: note_kfet/templates/base.html:199
 msgid "Contact us"
 msgstr "Contactarnos"
 
@@ -3204,6 +3222,9 @@ msgstr ""
 "pagar su afiliación. Tambien tiene que validar su correo electronico con el "
 "enlace que recibió."
 
+#~ msgid "This user didn't give her/his caution check."
+#~ msgstr "Este usuario no dio su cheque de garantía."
+
 #~ msgid "Central Authentication Service"
 #~ msgstr "Servicio Central de Autentificación"
 
diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po
index da716b96..f832c148 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: 2021-08-25 23:24+0200\n"
+"POT-Creation-Date: 2021-08-29 14:06+0200\n"
 "PO-Revision-Date: 2020-11-16 20:02+0000\n"
 "Last-Translator: Yohann D'ANELLO <ynerant@crans.org>\n"
 "Language-Team: French <http://translate.ynerant.fr/projects/nk20/nk20/fr/>\n"
@@ -461,7 +461,7 @@ msgstr "créer"
 
 #: apps/logs/models.py:65 apps/note/tables.py:165 apps/note/tables.py:201
 #: apps/permission/models.py:127 apps/treasury/tables.py:38
-#: apps/wei/tables.py:75
+#: apps/wei/tables.py:73
 msgid "delete"
 msgstr "supprimer"
 
@@ -508,7 +508,7 @@ msgstr "rôles"
 msgid "fee"
 msgstr "cotisation"
 
-#: apps/member/apps.py:14 apps/wei/tables.py:181 apps/wei/tables.py:212
+#: apps/member/apps.py:14 apps/wei/tables.py:193 apps/wei/tables.py:224
 msgid "member"
 msgstr "adhérent"
 
@@ -1137,7 +1137,7 @@ msgstr "Modifier le club"
 msgid "Add new member to the club"
 msgstr "Ajouter un nouveau membre au club"
 
-#: apps/member/views.py:642 apps/wei/views.py:924
+#: apps/member/views.py:642 apps/wei/views.py:917
 msgid ""
 "This user don't have enough money to join this club, and can't have a "
 "negative balance."
@@ -1443,8 +1443,8 @@ msgstr ""
 "mode de paiement et un utilisateur ou un club"
 
 #: apps/note/models/transactions.py:355 apps/note/models/transactions.py:358
-#: apps/note/models/transactions.py:361 apps/wei/views.py:929
-#: apps/wei/views.py:933
+#: apps/note/models/transactions.py:361 apps/wei/views.py:922
+#: apps/wei/views.py:926
 msgid "This field is required."
 msgstr "Ce champ est requis."
 
@@ -1479,13 +1479,13 @@ msgstr "Pas de motif spécifié"
 #: apps/note/tables.py:169 apps/note/tables.py:203 apps/treasury/tables.py:39
 #: apps/treasury/templates/treasury/invoice_confirm_delete.html:30
 #: apps/treasury/templates/treasury/sogecredit_detail.html:65
-#: apps/wei/tables.py:76 apps/wei/tables.py:103
+#: apps/wei/tables.py:74 apps/wei/tables.py:114
 #: apps/wei/templates/wei/weiregistration_confirm_delete.html:31
 msgid "Delete"
 msgstr "Supprimer"
 
 #: apps/note/tables.py:197 apps/note/templates/note/conso_form.html:132
-#: apps/wei/tables.py:47 apps/wei/tables.py:48
+#: apps/wei/tables.py:48 apps/wei/tables.py:49
 #: apps/wei/templates/wei/base.html:89
 #: apps/wei/templates/wei/bus_detail.html:20
 #: apps/wei/templates/wei/busteam_detail.html:20
@@ -2363,7 +2363,7 @@ msgstr ""
 "demande de crédit."
 
 #: apps/treasury/templates/treasury/sogecredit_detail.html:63
-#: apps/wei/tables.py:59 apps/wei/tables.py:60 apps/wei/tables.py:99
+#: apps/wei/tables.py:59 apps/wei/tables.py:101
 msgid "Validate"
 msgstr "Valider"
 
@@ -2429,7 +2429,7 @@ msgid "WEI"
 msgstr "WEI"
 
 #: apps/wei/forms/registration.py:51 apps/wei/models.py:118
-#: apps/wei/models.py:288
+#: apps/wei/models.py:315
 msgid "bus"
 msgstr "bus"
 
@@ -2467,7 +2467,7 @@ msgstr "Sélectionnez les rôles qui vous intéressent."
 msgid "This team doesn't belong to the given bus."
 msgstr "Cette équipe n'appartient pas à ce bus."
 
-#: apps/wei/forms/surveys/wei2021.py:30
+#: apps/wei/forms/surveys/wei2021.py:31
 msgid "Choose a word:"
 msgstr "Choisissez un mot :"
 
@@ -2593,44 +2593,52 @@ msgstr ""
 "Informations sur l'inscription (bus pour les 2A+, questionnaire pour les "
 "1A), encodées en JSON"
 
-#: apps/wei/models.py:277
+#: apps/wei/models.py:304
 msgid "WEI User"
 msgstr "Participant au WEI"
 
-#: apps/wei/models.py:278
+#: apps/wei/models.py:305
 msgid "WEI Users"
 msgstr "Participants au WEI"
 
-#: apps/wei/models.py:298
+#: apps/wei/models.py:325
 msgid "team"
 msgstr "équipe"
 
-#: apps/wei/models.py:308
+#: apps/wei/models.py:335
 msgid "WEI registration"
 msgstr "Inscription au WEI"
 
-#: apps/wei/models.py:312
+#: apps/wei/models.py:339
 msgid "WEI membership"
 msgstr "Adhésion au WEI"
 
-#: apps/wei/models.py:313
+#: apps/wei/models.py:340
 msgid "WEI memberships"
 msgstr "Adhésions au WEI"
 
-#: apps/wei/tables.py:127
+#: apps/wei/tables.py:104
+msgid "The user does not have enough money."
+msgstr "L'utilisateur n'a pas assez d'argent."
+
+#: apps/wei/tables.py:107
+msgid "The user has enough money, you can validate the registration."
+msgstr "L'utilisateur a assez d'argent, l'inscription est possible."
+
+#: apps/wei/tables.py:139
 msgid "Year"
 msgstr "Année"
 
-#: apps/wei/tables.py:165 apps/wei/templates/wei/bus_detail.html:32
+#: apps/wei/tables.py:177 apps/wei/templates/wei/bus_detail.html:32
 #: apps/wei/templates/wei/busteam_detail.html:50
 msgid "Teams"
 msgstr "Équipes"
 
-#: apps/wei/tables.py:174 apps/wei/tables.py:215
+#: apps/wei/tables.py:186 apps/wei/tables.py:227
 msgid "Members count"
 msgstr "Nombre de membres"
 
-#: apps/wei/tables.py:181 apps/wei/tables.py:212
+#: apps/wei/tables.py:193 apps/wei/tables.py:224
 msgid "members"
 msgstr "adhérents"
 
@@ -2650,11 +2658,11 @@ msgstr "Prix du WEI (étudiants)"
 msgid "WEI list"
 msgstr "Liste des WEI"
 
-#: apps/wei/templates/wei/base.html:81 apps/wei/views.py:508
+#: apps/wei/templates/wei/base.html:81 apps/wei/views.py:510
 msgid "Register 1A"
 msgstr "Inscrire un 1A"
 
-#: apps/wei/templates/wei/base.html:85 apps/wei/views.py:576
+#: apps/wei/templates/wei/base.html:85 apps/wei/views.py:578
 msgid "Register 2A+"
 msgstr "Inscrire un 2A+"
 
@@ -2683,8 +2691,8 @@ msgstr "Télécharger au format PDF"
 
 #: apps/wei/templates/wei/survey.html:11
 #: apps/wei/templates/wei/survey_closed.html:11
-#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:980
-#: apps/wei/views.py:1035 apps/wei/views.py:1045
+#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:973
+#: apps/wei/views.py:1028 apps/wei/views.py:1038
 msgid "Survey WEI"
 msgstr "Questionnaire WEI"
 
@@ -2902,31 +2910,31 @@ msgstr "Ajouter un nouveau bus"
 msgid "Update bus"
 msgstr "Modifier le bus"
 
-#: apps/wei/views.py:364
+#: apps/wei/views.py:366
 msgid "Manage bus"
 msgstr "Gérer le bus"
 
-#: apps/wei/views.py:391
+#: apps/wei/views.py:393
 msgid "Create new team"
 msgstr "Créer une nouvelle équipe"
 
-#: apps/wei/views.py:431
+#: apps/wei/views.py:433
 msgid "Update team"
 msgstr "Modifier l'équipe"
 
-#: apps/wei/views.py:462
+#: apps/wei/views.py:464
 msgid "Manage WEI team"
 msgstr "Gérer l'équipe WEI"
 
-#: apps/wei/views.py:484
+#: apps/wei/views.py:486
 msgid "Register first year student to the WEI"
 msgstr "Inscrire un 1A au WEI"
 
-#: apps/wei/views.py:530 apps/wei/views.py:611
+#: apps/wei/views.py:532 apps/wei/views.py:613
 msgid "This user is already registered to this WEI."
 msgstr "Cette personne est déjà inscrite au WEI."
 
-#: apps/wei/views.py:535
+#: apps/wei/views.py:537
 msgid ""
 "This user can't be in her/his first year since he/she has already "
 "participated to a WEI."
@@ -2934,27 +2942,27 @@ msgstr ""
 "Cet utilisateur ne peut pas être en première année puisqu'il a déjà "
 "participé à un WEI."
 
-#: apps/wei/views.py:552
+#: apps/wei/views.py:554
 msgid "Register old student to the WEI"
 msgstr "Inscrire un 2A+ au WEI"
 
-#: apps/wei/views.py:595 apps/wei/views.py:684
+#: apps/wei/views.py:597 apps/wei/views.py:686
 msgid "You already opened an account in the Société générale."
 msgstr "Vous avez déjà ouvert un compte auprès de la société générale."
 
-#: apps/wei/views.py:641
+#: apps/wei/views.py:643
 msgid "Update WEI Registration"
 msgstr "Modifier l'inscription WEI"
 
-#: apps/wei/views.py:744
+#: apps/wei/views.py:746
 msgid "Delete WEI registration"
 msgstr "Supprimer l'inscription WEI"
 
-#: apps/wei/views.py:755
+#: apps/wei/views.py:757
 msgid "You don't have the right to delete this WEI registration."
 msgstr "Vous n'avez pas la permission de supprimer cette inscription au WEI."
 
-#: apps/wei/views.py:774
+#: apps/wei/views.py:776
 msgid "Validate WEI registration"
 msgstr "Valider l'inscription WEI"
 
-- 
GitLab