X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/a5d95bc65cbd0b8703471a2dddef0a48234bd265..4fb23ed3c3396d23a37a718fc857ecc8b36b0c7f:/src/club/management/commands/send_receipts.py diff --git a/src/club/management/commands/send_receipts.py b/src/club/management/commands/send_receipts.py index e461b6854..402cd08dd 100644 --- a/src/club/management/commands/send_receipts.py +++ b/src/club/management/commands/send_receipts.py @@ -1,16 +1,67 @@ -# 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 django.core.management.base import BaseCommand, CommandError 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): + def add_arguments(self, parser): + parser.add_argument( + 'year', type=int, metavar='YEAR', + help='Send receipts for the year.') + 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 = 2019 - for email in PayUOrder.objects.filter(completed_at__year=2019).order_by('schedule__email').values_list('schedule__email', flat=True).distinct(): + year = options['year'] + emails = set( + PayUOrder.objects.filter( + completed_at__year=year + ).order_by('schedule__email').values_list( + '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( + completed_at__year=year + ).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) - PayUOrder.send_receipt(email, year) + try: + PayUOrder.send_receipt(email, year, resend=options['resend']) + except: + print('ERROR') + raise