Allow negative amount for customer

This commit is contained in:
Antoine Bartuccio 2017-08-14 13:52:58 +02:00
parent d60e14a303
commit 240b68f98d
2 changed files with 6 additions and 5 deletions

View File

@ -11,6 +11,7 @@ from counter.models import Customer, Product, Selling, Counter
def balance_ecocups(apps, schema_editor): def balance_ecocups(apps, schema_editor):
for customer in Customer.objects.all(): for customer in Customer.objects.all():
customer.recorded_products = 0
for selling in customer.buyings.filter(product__id__in=[settings.SITH_RECORD_PRODUCT, settings.SITH_UNRECORD_PRODUCT]).all(): for selling in customer.buyings.filter(product__id__in=[settings.SITH_RECORD_PRODUCT, settings.SITH_UNRECORD_PRODUCT]).all():
if selling.product.id == settings.SITH_RECORD_PRODUCT: if selling.product.id == settings.SITH_RECORD_PRODUCT:
customer.recorded_products -= selling.quantity customer.recorded_products -= selling.quantity
@ -21,7 +22,7 @@ def balance_ecocups(apps, schema_editor):
cons = Product.objects.get(id=settings.SITH_RECORD_PRODUCT) cons = Product.objects.get(id=settings.SITH_RECORD_PRODUCT)
Selling(label=_("Record regularization"), product=cons, unit_price=cons.selling_price, Selling(label=_("Record regularization"), product=cons, unit_price=cons.selling_price,
club=cons.club, counter=Counter.objects.filter(name='Foyer').first(), club=cons.club, counter=Counter.objects.filter(name='Foyer').first(),
quantity=qt, seller=User.objects.get(id=0), customer=customer).save() quantity=qt, seller=User.objects.get(id=0), customer=customer).save(allow_negative=True)
customer.recorded_products -= qt customer.recorded_products -= qt
customer.save() customer.save()

View File

@ -80,8 +80,8 @@ class Customer(models.Model):
letter = random.choice(string.ascii_lowercase) letter = random.choice(string.ascii_lowercase)
return number + letter return number + letter
def save(self, *args, **kwargs): def save(self, allow_negative=False, is_purchase=False, *args, **kwargs):
if self.amount < 0: if self.amount < 0 and (is_purchase and not allow_negative):
raise ValidationError(_("Not enough money")) raise ValidationError(_("Not enough money"))
super(Customer, self).save(*args, **kwargs) super(Customer, self).save(*args, **kwargs)
@ -392,13 +392,13 @@ class Selling(models.Model):
html_message=message_html html_message=message_html
) )
def save(self, *args, **kwargs): def save(self, allow_negative=False, *args, **kwargs):
if not self.date: if not self.date:
self.date = timezone.now() self.date = timezone.now()
self.full_clean() self.full_clean()
if not self.is_validated: if not self.is_validated:
self.customer.amount -= self.quantity * self.unit_price self.customer.amount -= self.quantity * self.unit_price
self.customer.save() self.customer.save(allow_negative=allow_negative, is_purchase=True)
self.is_validated = True self.is_validated = True
u = User.objects.filter(id=self.customer.user.id).first() u = User.objects.filter(id=self.customer.user.id).first()
if u.was_subscribed: if u.was_subscribed: