def get_context_data(self, **kwargs): ctx = super().get_context_data(**kwargs) barcode_iban = settings.HOLVI_BARCODE_IBAN body_template = get_template('velkoja/notification_email_body.jinja') subject_template = get_template( 'velkoja/notification_email_subject.jinja') overdue = list_invoices(status='overdue') for invoice in overdue: # Quick check to make sure the invoice has not been credited if float(invoice._jsondata.get('credited_sum')) > 0: continue barcode = None if barcode_iban: barcode = bank_barcode(barcode_iban, invoice.rf_reference, Decimal(invoice.due_sum)) mail = EmailMessage() mail.subject = subject_template.render( Context({ "invoice": invoice, "barcode": barcode })).strip() mail.body = body_template.render( Context({ "invoice": invoice, "barcode": barcode })) mail.to = [invoice.receiver.email] ctx['email'] = mail break return ctx
def get_context_data(self, **kwargs): ctx = super().get_context_data(**kwargs) barcode_iban = settings.NORDEA_BARCODE_IBAN body_template = get_template( 'velkoja/nordea_notification_email_body.jinja') subject_template = get_template( 'velkoja/nordea_notification_email_subject.jinja') transaction = Transaction.objects.exclude( **HOLVI_EXCLUDE_KWARGS).filter(amount__lt=0).order_by('-stamp')[0] barcode = None if barcode_iban: barcode = bank_barcode(barcode_iban, transaction.reference, -transaction.amount) mail = EmailMessage() mail.to = [transaction.owner.email] render_context = Context({ "transaction": transaction, "due": -transaction.amount, "barcode": barcode, "iban": barcode_iban, }) mail.subject = subject_template.render(render_context).strip() mail.body = body_template.render(render_context) ctx['email'] = mail return ctx
def get_context_data(self, **kwargs): # TODO: refactor together with HolviOverdueInvoicesHandler so there's one method to format the email. ctx = super().get_context_data(**kwargs) barcode_iban = settings.HOLVI_BARCODE_IBAN body_template = get_template( 'velkoja/holvi_notification_email_body.jinja') subject_template = get_template( 'velkoja/holvi_notification_email_subject.jinja') overdue = list_invoices(status='overdue') for invoice in overdue: # Quick check to make sure the invoice has not been credited if float(invoice._jsondata.get('credited_sum')) > 0: continue template_iban = invoice.iban barcode = None if barcode_iban: template_iban = barcode_iban barcode = bank_barcode(barcode_iban, invoice.rf_reference, Decimal(invoice.due_sum)) mail = EmailMessage() jinja_ctx = Context({ "invoice": invoice, "barcode": barcode, "iban": template_iban, }) mail.subject = subject_template.render(jinja_ctx).strip() mail.body = body_template.render(jinja_ctx) mail.to = [invoice.receiver.email] ctx['email'] = mail break return ctx
def process_overdue(self, send=False): barcode_iban = settings.NORDEA_BARCODE_IBAN body_template = get_template( 'velkoja/nordea_notification_email_body.jinja') subject_template = get_template( 'velkoja/nordea_notification_email_subject.jinja') overdue = self.list_overdue() ret = [] for transaction in overdue: # If we have already sent notification recently, do not sent one just yet if NotificationSent.objects.filter( transaction_unique_id=transaction.unique_id).count(): notified = NotificationSent.objects.get( transaction_unique_id=transaction.unique_id) if (timezone.now() - notified.stamp ).days < settings.HOLVI_NOTIFICATION_INTERVAL_DAYS: continue # Also check that we have new transactions since the notification if UploadedTransaction.objects.count(): last_transaction = UploadedTransaction.objects.order_by( '-last_transaction')[0].last_transaction if last_transaction < notified.stamp.date(): continue barcode = None if barcode_iban: barcode = bank_barcode(barcode_iban, transaction.reference, -transaction.amount) mail = EmailMessage() mail.from_email = settings.VELKOJA_FROM_EMAIL mail.to = [transaction.owner.email] if settings.VELKOJA_CC_EMAIL: mail.cc = [settings.VELKOJA_CC_EMAIL] render_context = Context({ "transaction": transaction, "due": -transaction.amount, "barcode": barcode, "iban": barcode_iban, }) mail.subject = subject_template.render(render_context).strip() mail.body = body_template.render(render_context) if send: mail.send() try: notified = NotificationSent.objects.get( transaction_unique_id=transaction.unique_id) notified.notification_no += 1 except NotificationSent.DoesNotExist: notified = NotificationSent() notified.transaction_unique_id = transaction.unique_id notified.stamp = timezone.now() notified.email = transaction.owner.email if send: notified.save() ret.append((notified, transaction)) return ret
def process_overdue(self, send=False): barcode_iban = settings.HOLVI_BARCODE_IBAN body_template = get_template('velkoja/notification_email_body.jinja') subject_template = get_template( 'velkoja/notification_email_subject.jinja') overdue = list_invoices(status='overdue') ret = [] for invoice in overdue: # Quick check to make sure the invoice has not been credited if float(invoice._jsondata.get('credited_sum')) > 0: continue # If we have already sent notification recently, do not sent one just yet if NotificationSent.objects.filter( transaction_unique_id=invoice.code).count(): notified = NotificationSent.objects.get( transaction_unique_id=invoice.code) if (timezone.now() - notified.stamp ).days < settings.HOLVI_NOTIFICATION_INTERVAL_DAYS: continue if send: invoice.send() barcode = None if barcode_iban: barcode = bank_barcode(barcode_iban, invoice.rf_reference, Decimal(invoice.due_sum)) mail = EmailMessage() mail.subject = subject_template.render( Context({ "invoice": invoice, "barcode": barcode })).strip() mail.body = body_template.render( Context({ "invoice": invoice, "barcode": barcode })) mail.to = [invoice.receiver.email] if send: try: mail.send() except Exception as e: logger.exception("Sending email failed") try: notified = NotificationSent.objects.get( transaction_unique_id=invoice.code) notified.notification_no += 1 except NotificationSent.DoesNotExist: notified = NotificationSent() notified.transaction_unique_id = invoice.code notified.stamp = timezone.now() notified.email = invoice.receiver.email if send: notified.save() ret.append((notified, invoice)) return ret