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