|
@@ -3,6 +3,7 @@ from django.contrib.contenttypes.models import ContentType
|
|
|
from django.contrib.contenttypes.fields import GenericForeignKey
|
|
from django.contrib.contenttypes.fields import GenericForeignKey
|
|
|
from dateutil.relativedelta import relativedelta
|
|
from dateutil.relativedelta import relativedelta
|
|
|
|
|
|
|
|
|
|
+
|
|
|
class AuthoringDatesModel(models.Model):
|
|
class AuthoringDatesModel(models.Model):
|
|
|
created_at = models.DateTimeField(auto_now_add=True, null=True)
|
|
created_at = models.DateTimeField(auto_now_add=True, null=True)
|
|
|
modified_at = models.DateTimeField(auto_now=True)
|
|
modified_at = models.DateTimeField(auto_now=True)
|
|
@@ -99,34 +100,29 @@ class Expense(models.Model):
|
|
|
""" ordering = ("name", "date", "amount") # Le tri par défaut dans les listes """
|
|
""" ordering = ("name", "date", "amount") # Le tri par défaut dans les listes """
|
|
|
|
|
|
|
|
|
|
|
|
|
-class MultiplePaymentExepense(MetaExpense):
|
|
|
|
|
- name = models.CharField(max_length=150)
|
|
|
|
|
- first_payment_date = models.DateField()
|
|
|
|
|
- amount = models.DecimalField(max_digits=10, decimal_places=2)
|
|
|
|
|
- payments = models.ManyToManyField (
|
|
|
|
|
|
|
+class MultiplePaymentExepense(LoneExpense):
|
|
|
|
|
+ payments = models.ManyToManyField(
|
|
|
RawExpense, related_name="multiple_payment_expense"
|
|
RawExpense, related_name="multiple_payment_expense"
|
|
|
)
|
|
)
|
|
|
number_of_payment = models.PositiveIntegerField()
|
|
number_of_payment = models.PositiveIntegerField()
|
|
|
|
|
|
|
|
def set_payments(self, payment):
|
|
def set_payments(self, payment):
|
|
|
- payment.date = self.first_payment_date
|
|
|
|
|
|
|
+ payment.date = self.date
|
|
|
payment.name = self.name + " 1st payment"
|
|
payment.name = self.name + " 1st payment"
|
|
|
- print(payment.name)
|
|
|
|
|
-
|
|
|
|
|
- print(payment.amount)
|
|
|
|
|
|
|
|
|
|
payment.save()
|
|
payment.save()
|
|
|
- print(payment.name)
|
|
|
|
|
|
|
|
|
|
- print(payment.amount)
|
|
|
|
|
self.payments.add(payment)
|
|
self.payments.add(payment)
|
|
|
rest_to_pay = (self.amount - payment.amount) / (self.number_of_payment - 1)
|
|
rest_to_pay = (self.amount - payment.amount) / (self.number_of_payment - 1)
|
|
|
for i in range(1, self.number_of_payment):
|
|
for i in range(1, self.number_of_payment):
|
|
|
- date = self.first_payment_date + relativedelta(months=i)
|
|
|
|
|
- payment = RawExpense(name=f"{self.name} {i} payment", date=date, amount=rest_to_pay)
|
|
|
|
|
|
|
+ date = self.date + relativedelta(months=i)
|
|
|
|
|
+ payment = RawExpense(
|
|
|
|
|
+ name=f"{self.name} {i} payment", date=date, amount=rest_to_pay
|
|
|
|
|
+ )
|
|
|
payment.save()
|
|
payment.save()
|
|
|
self.payments.add(payment)
|
|
self.payments.add(payment)
|
|
|
self.save()
|
|
self.save()
|
|
|
|
|
+ print(self.payments.count())
|
|
|
|
|
|
|
|
def __str__(self):
|
|
def __str__(self):
|
|
|
return self.name
|
|
return self.name
|
|
@@ -135,4 +131,4 @@ class MultiplePaymentExepense(MetaExpense):
|
|
|
# db_table = 'book' # Permet de personnaliser le nom de la table en BDD
|
|
# db_table = 'book' # Permet de personnaliser le nom de la table en BDD
|
|
|
verbose_name = "MultiplePaymentExpense" # Le nom lisbile du modèle
|
|
verbose_name = "MultiplePaymentExpense" # Le nom lisbile du modèle
|
|
|
verbose_name_plural = "MultiplePaymentExpenses" # Le nom au pluriel du modèle
|
|
verbose_name_plural = "MultiplePaymentExpenses" # Le nom au pluriel du modèle
|
|
|
- ordering = ("name", "first_payment_date", "amount")
|
|
|
|
|
|
|
+ ordering = ("name", "date", "amount")
|