Ver código fonte

[FEAT] full multiple payment create

Adrien Carteron 3 anos atrás
pai
commit
d4f3d58713
3 arquivos alterados com 23 adições e 7 exclusões
  1. 21 1
      expenses/models.py
  2. 1 1
      expenses/templates/expense_list.html
  3. 1 5
      expenses/views.py

+ 21 - 1
expenses/models.py

@@ -1,7 +1,7 @@
 from django.db import models
 from django.contrib.contenttypes.models import ContentType
 from django.contrib.contenttypes.fields import GenericForeignKey
-
+from dateutil.relativedelta import relativedelta
 
 class AuthoringDatesModel(models.Model):
     created_at = models.DateTimeField(auto_now_add=True, null=True)
@@ -108,6 +108,26 @@ class MultiplePaymentExepense(MetaExpense):
     )
     number_of_payment = models.PositiveIntegerField()
 
+    def set_payments(self, payment):
+        payment.date = self.first_payment_date
+        payment.name = self.name + " 1st payment"
+        print(payment.name)
+
+        print(payment.amount)
+
+        payment.save()
+        print(payment.name)
+
+        print(payment.amount)
+        self.payments.add(payment)
+        rest_to_pay = (self.amount - payment.amount) / (self.number_of_payment - 1)
+        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)
+            payment.save()
+            self.payments.add(payment)
+        self.save()
+
     def __str__(self):
         return self.name
 

+ 1 - 1
expenses/templates/expense_list.html

@@ -11,6 +11,6 @@
     <li><a href="{% url 'expenses:expense_detail' pk=expense.pk %}"">{{ expense.content_object.name }}</a></li>
     {% endfor %}
 </ul>
-<a class="btn btn-info" href="{% url 'expenses:lone_expense_create' %}">Create category</a>
+<a class="btn btn-info" href="{% url 'expenses:expense_create' %}">Create category</a>
 
 {% endblock content %}

+ 1 - 5
expenses/views.py

@@ -92,11 +92,7 @@ def multiple_expense_create(request):
     if multiple_expense_form.is_valid() and lone_expense_form.is_valid():
         multiple_expense = multiple_expense_form.save()
         lone_expense = lone_expense_form.save(commit=False)
-        lone_expense.date = multiple_expense.first_payment_date
-        lone_expense.name = multiple_expense.name + " 1st payment"
-        lone_expense = lone_expense.save()
-        print(lone_expense)
-        multiple_expense.payments.add(lone_expense)
+        multiple_expense.set_payments(lone_expense)
         multiple_expense.save()
         expense = Expense(
             content_object=multiple_expense,