From ac90d4d7ee594c5cf108fc8ad52ac2994cde5213 Mon Sep 17 00:00:00 2001 From: Hugo LEVY-FALK Date: Tue, 10 Jul 2018 18:38:05 +0200 Subject: [PATCH] =?UTF-8?q?Fix=20de=20l'=C3=A9dition=20de=20factures?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cotisations/forms.py | 42 ++++++++++++++---------------------------- cotisations/views.py | 12 ++++++------ 2 files changed, 20 insertions(+), 34 deletions(-) diff --git a/cotisations/forms.py b/cotisations/forms.py index 02ee3e3c..e1dd9e28 100644 --- a/cotisations/forms.py +++ b/cotisations/forms.py @@ -49,28 +49,34 @@ from .models import Article, Paiement, Facture, Banque from .payment_methods import balance -class NewFactureForm(FormRevMixin, ModelForm): +class FactureForm(FieldPermissionFormMixin, FormRevMixin, ModelForm): """ - Form used to create a new invoice by using a payment method, a bank and a - cheque number. + Form used to manage and create an invoice and its fields. """ - def __init__(self, *args, **kwargs): - user = kwargs.pop('user') + def __init__(self, *args, creation=False, **kwargs): + user = kwargs['user'] prefix = kwargs.pop('prefix', self.Meta.model.__name__) - super(NewFactureForm, self).__init__(*args, prefix=prefix, **kwargs) + super(FactureForm, self).__init__(*args, prefix=prefix, **kwargs) self.fields['paiement'].empty_label = \ _("Select a payment method") self.fields['paiement'].queryset = Paiement.objects.filter( pk__in=map(lambda x: x.pk, Paiement.find_allowed_payments(user)) ) + if not creation: + self.fields['user'].label = _("Member") + self.fields['user'].empty_label = \ + _("Select the proprietary member") + self.fields['valid'].label = _("Validated invoice") + else: + self.fields = {'paiement': self.fields['paiement']} class Meta: model = Facture - fields = ['paiement'] + fields = '__all__' def clean(self): - cleaned_data = super(NewFactureForm, self).clean() + cleaned_data = super(FactureForm, self).clean() paiement = cleaned_data.get('paiement') if not paiement: raise forms.ValidationError( @@ -151,26 +157,6 @@ class NewFactureFormPdf(Form): ) -# TODO : change Facture to Invoice -class EditFactureForm(FieldPermissionFormMixin, NewFactureForm): - """ - Form used to edit an invoice and its fields : payment method, bank, - user associated, ... - """ - class Meta(NewFactureForm.Meta): - # TODO : change Facture to Invoice - model = Facture - fields = '__all__' - - def __init__(self, *args, **kwargs): - # TODO : change Facture to Invoice - super(EditFactureForm, self).__init__(*args, **kwargs) - self.fields['user'].label = _("Member") - self.fields['user'].empty_label = \ - _("Select the proprietary member") - self.fields['valid'].label = _("Validated invoice") - - class ArticleForm(FormRevMixin, ModelForm): """ Form used to create an article. diff --git a/cotisations/views.py b/cotisations/views.py index c1a8d68f..13c8b461 100644 --- a/cotisations/views.py +++ b/cotisations/views.py @@ -60,8 +60,7 @@ from re2o.acl import ( from preferences.models import AssoOption, GeneralOption from .models import Facture, Article, Vente, Paiement, Banque from .forms import ( - NewFactureForm, - EditFactureForm, + FactureForm, ArticleForm, DelArticleForm, PaiementForm, @@ -84,7 +83,7 @@ def new_facture(request, user, userid): """ View called to create a new invoice. Currently, Send the list of available articles for the user along with - a formset of a new invoice (based on the `:forms:NewFactureForm()` form. + a formset of a new invoice (based on the `:forms:FactureForm()` form. A bit of JS is used in the template to add articles in a fancier way. If everything is correct, save each one of the articles, save the purchase object associated and finally the newly created invoice. @@ -95,10 +94,11 @@ def new_facture(request, user, userid): Q(type_user='All') | Q(type_user=request.user.class_name) ) # Building the invoice form and the article formset - invoice_form = NewFactureForm( + invoice_form = FactureForm( request.POST or None, instance=invoice, - user=request.user + user=request.user, + creation=True ) if request.user.is_class_club: @@ -278,7 +278,7 @@ def edit_facture(request, facture, **_kwargs): can be set as desired. This is also the view used to invalidate an invoice. """ - invoice_form = EditFactureForm( + invoice_form = FactureForm( request.POST or None, instance=facture, user=request.user