def _fmt_credit(credit_amount=None): if credit_amount is None: return { 'amount': "--", } return { 'amount': quantize_accounting_decimal(credit_amount), 'is_visible': credit_amount != Decimal('0.0'), }
def paginated_list(self): for invoice in self.paginated_invoices.page(self.page).object_list: try: last_billing_record = CustomerBillingRecord.objects.filter( invoice=invoice).latest('date_created') if invoice.is_paid: payment_status = ( _("Paid on %s.") % invoice.date_paid.strftime(USER_DATE_FORMAT)) payment_class = "label label-default" else: payment_status = _("Not Paid") payment_class = "label label-danger" date_due = ((invoice.date_due.strftime(USER_DATE_FORMAT) if not invoice.is_paid else _("Already Paid")) if invoice.date_due else _("None")) yield { 'itemData': { 'id': invoice.id, 'invoice_number': invoice.invoice_number, 'start': invoice.date_start.strftime(USER_DATE_FORMAT), 'end': invoice.date_end.strftime(USER_DATE_FORMAT), 'plan': None, 'payment_status': payment_status, 'payment_class': payment_class, 'date_due': date_due, 'pdfUrl': reverse(BillingStatementPdfView.urlname, args=[ self.domain, last_billing_record.pdf_data_id ]), 'canMakePayment': (not invoice.is_paid and self.can_pay_invoices), 'balance': "%s" % quantize_accounting_decimal(invoice.balance), }, 'template': 'statement-row-template', } except CustomerBillingRecord.DoesNotExist: log_accounting_error( "An invoice was generated for %(invoice_id)d " "(domain: %(domain)s), but no billing record!" % { 'invoice_id': invoice.id, 'domain': self.domain, }, show_stack_trace=True)
def paginated_list(self): for invoice in self.paginated_invoices.page(self.page).object_list: try: last_billing_record = CustomerBillingRecord.objects.filter( invoice=invoice ).latest('date_created') if invoice.is_paid: payment_status = (_("Paid on %s.") % invoice.date_paid.strftime(USER_DATE_FORMAT)) payment_class = "label label-default" else: payment_status = _("Not Paid") payment_class = "label label-danger" date_due = ( (invoice.date_due.strftime(USER_DATE_FORMAT) if not invoice.is_paid else _("Already Paid")) if invoice.date_due else _("None") ) yield { 'itemData': { 'id': invoice.id, 'invoice_number': invoice.invoice_number, 'start': invoice.date_start.strftime(USER_DATE_FORMAT), 'end': invoice.date_end.strftime(USER_DATE_FORMAT), 'plan': None, 'payment_status': payment_status, 'payment_class': payment_class, 'date_due': date_due, 'pdfUrl': reverse( BillingStatementPdfView.urlname, args=[self.domain, last_billing_record.pdf_data_id] ), 'canMakePayment': (not invoice.is_paid and self.can_pay_invoices), 'balance': "%s" % quantize_accounting_decimal(invoice.balance), }, 'template': 'statement-row-template', } except CustomerBillingRecord.DoesNotExist: log_accounting_error( "An invoice was generated for %(invoice_id)d " "(domain: %(domain)s), but no billing record!" % { 'invoice_id': invoice.id, 'domain': self.domain, } )
def rows(self): rows = [] for record in self.payment_records: rows.append([ format_datatables_data( text=record.date_created.strftime(USER_DATE_FORMAT), sort_key=record.date_created.isoformat(), ), self.get_account(record).name, self.get_account(record).created_by_domain, record.payment_method.web_user, format_datatables_data( text=mark_safe( '<a href="https://dashboard.stripe.com/payments/%s"' ' target="_blank">%s' '</a>' % ( record.transaction_id, record.transaction_id, )), sort_key=record.transaction_id, ), quantize_accounting_decimal(record.amount), ]) return rows