prod
Dmitriy Shesterkin 9 years ago
parent d604045946
commit c2c0acc354
  1. 75
      src/customer/models.py
  2. 2
      src/customer/utils.py
  3. 16
      src/customer/views/license.py
  4. 2
      templates/emails/issued_bonus_license.txt
  5. 2
      templates/emails/license_successful_purchased.txt

@ -6,6 +6,7 @@ import logging
from datetime import datetime, timedelta
from PIL import Image
from django.db.models.signals import post_save
from django.dispatch import receiver
from pytils import numeral
from dateutil.relativedelta import relativedelta
@ -736,6 +737,14 @@ class Payment(models.Model):
(FAIL, 'Отклонен'),
)
BANK = 0
CARD = 1
CHOICES_TYPE = (
(BANK, 'Безналичный расчёт'),
(CARD, 'Банковская карта'),
)
order_amount = models.DecimalField('Сумма заказа', max_digits=15, decimal_places=2)
order_number = models.IntegerField('Номер заказа')
user = models.ForeignKey(
@ -749,6 +758,12 @@ class Payment(models.Model):
choices=CHOICES,
default=PROCESSED
)
type = models.PositiveSmallIntegerField(
verbose_name='Тип платежа',
choices=CHOICES_TYPE,
default=BANK
)
date = models.DateField(verbose_name='Дата', null=True, blank=True)
class Meta:
verbose_name = 'Платеж'
@ -757,6 +772,10 @@ class Payment(models.Model):
def __str__(self):
return f'{self.user}-{self.order_number}-{self.get_status_display()}'
def save(self, *args, **kwargs):
payment = super(Payment, self).save(*args, **kwargs)
return payment
def confirmed_purchase(**kwargs):
try:
@ -765,34 +784,11 @@ def confirmed_purchase(**kwargs):
order_amount=kwargs['OutSum']
)
payment.status = Payment.SUCCESS
payment.date = datetime.now().date()
payment.save()
lic = License.objects.get(pk=payment.order_number)
lic.status = consts.STATUS_PAID
lic.paid_date = datetime.now().date()
lic.save()
emails.send_license_successful_purchased.delay(
payment.user.email,
lic.pk,
lic.get_term(),
lic.date_from
)
bonus_license = create_bonus_license(lic)
if bonus_license:
emails.send_bonus_license_issued.delay(
payment.user.email,
lic.pk,
lic.get_term(),
bonus_license.get_term(),
bonus_license.date_from
)
except Payment.DoesNotExist:
log.info(f"payment with id={kwargs['InvId']} not found")
except License.DoesNotExist:
log.info(f"payment with id={kwargs['InvId']} not found")
@receiver(result_received)
@ -804,3 +800,34 @@ def order_completed(sender, **kwargs):
def success_page_visited_completed(sender, **kwargs):
if settings.DEBUG:
confirmed_purchase(**kwargs)
@receiver(post_save, sender=Payment)
def check_license_dependence(sender, **kwargs):
if not kwargs.get('created'):
payment = kwargs.get('instance')
if payment.status == Payment.SUCCESS and payment.date:
try:
lic = License.objects.get(pk=payment.order_number)
lic.status = consts.STATUS_PAID
lic.paid_date = payment.date
lic.save()
emails.send_license_successful_purchased.delay(
payment.user.email,
lic.pk,
lic.get_term(),
lic.date_from.strftime("%d.%m.%Y")
)
bonus_license = create_bonus_license(lic)
if bonus_license:
emails.send_bonus_license_issued.delay(
payment.user.email,
lic.pk,
lic.get_term(),
bonus_license.get_term(),
bonus_license.date_from.strftime("%d.%m.%Y")
)
except License.DoesNotExist:
log.info(f"payment with id={kwargs['InvId']} not found")

@ -163,7 +163,7 @@ def create_bonus_license(lic):
if check_confirm_bonus_to_user(lic.company.get_first_user()) and lic.term >= 12:
bonus_term = 0
if lic.term == 12:
bonus_term = 2,
bonus_term = 2
if lic.term == 24:
bonus_term = 3
bonus_license = lic._meta.model.objects.create(

@ -39,15 +39,27 @@ def order_license(request):
company=request.user.profile,
term=form.cleaned_data['term'].term,
payform=form.cleaned_data['payform'],
pay_sum=form.cleaned_data['term'].price
pay_sum=form.cleaned_data['term'].price,
)
new_license.save()
if form.cleaned_data['payform'] == '1':
payment = Payment.objects.create(
order_amount=form.cleaned_data['term'].price,
order_number=new_license.id,
user=request.user)
user=request.user,
type=1
)
return redirect(reverse('payment_robokassa', kwargs={'payment_id': payment.id}))
if form.cleaned_data['payform'] == '0':
Payment.objects.create(
order_amount=form.cleaned_data['term'].price,
order_number=new_license.id,
user=request.user,
type=0
)
return redirect(reverse('customer-orders'))
return redirect(reverse('customer-orders'))
return render(request, template_name, dictionary)

@ -2,7 +2,7 @@
Спасибо Вам за доверие сайту Документор и за покупку лицензии No {{ lic_number }} на {{ lic_term }}.
Как договаривались, мы создали Вам бесплатную бонусную лицензию на {{ bonus_lic_term }}. Она автоматически начнёт работать {{ activate_date|date:"d.m.Y" }}, когда закончится срок других Ваших лицензий.
Как договаривались, мы создали Вам бесплатную бонусную лицензию на {{ bonus_lic_term }}. Она автоматически начнёт работать {{ activate_date }}, когда закончится срок других Ваших лицензий.
Ещё раз, спасибо Вам! {{ site_url }}

@ -2,7 +2,7 @@
Спасибо Вам за оплату счёта {{ order_number }}
Для Вас была создана лицензия No {{ order_number }} на {{ lic_term }} месяцев, которая будет автоматически активирована {{ activate_date|date:"d.m.Y" }}.
Для Вас была создана лицензия No {{ order_number }} на {{ lic_term }} месяцев, которая будет автоматически активирована {{ activate_date }}.
Акт выполненных работ будет создан в момент активации лицензии. Вы сможете скачать его на этой странице {{ site_url }}{{ url }}
Ещё раз, спасибо Вам! {{ site_url }}

Loading…
Cancel
Save