+ @classmethod
+ def send_receipt(cls, email, year):
+ Funding = apps.get_model('funding', 'Funding')
+ payments = []
+
+ qs = cls.objects.filter(status='COMPLETED', schedule__email=email, completed_at__year=year).order_by('completed_at')
+ for order in qs:
+ payments.append({
+ 'timestamp': order.completed_at,
+ 'amount': order.get_amount(),
+ })
+
+ fundings = Funding.objects.filter(
+ email=email,
+ payed_at__year=year
+ ).order_by('payed_at')
+ for funding in fundings:
+ payments.append({
+ 'timestamp': funding.payed_at,
+ 'amount': funding.amount,
+ })
+
+ if not payments: return
+
+ payments.sort(key=lambda x: x['timestamp'])
+
+ ctx = {
+ "email": email,
+ "year": year,
+ "next_year": year + 1,
+ "total": sum(x['amount'] for x in payments),
+ "payments": payments,
+ }
+ temp = tempfile.NamedTemporaryFile(prefix='receipt-', suffix='.pdf', delete=False)
+ temp.close()
+ render_to_pdf(temp.name, 'club/receipt.texml', ctx, {
+ "fnp.eps": os.path.join(settings.STATIC_ROOT, "img/fnp.eps"),
+ })
+
+ message = EmailMessage(
+ f'Odlicz od podatku swoje darowizny przekazane dla Wolnych Lektur',
+ template.loader.render_to_string('club/receipt_email.txt', ctx),
+ settings.CONTACT_EMAIL, [email]
+ )
+ with open(temp.name, 'rb') as f:
+ message.attach('wolnelektury-darowizny.pdf', f.read(), 'application/pdf')
+ message.send()
+ os.unlink(f.name)
+