Add basic login.
[wolnelektury.git] / src / club / management / commands / send_receipts.py
index bbe1209..402cd08 100644 (file)
@@ -1,5 +1,5 @@
-# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
-# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+# This file is part of Wolne Lektury, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
 #
 from datetime import timedelta
 import traceback
 #
 from datetime import timedelta
 import traceback
@@ -7,6 +7,8 @@ from django.core.management.base import BaseCommand, CommandError
 from django.utils.timezone import now
 from club.models import PayUOrder
 from funding.models import Funding
 from django.utils.timezone import now
 from club.models import PayUOrder
 from funding.models import Funding
+from paypal.models import BillingAgreement
+from pz.models import Payment
 
 
 class Command(BaseCommand):
 
 
 class Command(BaseCommand):
@@ -17,6 +19,9 @@ class Command(BaseCommand):
         parser.add_argument(
             '--emails',
             help='Send only to these emails.')
         parser.add_argument(
             '--emails',
             help='Send only to these emails.')
+        parser.add_argument(
+            '--resend', action='store_true',
+            help='This is a re-send.')
 
     def handle(self, *args, **options):
         year = options['year']
 
     def handle(self, *args, **options):
         year = options['year']
@@ -27,17 +32,36 @@ class Command(BaseCommand):
                 'schedule__email', flat=True
             ).distinct()
         )
                 'schedule__email', flat=True
             ).distinct()
         )
+        emails.update(
+            BillingAgreement.objects.all().order_by(
+                'schedule__email').values_list(
+                'schedule__email', flat=True
+            ).distinct()
+        )
         emails.update(
             Funding.objects.exclude(email='').filter(
         emails.update(
             Funding.objects.exclude(email='').filter(
-                payed_at__year=year
+                completed_at__year=year
             ).order_by('email').values_list(
                 'email', flat=True
             ).distinct()
         )
             ).order_by('email').values_list(
                 'email', flat=True
             ).distinct()
         )
+        emails.update(
+            Payment.objects.exclude(debit__email='').filter(
+                realised=True,
+                is_dd=True,
+                booking_date__year=year,
+            ).order_by('debit__email').values_list(
+                'debit__email', flat=True
+            ).distinct()
+        )
 
         if options['emails']:
             emails = options['emails'].split(',')
 
         for email in emails:
             print(email)
 
         if options['emails']:
             emails = options['emails'].split(',')
 
         for email in emails:
             print(email)
-            PayUOrder.send_receipt(email, year)
+            try:
+                PayUOrder.send_receipt(email, year, resend=options['resend'])
+            except:
+                print('ERROR')
+                raise