8
0
Fork 0
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:
Hugo LEVY-FALK 2018-07-02 14:41:02 +02:00
parent 3f2de5739c
commit 2845c49ac1
2 changed files with 36 additions and 31 deletions

View file

@ -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

View file

@ -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',