Skip to content
Snippets Groups Projects

Add models for manual invoicing

Merged Nik | Klampfradler requested to merge 2-add-manual-invoicing into master
2 files
+ 14
12
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -7,7 +7,7 @@ from django.shortcuts import reverse
@@ -7,7 +7,7 @@ from django.shortcuts import reverse
from django.utils.translation import gettext_lazy as _
from django.utils.translation import gettext_lazy as _
from djmoney.models.fields import CurrencyField, MoneyField
from djmoney.models.fields import CurrencyField, MoneyField
from payments import PurchasedItem
from payments import PaymentStatus, PurchasedItem
from payments.models import BasePayment
from payments.models import BasePayment
from aleksis.core.mixins import ExtensibleModel, PureDjangoModel
from aleksis.core.mixins import ExtensibleModel, PureDjangoModel
@@ -42,6 +42,15 @@ class Invoice(BasePayment, PureDjangoModel):
@@ -42,6 +42,15 @@ class Invoice(BasePayment, PureDjangoModel):
"pledge": (_("Payment pledge / manual payment"), "mdi:hand-coin"),
"pledge": (_("Payment pledge / manual payment"), "mdi:hand-coin"),
"sdd": (_("SEPA Direct Debit"), "mdi:bank-transfer"),
"sdd": (_("SEPA Direct Debit"), "mdi:bank-transfer"),
}
}
 
STATUS_ICONS = {
 
PaymentStatus.WAITING: "mdi:cash-lock-open",
 
PaymentStatus.INPUT: "mdi:cash-lock-open",
 
PaymentStatus.PREAUTH: "mdi:cash-lock",
 
PaymentStatus.CONFIRMED: "mdi:cash-check",
 
PaymentStatus.REFUNDED: "mdi:cash-refund",
 
PaymentStatus.REJECTED: "mdi:cash-remove",
 
PaymentStatus.ERROR: "mdi:cash-remove",
 
}
group = models.ForeignKey(
group = models.ForeignKey(
InvoiceGroup, verbose_name=_("Invoice group"), related_name="invoices", on_delete=models.SET_NULL, null=True
InvoiceGroup, verbose_name=_("Invoice group"), related_name="invoices", on_delete=models.SET_NULL, null=True
@@ -70,6 +79,9 @@ class Invoice(BasePayment, PureDjangoModel):
@@ -70,6 +79,9 @@ class Invoice(BasePayment, PureDjangoModel):
def get_variant_icon(self):
def get_variant_icon(self):
return self.__class__.VARIANT_DISPLAY[self.variant][1]
return self.__class__.VARIANT_DISPLAY[self.variant][1]
 
def get_status_icon(self):
 
return self.__class__.STATUS_ICONS[self.status]
 
def get_purchased_items(self):
def get_purchased_items(self):
for item in self.items.all():
for item in self.items.all():
yield item.as_purchased_item()
yield item.as_purchased_item()
Loading