From aae966bece58f27e0bf21490d8975605635b1eb7 Mon Sep 17 00:00:00 2001 From: gzbender Date: Wed, 24 Apr 2019 03:38:48 +0300 Subject: [PATCH] =?UTF-8?q?=D1=88=D0=BA=D0=BE=D0=BB=D0=B0=20=D0=BE=D0=BF?= =?UTF-8?q?=D0=BB=D0=B0=D1=87=D0=B8=D0=B2=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20?= =?UTF-8?q?=D0=B4=D0=BE=2031=20=D0=BC=D0=B0=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/payment/models.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/apps/payment/models.py b/apps/payment/models.py index b5baefd9..fc3c81cc 100644 --- a/apps/payment/models.py +++ b/apps/payment/models.py @@ -1,11 +1,11 @@ import arrow import short_url -from django.db.models import Func, F from paymentwall import Pingback from polymorphic.models import PolymorphicModel from polymorphic.managers import PolymorphicManager +from django.db.models import Func, F from django.db import models from django.contrib.auth import get_user_model from django.contrib.postgres.fields import ArrayField, JSONField @@ -120,6 +120,10 @@ class Payment(PolymorphicModel): @classmethod def add_months(cls, sourcedate, months=1): + # FIXME после мая 2019 убрать? + # Если хотят купить школу в мае, то оплатить ее можно только до 31 мая, потом школа закроется + if sourcedate.month == 5: + return sourcedate.replace(day=31) result = arrow.get(sourcedate, settings.TIME_ZONE).shift(months=months) if months == 1: if (sourcedate.month == 2 and sourcedate.day >= 28) or (sourcedate.day == 31 and result.day <= 30) \ @@ -179,9 +183,18 @@ class Payment(PolymorphicModel): price += ss.month_price // all_weekdays_count.get(ss.weekday, 0) * weekdays_count.get( ss.weekday, 0) else: - price = school_schedules.aggregate( - models.Sum('month_price'), - ).get('month_price__sum', 0) + # FIXME после мая 2019 убрать? + # Если хотят купить школу в мае, то оплатить ее можно только до 31 мая, потом школа закроется + if date_start.month == 5: + weekdays_count = weekdays_in_date_range(date_start, date_end) + all_weekdays_count = weekdays_in_date_range(date_start.replace(day=1), date_end) + for ss in school_schedules: + price += ss.month_price // all_weekdays_count.get(ss.weekday, 0) * weekdays_count.get( + ss.weekday, 0) + else: + price = school_schedules.aggregate( + models.Sum('month_price'), + ).get('month_price__sum', 0) if not (payment and payment.id) and price >= config.SERVICE_DISCOUNT_MIN_AMOUNT: discount = config.SERVICE_DISCOUNT amount = price - discount