mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-23 20:03:11 +00:00
Utilise un ModelForm pour les données de chèque + doc
This commit is contained in:
parent
3f2de5739c
commit
2845c49ac1
2 changed files with 36 additions and 31 deletions
|
@ -135,7 +135,7 @@ class Facture(RevMixin, AclMixin, FieldPermissionModelMixin, models.Model):
|
||||||
"""
|
"""
|
||||||
price = Vente.objects.filter(
|
price = Vente.objects.filter(
|
||||||
facture=self
|
facture=self
|
||||||
).aggregate(models.Sum('prix'))['prix__sum']
|
).aggregate(models.Sum('prix'))['prix__sum']
|
||||||
return price
|
return price
|
||||||
|
|
||||||
# TODO : change prix to price
|
# TODO : change prix to price
|
||||||
|
@ -147,12 +147,12 @@ class Facture(RevMixin, AclMixin, FieldPermissionModelMixin, models.Model):
|
||||||
# TODO : change Vente to somethingelse
|
# TODO : change Vente to somethingelse
|
||||||
return Vente.objects.filter(
|
return Vente.objects.filter(
|
||||||
facture=self
|
facture=self
|
||||||
).aggregate(
|
).aggregate(
|
||||||
total=models.Sum(
|
total=models.Sum(
|
||||||
models.F('prix')*models.F('number'),
|
models.F('prix')*models.F('number'),
|
||||||
output_field=models.FloatField()
|
output_field=models.FloatField()
|
||||||
)
|
)
|
||||||
)['total']
|
)['total']
|
||||||
|
|
||||||
def name(self):
|
def name(self):
|
||||||
"""
|
"""
|
||||||
|
@ -161,7 +161,7 @@ class Facture(RevMixin, AclMixin, FieldPermissionModelMixin, models.Model):
|
||||||
"""
|
"""
|
||||||
name = ' - '.join(Vente.objects.filter(
|
name = ' - '.join(Vente.objects.filter(
|
||||||
facture=self
|
facture=self
|
||||||
).values_list('name', flat=True))
|
).values_list('name', flat=True))
|
||||||
return name
|
return name
|
||||||
|
|
||||||
def can_edit(self, user_request, *args, **kwargs):
|
def can_edit(self, user_request, *args, **kwargs):
|
||||||
|
@ -232,7 +232,6 @@ class Facture(RevMixin, AclMixin, FieldPermissionModelMixin, models.Model):
|
||||||
_("You don't have the right to create an invoice.")
|
_("You don't have the right to create an invoice.")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(Facture, self).__init__(*args, **kwargs)
|
super(Facture, self).__init__(*args, **kwargs)
|
||||||
self.field_permissions = {
|
self.field_permissions = {
|
||||||
|
@ -361,12 +360,12 @@ class Vente(RevMixin, AclMixin, models.Model):
|
||||||
facture__in=Facture.objects.filter(
|
facture__in=Facture.objects.filter(
|
||||||
user=self.facture.user
|
user=self.facture.user
|
||||||
).exclude(valid=False))
|
).exclude(valid=False))
|
||||||
).filter(
|
).filter(
|
||||||
Q(type_cotisation='All') |
|
Q(type_cotisation='All') |
|
||||||
Q(type_cotisation=self.type_cotisation)
|
Q(type_cotisation=self.type_cotisation)
|
||||||
).filter(
|
).filter(
|
||||||
date_start__lt=date_start
|
date_start__lt=date_start
|
||||||
).aggregate(Max('date_end'))['date_end__max']
|
).aggregate(Max('date_end'))['date_end__max']
|
||||||
elif self.type_cotisation == "Adhesion":
|
elif self.type_cotisation == "Adhesion":
|
||||||
end_cotisation = self.facture.user.end_adhesion()
|
end_cotisation = self.facture.user.end_adhesion()
|
||||||
else:
|
else:
|
||||||
|
@ -377,7 +376,7 @@ class Vente(RevMixin, AclMixin, models.Model):
|
||||||
cotisation.date_start = date_max
|
cotisation.date_start = date_max
|
||||||
cotisation.date_end = cotisation.date_start + relativedelta(
|
cotisation.date_end = cotisation.date_start + relativedelta(
|
||||||
months=self.duration*self.number
|
months=self.duration*self.number
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
|
@ -400,7 +399,7 @@ class Vente(RevMixin, AclMixin, models.Model):
|
||||||
elif (not user_request.has_perm('cotisations.change_all_facture') and
|
elif (not user_request.has_perm('cotisations.change_all_facture') and
|
||||||
not self.facture.user.can_edit(
|
not self.facture.user.can_edit(
|
||||||
user_request, *args, **kwargs
|
user_request, *args, **kwargs
|
||||||
)[0]):
|
)[0]):
|
||||||
return False, _("You don't have the right to edit this user's "
|
return False, _("You don't have the right to edit this user's "
|
||||||
"purchases.")
|
"purchases.")
|
||||||
elif (not user_request.has_perm('cotisations.change_all_vente') and
|
elif (not user_request.has_perm('cotisations.change_all_vente') and
|
||||||
|
@ -632,12 +631,19 @@ class Paiement(RevMixin, AclMixin, models.Model):
|
||||||
)
|
)
|
||||||
super(Paiement, self).save(*args, **kwargs)
|
super(Paiement, self).save(*args, **kwargs)
|
||||||
|
|
||||||
def end_payment(self, invoice, request):
|
def end_payment(self, invoice, request, use_payment_method=True):
|
||||||
"""
|
"""
|
||||||
The general way of ending a payment. You may redefine this method for custom
|
The general way of ending a payment.
|
||||||
payment methods. Must return a HttpResponse-like object.
|
|
||||||
|
:param invoice: The invoice being created.
|
||||||
|
:param request: Request sended by the user.
|
||||||
|
:param use_payment_method: If `self` has an attribute `payment_method`,
|
||||||
|
returns the result of
|
||||||
|
`self.payment_method.end_payment(invoice, request)`
|
||||||
|
|
||||||
|
:returns: An `HttpResponse`-like object.
|
||||||
"""
|
"""
|
||||||
if hasattr(self, 'payment_method'):
|
if hasattr(self, 'payment_method') and use_payment_method:
|
||||||
return self.payment_method.end_payment(invoice, request)
|
return self.payment_method.end_payment(invoice, request)
|
||||||
|
|
||||||
# In case a cotisation was bought, inform the user, the
|
# In case a cotisation was bought, inform the user, the
|
||||||
|
|
|
@ -12,7 +12,7 @@ from django.utils.translation import ugettext as _
|
||||||
from cotisations.models import Facture as Invoice
|
from cotisations.models import Facture as Invoice
|
||||||
|
|
||||||
from .models import ChequePayment
|
from .models import ChequePayment
|
||||||
from .forms import ChequeForm
|
from .forms import InvoiceForm
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
|
@ -28,16 +28,15 @@ def cheque(request, invoice_pk):
|
||||||
'users:profil',
|
'users:profil',
|
||||||
kwargs={'userid': request.user.pk}
|
kwargs={'userid': request.user.pk}
|
||||||
))
|
))
|
||||||
form = ChequeForm(request.POST or None)
|
form = InvoiceForm(request.POST or None, instance=invoice)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
invoice.banque = form.cleaned_data['bank']
|
form.instance.valid = True
|
||||||
invoice.cheque = form.cleaned_data['number']
|
form.save()
|
||||||
invoice.valid = True
|
return form.instance.paiement.end_payment(
|
||||||
invoice.save()
|
form.instance,
|
||||||
return redirect(reverse(
|
request,
|
||||||
'users:profil',
|
use_payment_method=False
|
||||||
kwargs={'userid': request.user.pk}
|
)
|
||||||
))
|
|
||||||
return render(
|
return render(
|
||||||
request,
|
request,
|
||||||
'cotisations/payment_form.html',
|
'cotisations/payment_form.html',
|
||||||
|
|
Loading…
Reference in a new issue