diff --git a/kfet/forms.py b/kfet/forms.py index 9d164746..26ada7bc 100644 --- a/kfet/forms.py +++ b/kfet/forms.py @@ -130,10 +130,33 @@ class CheckoutRestrictForm(CheckoutForm): class Meta(CheckoutForm.Meta): fields = ['name', 'valid_from', 'valid_to'] -class CheckoutStatementForm(forms.ModelForm): + +class CheckoutStatementCreateForm(forms.ModelForm): + balance_001 = forms.IntegerField(min_value=0, initial=0) + balance_002 = forms.IntegerField(min_value=0, initial=0) + balance_005 = forms.IntegerField(min_value=0, initial=0) + balance_01 = forms.IntegerField(min_value=0, initial=0) + balance_02 = forms.IntegerField(min_value=0, initial=0) + balance_05 = forms.IntegerField(min_value=0, initial=0) + balance_1 = forms.IntegerField(min_value=0, initial=0) + balance_2 = forms.IntegerField(min_value=0, initial=0) + balance_5 = forms.IntegerField(min_value=0, initial=0) + balance_10 = forms.IntegerField(min_value=0, initial=0) + balance_20 = forms.IntegerField(min_value=0, initial=0) + balance_50 = forms.IntegerField(min_value=0, initial=0) + balance_100 = forms.IntegerField(min_value=0, initial=0) + balance_200 = forms.IntegerField(min_value=0, initial=0) + balance_500 = forms.IntegerField(min_value=0, initial=0) + class Meta: model = CheckoutStatement - fields = ['balance_new', 'amount_taken'] + exclude = ['by', 'at', 'checkout', 'amount_error', 'amount_taken', + 'balance_old', 'balance_new'] + +class CheckoutStatementUpdateForm(forms.ModelForm): + class Meta: + model = CheckoutStatement + exclude = ['by', 'at', 'checkout', 'amount_error', 'amount_taken'] # ----- # Article forms diff --git a/kfet/migrations/0032_auto_20160822_2350.py b/kfet/migrations/0032_auto_20160822_2350.py new file mode 100644 index 00000000..142fb29d --- /dev/null +++ b/kfet/migrations/0032_auto_20160822_2350.py @@ -0,0 +1,94 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('kfet', '0031_auto_20160822_0523'), + ] + + operations = [ + migrations.AddField( + model_name='checkoutstatement', + name='taken_001', + field=models.PositiveSmallIntegerField(default=0), + ), + migrations.AddField( + model_name='checkoutstatement', + name='taken_002', + field=models.PositiveSmallIntegerField(default=0), + ), + migrations.AddField( + model_name='checkoutstatement', + name='taken_005', + field=models.PositiveSmallIntegerField(default=0), + ), + migrations.AddField( + model_name='checkoutstatement', + name='taken_01', + field=models.PositiveSmallIntegerField(default=0), + ), + migrations.AddField( + model_name='checkoutstatement', + name='taken_02', + field=models.PositiveSmallIntegerField(default=0), + ), + migrations.AddField( + model_name='checkoutstatement', + name='taken_05', + field=models.PositiveSmallIntegerField(default=0), + ), + migrations.AddField( + model_name='checkoutstatement', + name='taken_1', + field=models.PositiveSmallIntegerField(default=0), + ), + migrations.AddField( + model_name='checkoutstatement', + name='taken_10', + field=models.PositiveSmallIntegerField(default=0), + ), + migrations.AddField( + model_name='checkoutstatement', + name='taken_100', + field=models.PositiveSmallIntegerField(default=0), + ), + migrations.AddField( + model_name='checkoutstatement', + name='taken_2', + field=models.PositiveSmallIntegerField(default=0), + ), + migrations.AddField( + model_name='checkoutstatement', + name='taken_20', + field=models.PositiveSmallIntegerField(default=0), + ), + migrations.AddField( + model_name='checkoutstatement', + name='taken_200', + field=models.PositiveSmallIntegerField(default=0), + ), + migrations.AddField( + model_name='checkoutstatement', + name='taken_5', + field=models.PositiveSmallIntegerField(default=0), + ), + migrations.AddField( + model_name='checkoutstatement', + name='taken_50', + field=models.PositiveSmallIntegerField(default=0), + ), + migrations.AddField( + model_name='checkoutstatement', + name='taken_500', + field=models.PositiveSmallIntegerField(default=0), + ), + migrations.AddField( + model_name='checkoutstatement', + name='taken_cheque', + field=models.PositiveSmallIntegerField(default=0), + ), + ] diff --git a/kfet/models.py b/kfet/models.py index 1cdcb409..39953196 100644 --- a/kfet/models.py +++ b/kfet/models.py @@ -7,6 +7,7 @@ from gestioncof.models import CofProfile from django.utils.six.moves import reduce from django.utils import timezone from django.db import transaction +from django.db.models import F from django.core.cache import cache from datetime import date, timedelta import re @@ -259,6 +260,23 @@ class CheckoutStatement(models.Model): amount_error = models.DecimalField(max_digits = 6, decimal_places = 2) at = models.DateTimeField(auto_now_add = True) + 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.PositiveSmallIntegerField(default=0) + def __str__(self): return '%s %s' % (self.checkout, self.at) @@ -273,6 +291,18 @@ class CheckoutStatement(models.Model): Checkout.objects.filter(pk=checkout_id).update(balance=self.balance_new) super(CheckoutStatement, self).save(*args, **kwargs) else: + self.amount_error = ( + self.balance_new + self.amount_taken - self.balance_old) + # Si on modifie le dernier relevé d'une caisse et que la nouvelle + # balance est modifiée alors on modifie la balance actuelle de la caisse + last_statement = (CheckoutStatement.objects + .filter(checkout=self.checkout) + .order_by('at') + .last()) + if (last_statement.pk == self.pk + and last_statement.balance_new != self.balance_new): + Checkout.objects.filter(pk=self.checkout_id).update( + balance=F('balance') - last_statement.balance_new + self.balance_new) super(CheckoutStatement, self).save(*args, **kwargs) class ArticleCategory(models.Model): diff --git a/kfet/templates/kfet/checkoutstatement_create.html b/kfet/templates/kfet/checkoutstatement_create.html index 8e59bcb2..d9400f9b 100644 --- a/kfet/templates/kfet/checkoutstatement_create.html +++ b/kfet/templates/kfet/checkoutstatement_create.html @@ -18,7 +18,7 @@