8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-11-05 01:16:27 +00:00

Fix de l'édition de factures

This commit is contained in:
Hugo LEVY-FALK 2018-07-10 18:38:05 +02:00
parent f87b85d444
commit ee86595509
2 changed files with 20 additions and 34 deletions

View file

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

View file

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