From 5af69f719de71882db33104ef69076c3e3b3fac6 Mon Sep 17 00:00:00 2001 From: Ehouarn Date: Sun, 28 Sep 2025 22:13:52 +0200 Subject: [PATCH] First step to re-write logic of SogeCredit validity --- .../migrations/0011_sogecredit_valid.py | 18 ++++++++++++++++++ apps/treasury/models.py | 18 ++++++++++++------ 2 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 apps/treasury/migrations/0011_sogecredit_valid.py diff --git a/apps/treasury/migrations/0011_sogecredit_valid.py b/apps/treasury/migrations/0011_sogecredit_valid.py new file mode 100644 index 00000000..44ef6c90 --- /dev/null +++ b/apps/treasury/migrations/0011_sogecredit_valid.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2.6 on 2025-09-28 20:12 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('treasury', '0010_alter_invoice_bde'), + ] + + operations = [ + migrations.AddField( + model_name='sogecredit', + name='valid', + field=models.BooleanField(blank=True, default=False, verbose_name='Valid'), + ), + ] diff --git a/apps/treasury/models.py b/apps/treasury/models.py index 48709801..63e1d7cd 100644 --- a/apps/treasury/models.py +++ b/apps/treasury/models.py @@ -308,6 +308,12 @@ class SogeCredit(models.Model): null=True, ) + valid = models.BooleanField( + default=False, + verbose_name=_("Valid"), + blank=True, + ) + class Meta: verbose_name = _("Credit from the Société générale") verbose_name_plural = _("Credits from the Société générale") @@ -338,7 +344,7 @@ class SogeCredit(models.Model): credit_transaction.save() credit_transaction.refresh_from_db() self.credit_transaction = credit_transaction - elif not self.valid: + elif not self.valid_legacy: self.credit_transaction.amount = self.amount self.credit_transaction._force_save = True self.credit_transaction.save() @@ -346,12 +352,12 @@ class SogeCredit(models.Model): return super().save(*args, **kwargs) @property - def valid(self): + def valid_legacy(self): return self.credit_transaction and self.credit_transaction.valid @property def amount(self): - if self.valid: + if self.valid_legacy: return self.credit_transaction.total amount = 0 transactions_wei = self.transactions.filter(membership__club__weiclub__isnull=False) @@ -365,7 +371,7 @@ class SogeCredit(models.Model): The Sogé credit may be created after the user already paid its memberships. We query transactions and update the credit, if it is unvalid. """ - if self.valid or not self.pk: + if self.valid_legacy or not self.pk: return # Soge do not pay BDE and kfet memberships since 2022 @@ -405,7 +411,7 @@ class SogeCredit(models.Model): Invalidating a Société générale delete the transaction of the bank if it was already created. Treasurers must know what they do, With Great Power Comes Great Responsibility... """ - if self.valid: + if self.valid_legacy: self.credit_transaction.valid = False self.credit_transaction.save() for tr in self.transactions.all(): @@ -414,7 +420,7 @@ class SogeCredit(models.Model): tr.save() def validate(self, force=False): - if self.valid and not force: + if self.valid_legacy and not force: # The credit is already done return