Add "add days" price calc

remotes/origin/hasaccess
Ivlev Denis 8 years ago
parent 41ac58d8e4
commit 54d6016318
  1. 8
      apps/payment/models.py
  2. 14
      project/utils.py

@ -9,6 +9,8 @@ from django.contrib.postgres.fields import ArrayField, JSONField
from django.core.validators import RegexValidator
from django.utils.timezone import now
from project.utils import weekday_in_date_range
from apps.course.models import Course
from apps.config.models import Config
from apps.school.models import SchoolSchedule
@ -164,7 +166,11 @@ class SchoolPayment(Payment):
).aggregate(
models.Sum('month_price'),
)
month_price_sum = aggregate.get('month_price__sum', 0)
if self.add_days:
weekday_count = weekday_in_date_range(self.date_start, self.date_end, self.weekdays[0])
month_price_sum = aggregate.get('month_price__sum', 0) * weekday_count / 30
else:
month_price_sum = aggregate.get('month_price__sum', 0)
if month_price_sum > config.SERVICE_DISCOUNT_MIN_AMOUNT:
discount = config.SERVICE_DISCOUNT
else:

@ -0,0 +1,14 @@
from datetime import timedelta
from collections import Counter
def date_range(start, end):
delta = end - start
for d in range(delta.days + 1):
yield start + timedelta(days=d)
return
def weekday_in_date_range(start, end, weekday):
counter = Counter([d.isoweekday() for d in date_range(start, end)])
return counter.get(weekday, None)
Loading…
Cancel
Save