Beispiel #1
0
    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
Beispiel #2
0
    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
Beispiel #3
0
    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
Beispiel #4
0
    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
Beispiel #5
0
    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