forked from DGNum/gestioCOF
Merge branch 'Aufinal/kfet_forms' into 'master'
K-Fêt - Affichage des formulaires amélioré See merge request !203
This commit is contained in:
commit
b157ffac4c
10 changed files with 132 additions and 80 deletions
|
@ -74,8 +74,11 @@ class AccountRestrictForm(AccountForm):
|
|||
|
||||
class AccountPwdForm(forms.Form):
|
||||
pwd1 = forms.CharField(
|
||||
label="Mot de passe K-Fêt",
|
||||
help_text="Le mot de passe doit contenir au moins huit caractères",
|
||||
widget=forms.PasswordInput)
|
||||
pwd2 = forms.CharField(
|
||||
label="Confirmer le mot de passe",
|
||||
widget=forms.PasswordInput)
|
||||
|
||||
def clean(self):
|
||||
|
@ -128,6 +131,7 @@ class UserRestrictTeamForm(UserForm):
|
|||
class UserGroupForm(forms.ModelForm):
|
||||
groups = forms.ModelMultipleChoiceField(
|
||||
Group.objects.filter(name__icontains='K-Fêt'),
|
||||
label='Statut équipe',
|
||||
required=False)
|
||||
|
||||
def clean_groups(self):
|
||||
|
@ -235,16 +239,20 @@ class CheckoutStatementUpdateForm(forms.ModelForm):
|
|||
|
||||
class ArticleForm(forms.ModelForm):
|
||||
category_new = forms.CharField(
|
||||
label="Créer une catégorie",
|
||||
max_length=45,
|
||||
required = False)
|
||||
category = forms.ModelChoiceField(
|
||||
label="Catégorie",
|
||||
queryset = ArticleCategory.objects.all(),
|
||||
required = False)
|
||||
|
||||
suppliers = forms.ModelMultipleChoiceField(
|
||||
label="Fournisseurs",
|
||||
queryset = Supplier.objects.all(),
|
||||
required = False)
|
||||
supplier_new = forms.CharField(
|
||||
label="Créer un fournisseur",
|
||||
max_length = 45,
|
||||
required = False)
|
||||
|
||||
|
@ -478,9 +486,7 @@ class OrderArticleForm(forms.Form):
|
|||
queryset=Article.objects.all(),
|
||||
widget=forms.HiddenInput(),
|
||||
)
|
||||
quantity_ordered = forms.IntegerField(
|
||||
required=False,
|
||||
widget=forms.NumberInput(attrs={'class': 'form-control'}))
|
||||
quantity_ordered = forms.IntegerField(required=False)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(OrderArticleForm, self).__init__(*args, **kwargs)
|
||||
|
@ -507,18 +513,14 @@ class OrderArticleToInventoryForm(forms.Form):
|
|||
)
|
||||
price_HT = forms.DecimalField(
|
||||
max_digits = 7, decimal_places = 4,
|
||||
required = False,
|
||||
widget=forms.NumberInput(attrs={'class': 'form-control'}))
|
||||
required = False)
|
||||
TVA = forms.DecimalField(
|
||||
max_digits = 7, decimal_places = 2,
|
||||
required = False,
|
||||
widget=forms.NumberInput(attrs={'class': 'form-control'}))
|
||||
required = False)
|
||||
rights = forms.DecimalField(
|
||||
max_digits = 7, decimal_places = 4,
|
||||
required = False,
|
||||
widget=forms.NumberInput(attrs={'class': 'form-control'}))
|
||||
quantity_received = forms.IntegerField(
|
||||
widget=forms.NumberInput(attrs={'class': 'form-control'}))
|
||||
required = False)
|
||||
quantity_received = forms.IntegerField()
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(OrderArticleToInventoryForm, self).__init__(*args, **kwargs)
|
||||
|
|
|
@ -40,7 +40,7 @@ class Account(models.Model):
|
|||
balance = models.DecimalField(
|
||||
max_digits = 6, decimal_places = 2,
|
||||
default = 0)
|
||||
is_frozen = models.BooleanField(default = False)
|
||||
is_frozen = models.BooleanField("est gelé", default = False)
|
||||
created_at = models.DateTimeField(auto_now_add = True, null = True)
|
||||
# Optional
|
||||
PROMO_CHOICES = [(r,r) for r in range(1980, date.today().year+1)]
|
||||
|
@ -48,6 +48,7 @@ class Account(models.Model):
|
|||
choices = PROMO_CHOICES,
|
||||
blank = True, null = True, default = default_promo())
|
||||
nickname = models.CharField(
|
||||
"surnom(s)",
|
||||
max_length = 255,
|
||||
blank = True, default = "")
|
||||
password = models.CharField(
|
||||
|
@ -224,14 +225,18 @@ class AccountNegative(models.Model):
|
|||
start = models.DateTimeField(
|
||||
blank = True, null = True, default = None)
|
||||
balance_offset = models.DecimalField(
|
||||
"décalage de balance",
|
||||
help_text="Montant non compris dans l'autorisation de négatif",
|
||||
max_digits = 6, decimal_places = 2,
|
||||
blank = True, null = True, default = None)
|
||||
authz_overdraft_amount = models.DecimalField(
|
||||
"négatif autorisé",
|
||||
max_digits = 6, decimal_places = 2,
|
||||
blank = True, null = True, default = None)
|
||||
authz_overdraft_until = models.DateTimeField(
|
||||
"expiration du négatif",
|
||||
blank = True, null = True, default = None)
|
||||
comment = models.CharField(max_length = 255, blank = True)
|
||||
comment = models.CharField("commentaire", max_length = 255, blank = True)
|
||||
|
||||
@python_2_unicode_compatible
|
||||
class Checkout(models.Model):
|
||||
|
@ -273,29 +278,35 @@ class CheckoutStatement(models.Model):
|
|||
checkout = models.ForeignKey(
|
||||
Checkout, on_delete = models.PROTECT,
|
||||
related_name = "statements")
|
||||
balance_old = models.DecimalField(max_digits = 6, decimal_places = 2)
|
||||
balance_new = models.DecimalField(max_digits = 6, decimal_places = 2)
|
||||
amount_taken = models.DecimalField(max_digits = 6, decimal_places = 2)
|
||||
amount_error = models.DecimalField(max_digits = 6, decimal_places = 2)
|
||||
balance_old = models.DecimalField("ancienne balance",
|
||||
max_digits = 6, decimal_places = 2)
|
||||
balance_new = models.DecimalField("nouvelle balance",
|
||||
max_digits = 6, decimal_places = 2)
|
||||
amount_taken = models.DecimalField("montant pris",
|
||||
max_digits = 6, decimal_places = 2)
|
||||
amount_error = models.DecimalField("montant de l'erreur",
|
||||
max_digits = 6, decimal_places = 2)
|
||||
at = models.DateTimeField(auto_now_add = True)
|
||||
not_count = models.BooleanField(default=False)
|
||||
not_count = models.BooleanField("caisse non comptée", default=False)
|
||||
|
||||
taken_001 = models.PositiveSmallIntegerField(default=0)
|
||||
taken_002 = models.PositiveSmallIntegerField(default=0)
|
||||
taken_005 = models.PositiveSmallIntegerField(default=0)
|
||||
taken_01 = models.PositiveSmallIntegerField(default=0)
|
||||
taken_02 = models.PositiveSmallIntegerField(default=0)
|
||||
taken_05 = models.PositiveSmallIntegerField(default=0)
|
||||
taken_1 = models.PositiveSmallIntegerField(default=0)
|
||||
taken_2 = models.PositiveSmallIntegerField(default=0)
|
||||
taken_5 = models.PositiveSmallIntegerField(default=0)
|
||||
taken_10 = models.PositiveSmallIntegerField(default=0)
|
||||
taken_20 = models.PositiveSmallIntegerField(default=0)
|
||||
taken_50 = models.PositiveSmallIntegerField(default=0)
|
||||
taken_100 = models.PositiveSmallIntegerField(default=0)
|
||||
taken_200 = models.PositiveSmallIntegerField(default=0)
|
||||
taken_500 = models.PositiveSmallIntegerField(default=0)
|
||||
taken_cheque = models.DecimalField(default=0, max_digits=6, decimal_places=2)
|
||||
taken_001 = models.PositiveSmallIntegerField("pièces de 1¢", default=0)
|
||||
taken_002 = models.PositiveSmallIntegerField("pièces de 2¢", default=0)
|
||||
taken_005 = models.PositiveSmallIntegerField("pièces de 5¢", default=0)
|
||||
taken_01 = models.PositiveSmallIntegerField("pièces de 10¢", default=0)
|
||||
taken_02 = models.PositiveSmallIntegerField("pièces de 20¢", default=0)
|
||||
taken_05 = models.PositiveSmallIntegerField("pièces de 50¢", default=0)
|
||||
taken_1 = models.PositiveSmallIntegerField("pièces de 1€", default=0)
|
||||
taken_2 = models.PositiveSmallIntegerField("pièces de 2€", default=0)
|
||||
taken_5 = models.PositiveSmallIntegerField("billets de 5€", default=0)
|
||||
taken_10 = models.PositiveSmallIntegerField("billets de 10€", default=0)
|
||||
taken_20 = models.PositiveSmallIntegerField("billets de 20€", default=0)
|
||||
taken_50 = models.PositiveSmallIntegerField("billets de 50€", default=0)
|
||||
taken_100 = models.PositiveSmallIntegerField("billets de 100€", default=0)
|
||||
taken_200 = models.PositiveSmallIntegerField("billets de 200€", default=0)
|
||||
taken_500 = models.PositiveSmallIntegerField("billets de 500€", default=0)
|
||||
taken_cheque = models.DecimalField(
|
||||
"montant des chèques",
|
||||
default=0, max_digits=6, decimal_places=2)
|
||||
|
||||
def __str__(self):
|
||||
return '%s %s' % (self.checkout, self.at)
|
||||
|
@ -336,19 +347,21 @@ class ArticleCategory(models.Model):
|
|||
|
||||
@python_2_unicode_compatible
|
||||
class Article(models.Model):
|
||||
name = models.CharField(max_length = 45)
|
||||
is_sold = models.BooleanField(default = True)
|
||||
hidden = models.BooleanField(default=False,
|
||||
name = models.CharField("nom", max_length = 45)
|
||||
is_sold = models.BooleanField("en vente", default = True)
|
||||
hidden = models.BooleanField("caché",
|
||||
default=False,
|
||||
help_text="Si oui, ne sera pas affiché "
|
||||
"au public ; par exemple "
|
||||
"sur la carte.")
|
||||
price = models.DecimalField(
|
||||
"prix",
|
||||
max_digits = 6, decimal_places = 2,
|
||||
default = 0)
|
||||
stock = models.IntegerField(default = 0)
|
||||
category = models.ForeignKey(
|
||||
ArticleCategory, on_delete = models.PROTECT,
|
||||
related_name = "articles")
|
||||
related_name = "articles", verbose_name='catégorie')
|
||||
BOX_TYPE_CHOICES = (
|
||||
("caisse", "caisse"),
|
||||
("carton", "carton"),
|
||||
|
@ -356,10 +369,12 @@ class Article(models.Model):
|
|||
("fût", "fût"),
|
||||
)
|
||||
box_type = models.CharField(
|
||||
"type de contenant",
|
||||
choices = BOX_TYPE_CHOICES,
|
||||
max_length = choices_length(BOX_TYPE_CHOICES),
|
||||
blank = True, null = True, default = None)
|
||||
box_capacity = models.PositiveSmallIntegerField(
|
||||
"capacité du contenant",
|
||||
blank = True, null = True, default = None)
|
||||
|
||||
def __str__(self):
|
||||
|
@ -417,11 +432,11 @@ class Supplier(models.Model):
|
|||
Article,
|
||||
through = 'SupplierArticle',
|
||||
related_name = "suppliers")
|
||||
name = models.CharField(max_length = 45)
|
||||
address = models.TextField()
|
||||
email = models.EmailField()
|
||||
phone = models.CharField(max_length = 10)
|
||||
comment = models.TextField()
|
||||
name = models.CharField("nom", max_length = 45)
|
||||
address = models.TextField("adresse")
|
||||
email = models.EmailField("adresse mail")
|
||||
phone = models.CharField("téléphone", max_length = 10)
|
||||
comment = models.TextField("commentaire")
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
|
|
@ -1,17 +1,27 @@
|
|||
{% extends 'kfet/base.html' %}
|
||||
{% load widget_tweaks %}
|
||||
{% load staticfiles %}
|
||||
|
||||
{% block title %}Nouvel article{% endblock %}
|
||||
{% block content-header-title %}Création d'un article{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<form submit="" method="post">
|
||||
{% include "kfet/base_messages.html" %}
|
||||
|
||||
<div class="row form-only">
|
||||
<div class="col-sm-12 col-md-8 col-md-offset-2">
|
||||
<div class="content-form">
|
||||
<form submit="" method="post" class="form-horizontal">
|
||||
{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
{% include 'kfet/form_snippet.html' with form=form %}
|
||||
{% if not perms.kfet.add_article %}
|
||||
<input type="password" name="KFETPASSWORD">
|
||||
{% include 'kfet/form_authentication_snippet.html' %}
|
||||
{% endif %}
|
||||
<input type="submit" value="Enregistrer">
|
||||
</form>
|
||||
{% include 'kfet/form_submit_snippet.html' with value="Enregistrer" %}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,17 +1,27 @@
|
|||
{% extends 'kfet/base.html' %}
|
||||
{% load widget_tweaks %}
|
||||
{% load staticfiles %}
|
||||
|
||||
{% block title %}Édition de l'article {{ article.name }}{% endblock %}
|
||||
{% block content-header-title %}Article {{ article.name }} - Édition{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<form action="" method="post">
|
||||
{% include "kfet/base_messages.html" %}
|
||||
|
||||
<div class="row form-only">
|
||||
<div class="col-sm-12 col-md-8 col-md-offset-2">
|
||||
<div class="content-form">
|
||||
<form submit="" method="post" class="form-horizontal">
|
||||
{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
{% include 'kfet/form_snippet.html' with form=form %}
|
||||
{% if not perms.kfet.change_article %}
|
||||
<input type="password" name="KFETPASSWORD">
|
||||
{% include 'kfet/form_authentication_snippet.html' %}
|
||||
{% endif %}
|
||||
<input type="submit" value="Mettre à jour">
|
||||
</form>
|
||||
{% include 'kfet/form_submit_snippet.html' with value="Mettre à jour" %}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -80,7 +80,7 @@
|
|||
<td><input id="id_taken_001" name="taken_001" data-value="0.01" min="0" value="0" type="number" class="form-control" required></td>
|
||||
</tr>
|
||||
</table>
|
||||
Chèque: <input id="id_taken_cheque" name="taken_cheque" data-value="1" min="0" step="0.01" value="0" type="number" class="form-control" required>
|
||||
<p style="font-weight:bold"> Chèque:</p> <input id="id_taken_cheque" name="taken_cheque" data-value="1" min="0" step="0.01" value="0" type="number" class="form-control" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-right-block">
|
||||
|
|
|
@ -15,15 +15,15 @@ Caisse {{ checkout.name }} - Modification relevé {{ checkoutstatement.at }}
|
|||
</div>
|
||||
<div class="col-sm-8 col-md-9 col-content-right">
|
||||
{% include 'kfet/base_messages.html' %}
|
||||
<div class="content-right">
|
||||
<div class="content-right-block">
|
||||
<form action="" method="post">
|
||||
<div class="content-right form-only">
|
||||
<div class="content-form">
|
||||
<form submit="" method="post" class="form-horizontal">
|
||||
{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
{% include 'kfet/form_snippet.html' with form=form %}
|
||||
{% if not perms.kfet.change_checkoutstatement %}
|
||||
<input type="password" name="KFETPASSWORD">
|
||||
{% include 'kfet/form_authentication_snippet.html' %}
|
||||
{% endif %}
|
||||
<input type="submit" value="Enregistrer">
|
||||
{% include 'kfet/form_submit_snippet.html' with value="Enregistrer" %}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -4,6 +4,11 @@
|
|||
<label for="{{ field.id_for_label }}" class="col-sm-2 control-label">{{ field.label }}</label>
|
||||
<div class="col-sm-10">
|
||||
{{ field|add_class:'form-control' }}
|
||||
<span class="help-block">{{ field.errors }}</span>
|
||||
{% if field.errors %}
|
||||
<span class="help-block">{{field.errors}}</span>
|
||||
{% endif %}
|
||||
{% if field.help_text %}
|
||||
<span class="help-block">{{field.help_text}}</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{% extends 'kfet/base.html' %}
|
||||
{% load widget_tweaks %}
|
||||
|
||||
{% block title %}Nouvelle commande{% endblock %}
|
||||
{% block content-header-title %}Nouvelle commande {{ supplier.name }}{% endblock %}
|
||||
|
@ -60,7 +61,7 @@
|
|||
<td>{{ form.v_prev }}</td>
|
||||
<td>{{ form.stock }}</td>
|
||||
<td>{{ form.c_rec }}</td>
|
||||
<td>{{ form.quantity_ordered }}</td>
|
||||
<td>{{ form.quantity_ordered | add_class:"form-control" }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{% extends 'kfet/base.html' %}
|
||||
{% load widget_tweaks %}
|
||||
|
||||
{% block title %}{% endblock %}
|
||||
{% block content-header-title %}{% endblock %}
|
||||
|
@ -33,11 +34,11 @@
|
|||
<tr>
|
||||
{{ form.article }}
|
||||
<td>{{ form.name }}</td>
|
||||
<td>{{ form.price_HT }}</td>
|
||||
<td>{{ form.TVA }}</td>
|
||||
<td>{{ form.rights }}</td>
|
||||
<td>{{ form.price_HT | add_class:"form-control" }}</td>
|
||||
<td>{{ form.TVA | add_class:"form-control" }}</td>
|
||||
<td>{{ form.rights | add_class:"form-control" }}</td>
|
||||
<td>{{ form.quantity_ordered }}</td>
|
||||
<td>{{ form.quantity_received }}</td>
|
||||
<td>{{ form.quantity_received | add_class:"form-control" }}</td>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{% extends 'kfet/base.html' %}
|
||||
{% load widget_tweaks %}
|
||||
{% load staticfiles %}
|
||||
|
||||
{% block title %}Fournisseur - Modification{% endblock %}
|
||||
{% block content-header-title %}Fournisseur - Modification{% endblock %}
|
||||
|
@ -7,13 +9,19 @@
|
|||
|
||||
{% include 'kfet/base_messages.html' %}
|
||||
|
||||
<form action="" method="post">
|
||||
<div class="row form-only">
|
||||
<div class="col-sm-12 col-md-8 col-md-offset-2">
|
||||
<div class="content-form">
|
||||
<form submit="" method="post" class="form-horizontal">
|
||||
{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
{% include 'kfet/form_snippet.html' with form=form %}
|
||||
{% if not perms.kfet.change_supplier %}
|
||||
<input type="password" name="KFETPASSWORD">
|
||||
{% include 'kfet/form_authentication_snippet.html' %}
|
||||
{% endif %}
|
||||
<input type="submit" class="btn btn-primary btn-lg">
|
||||
</form>
|
||||
{% include 'kfet/form_submit_snippet.html' with value="Mettre à jour" %}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
|
Loading…
Reference in a new issue