diff --git a/counter/migrations/0013_customer_recorded_products.py b/counter/migrations/0013_customer_recorded_products.py index 6365e8b4..73dad556 100644 --- a/counter/migrations/0013_customer_recorded_products.py +++ b/counter/migrations/0013_customer_recorded_products.py @@ -11,6 +11,7 @@ from counter.models import Customer, Product, Selling, Counter def balance_ecocups(apps, schema_editor): 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(): if selling.product.id == settings.SITH_RECORD_PRODUCT: customer.recorded_products -= selling.quantity @@ -21,7 +22,7 @@ def balance_ecocups(apps, schema_editor): cons = Product.objects.get(id=settings.SITH_RECORD_PRODUCT) Selling(label=_("Record regularization"), product=cons, unit_price=cons.selling_price, 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.save() diff --git a/counter/models.py b/counter/models.py index b9850e19..674a7b13 100644 --- a/counter/models.py +++ b/counter/models.py @@ -80,8 +80,8 @@ class Customer(models.Model): letter = random.choice(string.ascii_lowercase) return number + letter - def save(self, *args, **kwargs): - if self.amount < 0: + def save(self, allow_negative=False, is_purchase=False, *args, **kwargs): + if self.amount < 0 and (is_purchase and not allow_negative): raise ValidationError(_("Not enough money")) super(Customer, self).save(*args, **kwargs) @@ -392,13 +392,13 @@ class Selling(models.Model): html_message=message_html ) - def save(self, *args, **kwargs): + def save(self, allow_negative=False, *args, **kwargs): if not self.date: self.date = timezone.now() self.full_clean() if not self.is_validated: 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 u = User.objects.filter(id=self.customer.user.id).first() if u.was_subscribed: