diff --git a/finance/models.py b/finance/models.py index f2d50b9..d50d1dc 100755 --- a/finance/models.py +++ b/finance/models.py @@ -173,6 +173,7 @@ class InvoiceRebilling(Invoice): is_open=self.is_open, price=self.price, rebilling_on=False, + key=self.key, expected_date=(timezone.now() + relativedelta(months=idx+1)), ) diff --git a/finance/tasks.py b/finance/tasks.py index a034701..5d87f30 100644 --- a/finance/tasks.py +++ b/finance/tasks.py @@ -2,11 +2,13 @@ import logging import os import requests +from dateutil.relativedelta import relativedelta from yandex_money.models import Payment from finance.models import InvoiceRebilling from lms import celery_app from django.conf import settings +from django.utils import timezone logger_yandex = logging.getLogger('yandex_money') @@ -15,19 +17,22 @@ logger_yandex = logging.getLogger('yandex_money') def periodic_billing(): logger_yandex.info("start periodic billing task") - # for invoice in InvoiceRebilling.objects.filter(method='Y').exclude(status='F'): - # - # user = invoice.bill.user - # yandex_pay = Payment.objects.create( - # order_amount=invoice.price, - # customer_number=user.id, - # user=user, - # cps_email=user.email - # ) - # invoice.yandex_pay = yandex_pay - # invoice.save() - # - # repeat_card_payment(invoice) + invoices = InvoiceRebilling.objects.filter(method='Y').exclude(status='F') + + for invoice in invoices.filter( + expected_date__gt=timezone.now(), expected_date__lt=timezone.now() + relativedelta(days=1)): + + user = invoice.bill.user + yandex_pay = Payment.objects.create( + order_amount=invoice.price, + customer_number=user.id, + user=user, + cps_email=user.email + ) + invoice.yandex_pay = yandex_pay + invoice.save() + + repeat_card_payment(invoice) def repeat_card_payment(invoice): @@ -44,4 +49,6 @@ def repeat_card_payment(invoice): ), verify=os.path.join(settings.SSL_ROOT, 'yamoney_chain.cer')) - logger_yandex.info(resp.text) + logger_yandex.info('periodic billing finish', exc_info=True, extra={ + 'response': resp.text + })