From 6e204263a590eb673a4c887bda41f21311f8663e Mon Sep 17 00:00:00 2001 From: Ivlev Denis Date: Thu, 22 Feb 2018 13:08:56 +0300 Subject: [PATCH] LIL-278. Add day_discount field to SchoolSchedule & fix calc SchoolPayment amount --- apps/payment/models.py | 10 ++++++---- .../0005_schoolschedule_day_discount.py | 18 ++++++++++++++++++ apps/school/models.py | 1 + 3 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 apps/school/migrations/0005_schoolschedule_day_discount.py diff --git a/apps/payment/models.py b/apps/payment/models.py index 3f13b6e0..b28705aa 100644 --- a/apps/payment/models.py +++ b/apps/payment/models.py @@ -95,11 +95,13 @@ class SchoolPayment(Payment): verbose_name_plural = 'Платежи за школу' def save(self, *args, **kwargs): - month_price_sum = SchoolSchedule.objects.filter( + aggregate = SchoolSchedule.objects.filter( weekday__in=self.weekdays, ).aggregate( models.Sum('month_price'), - ).get('month_price__sum', 0) - self.amount = month_price_sum + models.Sum('day_discount'), + ) + month_price_sum = aggregate.get('month_price__sum', 0) + day_discount_sum = aggregate.get('day_discount__sum', 0) if len(self.weekdays) == 7 else 0 + self.amount = month_price_sum - day_discount_sum super().save(*args, **kwargs) - author_balance = getattr(self, 'authorbalance', None) diff --git a/apps/school/migrations/0005_schoolschedule_day_discount.py b/apps/school/migrations/0005_schoolschedule_day_discount.py new file mode 100644 index 00000000..c5989e8a --- /dev/null +++ b/apps/school/migrations/0005_schoolschedule_day_discount.py @@ -0,0 +1,18 @@ +# Generated by Django 2.0.2 on 2018-02-22 10:00 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('school', '0004_auto_20180221_1120'), + ] + + operations = [ + migrations.AddField( + model_name='schoolschedule', + name='day_discount', + field=models.DecimalField(decimal_places=2, default=0, max_digits=8, verbose_name='Скидка, в валюте'), + ), + ] diff --git a/apps/school/models.py b/apps/school/models.py index 1fdf85c7..199ceb5f 100644 --- a/apps/school/models.py +++ b/apps/school/models.py @@ -17,6 +17,7 @@ class SchoolSchedule(models.Model): materials = models.TextField('Материалы') age = models.PositiveSmallIntegerField('Возраст', default=0) month_price = models.DecimalField('Цена', max_digits=8, decimal_places=2, default=0) + day_discount = models.DecimalField('Скидка, в валюте', max_digits=8, decimal_places=2, default=0) class Meta: ordering = ('weekday',)